我目前正在尝试在一块Wandboard板上运行2个webcams,它们必须共享一个USB集线器。问题是,当前的驱动程序实现(仅限YUV)会使USB集线器饱和,最终我只能连接一个摄像头。
然而,UVC驱动程序的实现对于这种情况的kind和其他情况有一个怪癖。
问题是,我没有找到任何关于如何加载这些怪癖的文档。你能帮我弄一下吗?
发布于 2014-09-02 16:55:09
你可以通过传递一些参数来改变许多内核模块的行为。
您可以使用modinfo命令获取所有可用模块参数的列表:
# modinfo uvcvideo说明有一个"quirks“参数,可以使用。看看你发布的faq,似乎quirks实际上是一个位域,所以如果你想启用多个怪癖,你必须添加数字。
首先卸载驱动程序(显然你在这样做的时候不能使用它):
# rmmod uvcvideo然后使用quirks参数重新加载它。假设您想要同时启用UVC_QUIRK_FIX_BANDWIDTH (具有十六进制值0x80,以十进制表示为128 )和UVC_QUIRK_RESTRICT_FRAME_RATE (即0x200,因此为512),您将使用640 (即128+512 )这一奇怪的值。0x200|0x80):
# modprobe uvcvideo quirks=640发布于 2016-01-14 06:27:23
为了使umläute的答案在重启后仍然有效,我创建了包含以下内容的文件/etc/modprobe.d/uvcvideo.conf
options uvcvideo quirks=0x80要让模块重新加载uvcvideo.conf,请卸载并加载模块:
rmmod uvcvideo
modprobe uvcvideo有趣的是,使用echo设置quirks (即在加载uvcvideo时)不起作用,即使UVC driver FAQ使用echo修改uvcvideo的trace参数。
注意:在我的例子中(在Ubuntu14.04上),UVC_QUIRK_FIX_BANDWIDTH为一个机器视觉应用程序在每个LifeCam主机控制器上启用了许多微软USB影院网络摄像头。LifeCam影院保留了大约48%的USB2.0带宽(根据Windows上的设备管理器),所以没有怪癖,每个主机控制器最多可以操作两个LifeCams。(对于几个主机控制器芯片,我甚至被限制在一个LifeCam上,而没有这种怪癖。)
https://stackoverflow.com/questions/25619309
复制相似问题