2014-09-02 19 views
4

현재 USB 허브를 공유해야하는 Wandboard 보드에 2 webcams을 실행하려고합니다. 문제는 현재 드라이버 구현 (YUV에만 해당)은 USB 허브를 포화시키고 결국에는 하나의 카메라 만 연결할 수 있다는 것입니다.Linux UVC 드라이버에서 UVC_QUIRK_FIX_BANDWIDTH 버크를 어떻게 활성화합니까?

그러나 UVC 드라이버 구현에는이 상황에 대한 단점이 있습니다.

문제는 이러한 단점을로드하는 방법에 대한 문서가 없습니다. 저를 도와주십시오.

답변

8

일부 매개 변수를 전달하여 많은 커널 모듈의 동작을 변경할 수 있습니다.

당신은 modinfo 명령과 함께 사용할 수있는 모든 모듈 매개 변수의 목록을 얻을 수 있습니다 :

# modinfo uvcvideo 

사용할 수있는 "단점"매개 변수가 있음을 보여줍니다. faq을 보시면 quirks이 실제로는 bitfield 인 것으로 보이므로 여러 가지 단점을 사용하려면 숫자를 추가해야합니다.

처음 언로드 드라이버 (그렇게하면 분명 당신이 그것을 사용해서는 안) :

# rmmod uvcvideo 

는 다음 quirks 매개 변수를 다시로드합니다. 당신과 UVC_QUIRK_RESTRICT_FRAME_RATE (따라서 5120x200 인) 당신이 640의 단점 값 (.입니다 128+512 RESP 0x200|0x80)를 사용합니다 (십진수 128 인 진수 값 0x80을 가지고있는) 모두 UVC_QUIRK_FIX_BANDWIDTH을 사용하려면 가정 :

# modprobe uvcvideo quirks=640 
3

이 umläute의 대답은 재부팅을 생존하기 위해, 나는과 rel 모듈을 얻으려면 내용

options uvcvideo quirks=0x80 

와 파일 /etc/modprobe.d/uvcvideo.conf을 만들어 OAD uvcvideo.conf, 언로드 및 모듈을로드 : 흥미롭게도

rmmod uvcvideo 
modprobe uvcvideo 

을, (uvcvideo가로드되는 동안 즉,) quirks 작동하지 않았다 설정 echo를 사용하여 UVC driver FAQuvcvideotrace 매개 변수를 수정하는 echo를 사용하더라도.

참고 : UVC_QUIRK_FIX_BANDWIDTH는 컴퓨터 비전 응용 프로그램의 경우 USB 호스트 컨트롤러 당 많은 경우 (Ubuntu 14.04) 많은 Microsoft LifeCam Cinema 웹캠을 활성화했습니다. LifeCam Cinema는 USB 2.0 대역폭의 약 48 % (Windows의 장치 관리자에 따름)를 보유하고 있으므로이 컨트롤러가 없으면 호스트 컨트롤러 당 최대 2 개의 LifeCam을 사용할 수 있습니다. (몇몇 호스트 컨트롤러 칩의 경우, 나는 버추얼하지 않고 하나의 LifeCam으로 제한되었다.)

+0

PS : 압축 된 형식에서는 쿼크가 작동하지 않지만 (LifeCam은 예를 들어 여전히 USB 2.0 대역폭의 48 %를 예약 함); 이 [답변] (http://stackoverflow.com/a/23881125/1628638)에는 UVC 드라이버 해킹 기능이있어 압축 된 형식에서도 작동합니다. 해킹을 시도하지 않았지만 코드가 올바르게 보입니다. :) –