Can't find Point Grey Camera in a new virtual machine
Hello,
I have used POINT GREY FIREFLY MV FMVU-13S2C digital camera to work on Ubuntu 10.04 and ros electric(I am gonna call it VM1) and it worked very well. But when I install another virtual machine (Ubuntu 10.4 and ros electric also)(I am gonna call it VM2), the camera cannot be found.
I remember the steps that I got the camera worked in VM1 are:
- install camera drivers by "sudo apt-get install ros-electric-camera-drivers"
- Create an udev rule for usb adapter to recognize Grey Firefly MV USB camera by "sudo gedit /etc/udev/rules.d/40-pgr.rules" and add the following text into it.
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="2000", MODE="0664", GROUP="pgrimaging"
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="2001", MODE="0664", GROUP="pgrimaging"
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="2002", MODE="0664", GROUP="pgrimaging"
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="2003", MODE="0664", GROUP="pgrimaging"
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="2004", MODE="0664", GROUP="pgrimaging"
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="2005", MODE="0664", GROUP="pgrimaging"
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="3000", MODE="0664", GROUP="pgrimaging"
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="3001", MODE="0664", GROUP="pgrimaging"
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="3002", MODE="0664", GROUP="pgrimaging"
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="3003", MODE="0664", GROUP="pgrimaging"
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="3004", MODE="0664", GROUP="pgrimaging"
ATTRS{idVendor}=="1e10", ATTRS{idProduct}=="3005", MODE="0664", GROUP="pgrimaging"
KERNEL=="raw1394", MODE="0664", GROUP="pgrimaging"
KERNEL=="video1394*", MODE="0664", GROUP="pgrimaging"
SUBSYSTEM=="firewire", GROUP="pgrimaging"
- then I follow
Install the modules
modprobe ohci1394
modprobe video1394
modprobe ieee1394
modprobe raw1394
Create proper 1394 devices
cd /dev
mknod raw1394 c 171 0
chmod 666 /dev/raw1394
mkdir video1394
cd video1394
mknod 0 c 171 16
mknod 1 c 171 17
chmod 666 /dev/video1394/*
Set user paths
su user
Check for the LD_LIBRARY_PATH. It should contain /usr/local/lib. This is necessary to run the applications with the help of the shared libdc1394_cotrol.so.13 object file.
I applied exactly same steps to VM2. however, when I run "rosrun camera1394 camera1394_node", camera cannot be found.
Following are some outputs of VM1 and VM2 for your information.
terminal: lsusb -t
output:
VM1:
1-1:1.0: No such file or directory
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
|__ Port 1: Dev 2, If 0, Class=HID, Driver=usbhid, 12M
|__ Port 1: Dev 2, If 1, Class=HID, Driver=usbhid, 12M
|__ Port 2: Dev 3, If 0, Class=hub, Driver=hub/7p, 12M
|__ Port 1: Dev 4, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
|__ Port 1: Dev 4, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/6p, 480M
|__ Port 1: Dev 6, If 0, Class=vend., Driver=, 480M
|__ Port 2: Dev 3, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
|__ Port 2: Dev 3, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo ...
Are you running both VM's at the same time on the same real machine? It is probably not possible for both to connect to a single USB device. Even back-to-back tests might encounter problems with device allocation between the virtual machines.
I restart the computer and only open one VM, but it still doesn't work. I noticed that raw1394, ohci1394, video1394, ieee1394 have been removed once I restart the computer. Is there a way to permanently install these modules?
They should get loaded automatically when a 1394 device is detected. The
modprobe
command can load them manually. You can put those commands in/etc/rc.local
, but it should not be necessary.But in VM2, the modules are not automatically loaded when I plug in the camera. And in VM1, even I didn't plug in the camera, the modules are still there and they won't be removed after restart the VM.
And I list the devices of VM1 and VM2. I found VM1 has devices raw1394, v4l and video0 which VM2 doesn't have. I guess video0 is my webcam, I don't know why I even cannot recognize webcam.
Ok, I just forgot to connect my webcam to VM2. So it's only raw1394 that VM2 doens't have but VM1 does have.
I suspect that it is the "host adapter" that gets allocated to VM1 and triggers those loads. I don't believe that hardware interface can be shared between multiple VM's.
I reinstalled the ubuntu on real machine (not virtual). But the problem still exists, there is no raw1394 after I plug in the firewire camera.