如何在Linux UVC驱动程序中启用UVC_怪癖_修复_带宽怪癖?
我目前正在尝试在Wandboard板上运行2,它必须共享一个USB集线器。问题是,当前的驱动程序实现(仅限YUV)使USB集线器饱和,最终我只能连接一个摄像头 然而,UVC驱动程序实现对于这种情况和其他情况有一个怪癖 问题是,我并没有找到任何关于如何加载这些怪癖的文档。如何在Linux UVC驱动程序中启用UVC_怪癖_修复_带宽怪癖?,linux,v4l2,uvc,Linux,V4l2,Uvc,我目前正在尝试在Wandboard板上运行2,它必须共享一个USB集线器。问题是,当前的驱动程序实现(仅限YUV)使USB集线器饱和,最终我只能连接一个摄像头 然而,UVC驱动程序实现对于这种情况和其他情况有一个怪癖 问题是,我并没有找到任何关于如何加载这些怪癖的文档。 你能帮我一下吗?你可以通过传递一些参数来改变许多内核模块的行为 您可以使用modinfo命令获取所有可用模块参数的列表: # modinfo uvcvideo 显示有一个“怪癖”参数,可以使用。 查看您发布的日志,似乎怪癖实际
你能帮我一下吗?你可以通过传递一些参数来改变许多内核模块的行为 您可以使用
modinfo
命令获取所有可用模块参数的列表:
# modinfo uvcvideo
显示有一个“怪癖”参数,可以使用。
查看您发布的日志,似乎怪癖实际上是一个位字段,因此如果您想启用多个怪癖,您必须添加数字
首先卸载驱动程序(显然,这样做时不能使用它):
然后使用quirks
参数重新加载它。
假设您想同时启用UVC\u QUIRK\u FIX\u带宽
(十六进制值0x80
,十进制值128
)和UVC\u QUIRK\u RESTRICT\u FRAME\u RATE
(即0x200
,因此512
),您将使用640
(分别为128+512
和0x200 | 0x80
):
为了使umläute的答案在重新启动后仍然有效,我创建了包含内容的文件/etc/modprobe.d/uvcvideo.conf
options uvcvideo quirks=0x80
要使模块重新加载uvcvideo.conf
,请卸载并加载模块:
rmmod uvcvideo
modprobe uvcvideo
有趣的是,即使使用echo
修改uvcvideo
的trace
参数,使用echo
设置怪癖(即加载uvcvideo
时)也不起作用
注意:UVC_QUIRK_FIX_带宽为机器视觉应用程序的每个USB主机控制器(在Ubuntu 14.04上)启用了许多Microsoft LifeCam Cinema网络摄像头。LifeCam Cinema保留了大约48%的USB 2.0带宽(根据Windows上的设备管理器),因此没有QUIRK,每个主机控制器最多可以操作两个LifeCam。(对于一些主机控制器芯片,我甚至被限制为一个没有这种怪癖的LifeCam。)PS:这种怪癖对于压缩格式不起作用(但LifeCam,例如,仍然保留48%的USB 2.0带宽);这有一个UVC驱动程序漏洞,使得这种怪癖也适用于压缩格式。没有尝试过这种漏洞,但代码看起来是正确的。:)要获取当前值:cat/sys/module/uvcvideo/parameters/quirks
options uvcvideo quirks=0x80
rmmod uvcvideo
modprobe uvcvideo