将仅供 uvcvideo 使用的 USB 设备列入黑名单

将仅供 uvcvideo 使用的 USB 设备列入黑名单

我在运行 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坏了。从头开始重建一切就成功了。

相关内容