我在运行 Gentoo 的小型 ODROID 上使用多个 USB 设备:
> uname
3.10.80
> lsusb
Bus 001 Device 005: ID 1b71:0056 Fushicai
Bus 001 Device 004: ID 0bda:2832 Realtek Semiconductor Corp. RTL2832U DVB-T
Bus 001 Device 003: ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac WLAN Adapter
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
“Fushicai”是一个小型 USB 网络摄像头,已被证明可以在该硬件和内核上运行。一些专有软件使用“RTL2832U DVB-T”来解码航空无线电通信。
不幸的是,uvcvideo 锁定“RTL2832U DVB-T”并忽略“Fushicai”设备。有没有办法配置 uvcvideo 以相反的方式执行此操作,某种 uvcvideo 黑名单和白名单?
以下是dmesg
在未连接其他 USB 设备的情况下插入相机后的输出:
[ 54.790233] usb 1-1.1: new high-speed USB device number 3 using dwc_otg
[ 55.043458] uvcvideo: Found UVC 1.00 device <unnamed> (0000:0000)
[ 55.043470] ------------[ cut here ]------------
[ 55.043486] WARNING: at drivers/media/media-device.c:375 media_device_register+0x64/0xd8()
[ 55.043491] Modules linked in: snd_usbmidi_lib uvcvideo(+) snd_rawmidi snd_seq_device videobuf2_vmalloc nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables nf_conntrack_ipv6 nf_defrag_ipv6 xt_conntrack nf_conntrack ip6table_filter ip6_tables w1_gpio wire aml_gpio
[ 55.043537] CPU: 3 PID: 2135 Comm: systemd-udevd Not tainted 3.10.80-odroidc1 #16
[ 55.043566] [<c0014e64>] (unwind_backtrace+0x0/0xec) from [<c0011ea0>] (show_stack+0x10/0x14)
[ 55.043581] [<c0011ea0>] (show_stack+0x10/0x14) from [<c002d848>] (warn_slowpath_common+0x54/0x6c)
[ 55.043593] [<c002d848>] (warn_slowpath_common+0x54/0x6c) from [<c002d8fc>] (warn_slowpath_null+0x1c/0x24)
[ 55.043605] [<c002d8fc>] (warn_slowpath_null+0x1c/0x24) from [<c0313708>] (media_device_register+0x64/0xd8)
[ 55.043639] [<c0313708>] (media_device_register+0x64/0xd8) from [<bf07afe4>] (uvc_probe+0x4c4/0xd70 [uvcvideo])
[ 55.043792] [<bf07afe4>] (uvc_probe+0x4c4/0xd70 [uvcvideo]) from [<c02dacc0>] (usb_probe_interface+0x16c/0x244)
[ 55.043823] [<c02dacc0>] (usb_probe_interface+0x16c/0x244) from [<c028adfc>] (driver_probe_device+0xd4/0x21c)
[ 55.043836] [<c028adfc>] (driver_probe_device+0xd4/0x21c) from [<c028aff0>] (__driver_attach+0x68/0x8c)
[ 55.043851] [<c028aff0>] (__driver_attach+0x68/0x8c) from [<c02892b0>] (bus_for_each_dev+0x4c/0xa4)
[ 55.043864] [<c02892b0>] (bus_for_each_dev+0x4c/0xa4) from [<c028a4e8>] (bus_add_driver+0xd0/0x258)
[ 55.043877] [<c028a4e8>] (bus_add_driver+0xd0/0x258) from [<c028b60c>] (driver_register+0xa8/0x140)
[ 55.043888] [<c028b60c>] (driver_register+0xa8/0x140) from [<c02d99bc>] (usb_register_driver+0x70/0x128)
[ 55.043913] [<c02d99bc>] (usb_register_driver+0x70/0x128) from [<bf08c020>] (uvc_init+0x20/0x4c [uvcvideo])
[ 55.043947] [<bf08c020>] (uvc_init+0x20/0x4c [uvcvideo]) from [<c0008544>] (do_one_initcall+0xa0/0x148)
[ 55.043964] [<c0008544>] (do_one_initcall+0xa0/0x148) from [<c0082854>] (load_module+0xbbc/0xf78)
[ 55.043978] [<c0082854>] (load_module+0xbbc/0xf78) from [<c0082d54>] (SyS_finit_module+0x60/0x70)
[ 55.043991] [<c0082d54>] (SyS_finit_module+0x60/0x70) from [<c000e000>] (ret_fast_syscall+0x0/0x38)
[ 55.043998] ---[ end trace e93c02068fb3ea25 ]---
[ 55.044391] usbcore: registered new interface driver uvcvideo
[ 55.044401] USB Video Class driver (1.1.1)
[ 55.076760] 3:3:1: cannot get freq at ep 0x84
[ 55.094503] usbcore: registered new interface driver snd-usb-audio
这是之后加载的内容:
Module Size Used by
snd_usb_audio 121616 0
snd_hwdep 5819 1 snd_usb_audio
snd_usbmidi_lib 17238 1 snd_usb_audio
uvcvideo 70500 0
snd_rawmidi 19419 1 snd_usbmidi_lib
snd_seq_device 5968 1 snd_rawmidi
videobuf2_vmalloc 2747 1 uvcvideo
nf_conntrack_ipv4 13630 1
nf_defrag_ipv4 1310 1 nf_conntrack_ipv4
iptable_filter 1540 1
ip_tables 11650 1 iptable_filter
nf_conntrack_ipv6 8123 1
nf_defrag_ipv6 14338 1 nf_conntrack_ipv6
xt_conntrack 2899 2
nf_conntrack 81773 3 xt_conntrack,nf_conntrack_ipv4,nf_conntrack_ipv6
ip6table_filter 1489 1
ip6_tables 11914 1 ip6table_filter
w1_gpio 3326 0
wire 20699 1 w1_gpio
aml_gpio 7825 0
答案1
无法uvcvideo
处理您的富士菜:它会在 中产生警告dmesg
,并且无法通过 USB ( ) 与其正确通信3:3:1: cannot get freq at ep 0x84
。这要么是 uvcvideo 中的错误,要么是 Fushicai 需要一个稍微不同的协议(需要在驱动程序中进行“怪异”修复),或者 Fushicai 需要一个完全不同的协议(即,有人需要为其编写一个驱动程序)。
归档一个错误报告与uvcvideo
开发人员联系,看看他们是否知道该怎么做。
答案2
事实证明,它initramfs
坏了。从头开始重建一切就成功了。