7

I am running Angström on my BeagleBoard-xm. I want to use a webcam (I have Microsoft LifeCam Cinema and Logitech C310). I installed v4l-utils, libv4l-dev and kernel-module-uvcvideo with opkg. But the webcams don't appear in the /dev folder. cheese can't find them too.

Here is the output of dmesg:

[ 8925.347137] usb 2-2.4.3: new high speed USB device using ehci-omap and address 8
[ 8925.489044] usb 2-2.4.3: New USB device found, idVendor=045e, idProduct=075d
[ 8925.496490] usb 2-2.4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8925.504333] usb 2-2.4.3: Product: Microsoft�� LifeCam Cinema(TM)
[ 8925.510528] usb 2-2.4.3: Manufacturer: Microsoft
[ 8926.635742] 8:3:1: cannot get freq at ep 0x82

and here is the output of lsusb:

# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 002 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 002 Device 004: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 002 Device 005: ID 04d9:1603 Holtek Semiconductor, Inc. 
Bus 002 Device 006: ID 045e:0040 Microsoft Corp. Wheel Mouse Optical
Bus 002 Device 008: ID 045e:075d Microsoft Corp.

uvcvideo kernel module seems to be in the right folder:

# locate uvcvideo.ko
/lib/modules/2.6.32/kernel/drivers/media/video/uvc/uvcvideo.ko

# uname -a
Linux beagleboard 2.6.32 #3 PREEMPT Tue Jul 26 10:56:56 CEST 2011 armv7l unknown

lsmodoutput is:

# lsmod
Module                  Size  Used by
ipv6                  249063  10

But I don't see uvcvideo module in the lsmod output. Should I do something else to load the module? Or should I install a specific driver?

mustafa
  • 221
  • 3
  • 9
  • Did you try checking lsmod output after an modprobe uvcvideo? – dkaragasidis Dec 02 '11 at 09:16
  • @dkaragasidis I get FATAL: Module uvcvideo not found. – mustafa Dec 02 '11 at 09:50
  • Can your verify that uvcvideo.ko exists on your system and it is compiled against the kernel version you're running (with modinfo)? – dkaragasidis Dec 02 '11 at 10:06
  • @dkaragasidis yes, it's in the folder /lib/modules/2.6.32/kernel/drivers/media/video/ and there is a line vermagic: 2.6.32 preempt mod_unload modversions ARMv7 – mustafa Dec 02 '11 at 10:39
  • Great. Can you try and load the module using insmod followed by the absolute path of uvcvideo.ko? Do you get any error messages? – dkaragasidis Dec 02 '11 at 11:29
  • thanks, it worked! Where should I add this command to be initialized every time at boot? – mustafa Dec 02 '11 at 11:44
  • Generally, when you want a kernel module to be loaded at boot time, you append the kernel module name to /etc/modules or /etc/modules.conf (might vary from distribution to distribution). – dkaragasidis Dec 02 '11 at 12:08

1 Answers1

7

Devices attached to buses such as PCI, PCMCIA and USB have an identifier that uniquely encode the manufacturer and model. Modules that contain drivers for devices attached to these buses contain information about the devices they support, in the form of a list of PCI identifiers, USB identifiers, PCMCIA identifiers, etc. When the kernel detects a device on one of these buses, it tries to load a driver for this particular identifier. More precisely, the kernel tries to load a module called (say) usb:somelongstring where the long string encodes the device's USB identifier. When you compile or install a kernel, the depmod program reads all the module file (.ko) that you have and generates a modules.alias file in /lib/module/$VERSION/ containing lines like

alias usb:somelongstring uvcvideo

It looks like on your system, you have a driver that supports your device but the modules.alias file does not declare the right alias. First, run depmod -a to make sure that this file is up to date.

If, after than, the module is not automatically loaded but does work when it is loaded manually, then what's going on is that you have a slightly more recent model that has an unknown identifier but works with the same driver because it is sufficiently compatible with known models. In that case, report your success to the upstream developer so that the identifier is added to the next version of the driver. In the meantime, add the alias manually. You'll find the long string in /sys/bus/usb/devices/2-2.4.3/modalias. Create a file called /etc/modprobe.d/local-aliases.conf and add the lines

# Microsoft LifeCam Cinema
alias usb:somelongstring uvcvideo

There is a good write-up of modalias in the Arch wiki.