webcamd, usb and two webcams - only one works

Thomas Steen Rasmussen thomas at gibfest.dk
Thu Nov 26 14:13:59 UTC 2020


On 11/26/20 2:49 PM, Hans Petter Selasky wrote:
> On 11/26/20 2:34 PM, Thomas Steen Rasmussen wrote:
>>
>> On 11/26/20 1:18 PM, Hans Petter Selasky wrote:
>>>
>>> Hi Thomas,
>>>
>>> Try setting the resolution or framerate down, because high resolution 
>>> webcams need a lot of USB bandwidth! 
>>
> 
> Hi,

Hi :)

> 
> Try "vga" instead of "xga".
> 

I tried vga but it did not make a difference, it still says 640*480 and 
only one camera works.

I removed the external USB hub (which is externally powered) from the 
picture and plugged both cameras directly into the APU for now, to 
eliminate some potential sources of issues. The issue still remains.

Using usbdump I was able to see the USB back-and-forth when taking a 
snapshot with pwcview with the working camera. About maybe 100 lines or 
so, no errors.

Then I tried the other camera where pwcview never returns, and it looks 
similar at first but then gets stuck in a loop of:

=============================================
14:05:25.408143 usbus0.3 
SUBM-ISOC-EP=00000084,SPD=HIGH,NFR=128,SLEN=0,IVAL=0
14:05:25.654017 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:25.654030 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:25.654220 usbus0.3 
SUBM-ISOC-EP=00000084,SPD=HIGH,NFR=128,SLEN=0,IVAL=0
14:05:25.900003 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:25.900012 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:25.900141 usbus0.3 
SUBM-ISOC-EP=00000084,SPD=HIGH,NFR=128,SLEN=0,IVAL=0
14:05:26.146015 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:26.146035 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:26.146244 usbus0.3 
SUBM-ISOC-EP=00000084,SPD=HIGH,NFR=128,SLEN=0,IVAL=0
14:05:26.392001 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:26.392017 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:26.392229 usbus0.3 
SUBM-ISOC-EP=00000084,SPD=HIGH,NFR=128,SLEN=0,IVAL=0
^C14:05:26.637926 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:26.637939 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:26.638104 usbus0.3 
SUBM-ISOC-EP=00000084,SPD=HIGH,NFR=128,SLEN=0,IVAL=0
14:05:26.883934 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:26.883959 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:26.884114 usbus0.3 
SUBM-ISOC-EP=00000084,SPD=HIGH,NFR=128,SLEN=0,IVAL=0
14:05:27.129974 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:27.129984 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:27.130124 usbus0.3 
SUBM-ISOC-EP=00000084,SPD=HIGH,NFR=128,SLEN=0,IVAL=0
14:05:27.375997 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:27.376006 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:27.376182 usbus0.3 
SUBM-ISOC-EP=00000084,SPD=HIGH,NFR=128,SLEN=0,IVAL=0
14:05:27.621937 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:27.621950 usbus0.3 
DONE-ISOC-EP=00000084,SPD=HIGH,NFR=0,SLEN=0,IVAL=0,ERR=TIMEOUT
14:05:27.622184 usbus0.3 
SUBM-ISOC-EP=00000084,SPD=HIGH,NFR=128,SLEN=0,IVAL=0

210 packets captured
210 packets received by filter
0 packets dropped by kernel
$
=============================================

Note that usbdump is completely quiet when I don't run pwcview on either 
camera. If the problem was that the first webcam sends too much data for 
the second webcam to work, wouldn't usbdump show that? This makes me 
think the problem is elsewhere!


> 
> You could try to run webcamd in the foreground. It is also possible to 
> enable debugging when you build webcamd from ports. Also, usbdump, can 
> dump the traffic of these devices so that you see exactly what is going on.

This is devinfo output with the two webcams plugged directly into the 
USB plugs on the APU3:

         xhci0
           usbus0
             uhub1
               uaudio0
                 pcm0
               uaudio1
                 pcm1

Where "uhub1" is uhub1: <0x1022 XHCI root HUB, class 9/0, rev 3.00/1.00, 
addr 1> on usbus0


> 
> Can you show what usbconfig tell about these two devices when they are 
> connected?

I sent the output of dump_all_desc for one of them in the initial email. 
I can send both or other output if needed?

This is the brief output for both:

===========================================
$ sudo usbconfig -d ugen0.3 dump_device_desc
ugen0.3: <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

$ sudo usbconfig -d ugen0.2 dump_device_desc
ugen0.2: <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

$
===========================================

> Are you running -stable ?
> 

Yes, FreeBSD 12.2-STABLE r367109 GENERIC amd64.

/Thomas


More information about the freebsd-usb mailing list