webcamd, usb and two webcams - only one works

Thomas Steen Rasmussen thomas at gibfest.dk
Thu Nov 26 19:13:12 UTC 2020


On 11/26/20 5:43 PM, Hans Petter Selasky wrote:
> On 11/26/20 5:05 PM, Thomas Steen Rasmussen wrote:
>>
>> I see. What does this mean?
>>
>> Since the same problem is also on different computer, intel instead of 
>> AMD.
>>
>> Same problem also occurred when I replaced one of the webcams with a 
>> different model.
>>
>> It isn't clear to me whether this is a problem/bug in one or more of 
>> the webcams or drivers, or in freebsd or somewhere else?
>>
>> Thank you for your time and patience with this :)
> 
> Hi,
> 
> The xHCI controller has some logic to reserve bandwidth in bytes per 
> frame (125us for High speed or 1ms for Full speed) for various 
> endpoints. If these numbers are wrong the xHCI controller may think 
> there is no bandwidth and will not activate the endpoint and schedule 
> the transactions.
> 
> Maybe my Skylake xHCI doesn't care about these values :-(
> 
> Reference:
> https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf 
> 
OK thanks.

I have managed to get a bit futher. I found a third and fourth webcam 
and plugged them into the NUC. The two new webcams are:

====================
$ sudo usbconfig -d ugen0.5 dump_device_desc
ugen0.5: <HD 720P Webcam HD 720P Webcam> at usbus0, cfg=0 md=HOST 
spd=HIGH (480Mbps) pwr=ON (500mA)

   bLength = 0x0012
   bDescriptorType = 0x0001
   bcdUSB = 0x0200
   bDeviceClass = 0x00ef  <Miscellaneous device>
   bDeviceSubClass = 0x0002
   bDeviceProtocol = 0x0001
   bMaxPacketSize0 = 0x0040
   idVendor = 0x0c45
   idProduct = 0x6341
   bcdDevice = 0x0000
   iManufacturer = 0x0002  <HD 720P Webcam>
   iProduct = 0x0001  <HD 720P Webcam>
   iSerialNumber = 0x0003  <20130901>
   bNumConfigurations = 0x0001

$ sudo usbconfig -d ugen0.6 dump_device_desc
ugen0.6: <vendor 0x046d BRIO 4K Stream Edition> at usbus0, cfg=0 md=HOST 
spd=SUPER (5.0Gbps) pwr=ON (224mA)

   bLength = 0x0012
   bDescriptorType = 0x0001
   bcdUSB = 0x0310
   bDeviceClass = 0x00ef  <Miscellaneous device>
   bDeviceSubClass = 0x0002
   bDeviceProtocol = 0x0001
   bMaxPacketSize0 = 0x0009
   idVendor = 0x046d
   idProduct = 0x086b
   bcdDevice = 0x0317
   iManufacturer = 0x0000  <no string>
   iProduct = 0x0002  <BRIO 4K Stream Edition>
   iSerialNumber = 0x0003  <32213179>
   bNumConfigurations = 0x0001
====================

After playing around a bit I've concluded that the problem seems to 
follow the "HD 720p" I just plugged in, as well as the webcam I have two 
of, this one:

====================
ugen0.6: <Jieli Technology USB PHY 2.0> at usbus0, cfg=0 md=HOST 
spd=HIGH (480Mbps) pwr=ON (500mA)

   bLength = 0x0012
   bDescriptorType = 0x0001
   bcdUSB = 0x0200
   bDeviceClass = 0x00ef  <Miscellaneous device>
   bDeviceSubClass = 0x0002
   bDeviceProtocol = 0x0001
   bMaxPacketSize0 = 0x0040
   idVendor = 0x1224
   idProduct = 0x2a25
   bcdDevice = 0x0100
   iManufacturer = 0x0001  <Jieli Technology>
   iProduct = 0x0002  <USB PHY 2.0>
   iSerialNumber = 0x0000  <no string>
   bNumConfigurations = 0x0001
====================

Whichever one of the two Jielis and the HD 720p is plugged in first 
works, the following ones do not. All of this is using the same 
externally powered USB hub from earlier.

If I instead plug one of the Jielis into the front plug in the NUC and 
the other one into the USB hub (which is plugged into the back of the 
NUC), both Jielis work together! Very weird, looks like this in devinfo:

====================
         xhci0
           usbus0
             uhub0
               uhub1
                 uaudio1
                   pcm3
               uhub2
                 uaudio2
                   pcm4
                 uhid0
               uaudio0
                 pcm2
====================

The NUC only has the one root XHCI hub so I don't understand why this 
works when it doesn't on the external hub.

Anyway, since the APU only has the two external USB plugs I've been 
using, and that is the machine I need this to work on, this doesn't help 
a lot unfortunately. But it is a data point at least.

/Thomas


More information about the freebsd-usb mailing list