如何在Linux UVC Driver中启用UVC_QUIRK_FIX_BANDWIDTH怪癖?

时间:2014-09-02 08:45:08

标签: linux v4l2 uvc

我目前正在尝试在Wandboard主板上运行2 webcams,它必须共享USB集线器。问题是,当前的驱动程序实现(仅限YUV)使USB集线器饱和,最后我只能连接一个摄像头。

然而,UVC驱动程序实现对于此kind情况以及其他情况有一个怪癖。

问题是,我没有找到任何关于如何加载这些怪癖的文档。 你可以帮助我吗?

2 个答案:

答案 0 :(得分:11)

您可以通过传递一些参数来更改许多内核模块的行为。

您可以使用modinfo命令获取所有可用模块参数的列表:

# modinfo uvcvideo

表明存在可以使用的“怪癖”参数。 看看你发布的faq,似乎quirks实际上是一个位域,所以如果你想要启用多个怪癖,你必须添加数字。

首先卸载驱动程序(显然你这样做时不能使用它):

 # rmmod uvcvideo

然后使用quirks参数重新加载它。 假设您要同时启用UVC_QUIRK_FIX_BANDWIDTH(其中十六进制值为0x80,十进制为128)和UVC_QUIRK_RESTRICT_FRAME_RATE0x200 512 { {1}})您将使用640的怪癖值(128+5120x200|0x80}:

 # modprobe uvcvideo quirks=640

答案 1 :(得分:3)

为了让umläute的答案重新启动,我创建了包含内容的文件/etc/modprobe.d/uvcvideo.conf

options uvcvideo quirks=0x80

要让模块重新加载uvcvideo.conf,请卸载并加载模块:

rmmod uvcvideo
modprobe uvcvideo

有趣的是,使用echo设置quirks(即加载uvcvideo时)不起作用,即使UVC driver FAQ使用echo修改trace的{​​{1}}参数。

注意:对于机器视觉应用程序,UVC_QUIRK_FIX_BANDWIDTH为每个USB主机控制器(在Ubuntu 14.04上)启用了许多Microsoft LifeCam Cinema网络摄像头。 LifeCam Cinema保留了大约48%的USB 2.0带宽(根据Windows上的设备管理器),因此如果没有怪癖,每个主机控制器最多可以运行两个LifeCams。 (对于几个主机控制器芯片,我甚至只限于一个没有怪癖的LifeCam。)