我在跑步埃在我的BeagleBoard-xm。我想使用网络摄像头(我有 Microsoft LifeCam Cinema 和 Logitech C310)。我安装了v4l-utils
,libv4l-dev
并kernel-module-uvcvideo
使用 opkg 。但网络摄像头不会出现在该/dev
文件夹中。cheese
也找不到他们。
这是输出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
这是输出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 内核模块似乎位于正确的文件夹中:
# 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
lsmod
输出为:
# lsmod
Module Size Used by
ipv6 249063 10
但我在输出中没有看到 uvcvideo 模块lsmod
。我应该做其他事情来加载模块吗?或者我应该安装特定的驱动程序?
答案1
连接到 PCI、PCMCIA 和 USB 等总线的设备具有唯一编码制造商和型号的标识符。包含连接到这些总线的设备驱动程序的模块包含有关它们支持的设备的信息,以 PCI 标识符、USB 标识符、PCMCIA 标识符等列表的形式。当内核检测到这些总线之一上的设备时,它会尝试加载该特定标识符的驱动程序。更准确地说,内核尝试加载一个名为(例如)的模块usb:somelongstring
,其中长字符串对设备的 USB 标识符进行编码。当您编译或安装内核时,程序depmod
会读取您拥有的所有模块文件(.ko
)并生成一个包含以下行的modules.alias
文件/lib/module/$VERSION/
alias usb:somelongstring uvcvideo
看起来在您的系统上,您有一个支持您的设备的驱动程序,但该modules.alias
文件没有声明正确的别名。首先,运行depmod -a
以确保该文件是最新的。
如果之后,该模块不会自动加载,但在手动加载时确实可以工作,那么发生的情况是,您有一个稍微更新的模型,该模型具有未知的标识符,但可以使用相同的驱动程序,因为它与已知型号。在这种情况下,请向上游开发人员报告您的成功,以便将标识符添加到驱动程序的下一个版本中。同时,手动添加别名。您会在 中找到长字符串/sys/bus/usb/devices/2-2.4.3/modalias
。创建一个名为的文件/etc/modprobe.d/local-aliases.conf
并添加以下行
# Microsoft LifeCam Cinema
alias usb:somelongstring uvcvideo