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