webcamd, usb and two webcams - only one works

Hans Petter Selasky hps at selasky.org
Thu Nov 26 16:04:38 UTC 2020


On 11/26/20 4:36 PM, Thomas Steen Rasmussen wrote:
> On 11/26/20 4:26 PM, Thomas Steen Rasmussen wrote:
>> On 11/26/20 4:08 PM, Hans Petter Selasky wrote:
>>> On 11/26/20 3:38 PM, Thomas Steen Rasmussen wrote:
>>>> I tried swapping the webcams around, the error is always with the 
>>>> second webcam connected (so video2), regardless of which webcam it is.
>>>
>>> Hi,
>>>
>>> Might be a bug in the XHCI controller driver or XHCI HW, that the 
>>> isochronous transactions don't get scheduling time.
>>>
>>> Do you have the possibility to test on another computer running FreeBSD?
>>
>> I do actually, let me get that setup.
>>
> 
> Hello,
> 
> That was easy, webcamd and pwcview was already installed :)
> 
> I can confirm the same behaviour happens on an Intel NUC which has this 
> XHCI root hub:
> 
> uhub0: <0x8086 XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus0
> 
> /dev/video0 is able to take a snapshot with pwcview, /dev/video2 hangs.
> 

Hi,

I have a Skylake here with XHCI and it doesn't exhibit this problem when 
using two differently branded HighSpeed UVC webcams simultaneously.

I'm not sure what is causing this. Because your one webcam works alone 
it might have something to do with the xHCI bandwidth allocations, which 
are controlled by the ESIT and average TRB len as shown below. You may 
want to play with these fields in xhci.c:

         switch (edesc->bmAttributes & UE_XFERTYPE) {
         case UE_INTERRUPT:
         case UE_ISOCHRONOUS:
                 temp = XHCI_EPCTX_4_MAX_ESIT_PAYLOAD_SET(max_frame_size) |
                     XHCI_EPCTX_4_AVG_TRB_LEN_SET(MIN(XHCI_PAGE_SIZE,
                     max_frame_size));
                 break;

--HPS


More information about the freebsd-usb mailing list