Hello, I'm a hardware engineer working on a prototype that uses multiple USB-3.0 UVC cameras. I am using a laptop with a built in USB-2 camera /dev/video0. The other cameras come up as /dev/video1 ... /dev/video6 My laptop has four USB-3 ports on it, two on the left and two on the right. I'm using two superspeed USB hubs to split to multiple cameras of the same type. These hubs are recognized and work: [ 996.992341] usb 2-6: new SuperSpeed USB device number 3 using xhci_hcd [ 997.015308] usb 2-6: New USB device found, idVendor=05e3, idProduct=0616 [ 997.015311] usb 2-6: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 997.015312] usb 2-6: Product: USB3.0 Hub [ 997.015313] usb 2-6: Manufacturer: GenesysLogic [ 997.018507] hub 2-6:1.0: USB hub found [ 997.018824] hub 2-6:1.0: 4 ports detected [ 997.052126] usb 1-4: new high-speed USB device number 6 using xhci_hcd [ 997.196957] usb 1-4: New USB device found, idVendor=05e3, idProduct=0610 [ 997.196960] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 997.196961] usb 1-4: Product: USB2.0 Hub [ 997.196962] usb 1-4: Manufacturer: GenesysLogic [ 997.197776] hub 1-4:1.0: USB hub found [ 997.198311] hub 1-4:1.0: 4 ports detected (note: there is much more information included in the attached logs) At first, several weeks ago, everything worked perfectly, and I had no problems. Then I got the bright idea of attempting to power the cameras from the USB port, instead of from the USB hubs external power. I was curious how the code will handle a possible overload. The code detected the overload and shut down the ports but the cameras did not shut off. I pulled the plugs, powered off and rebooted, expecting everything to go back to normal, but it didn't. Since then USB has been very unstable. Is it possible I damaged one or more of the laptop's hubs? All four ports still work, if I use them for ordinary USB devices, but one of the ports on the left, cannot even work with a single camera. It detects the camera, but once VLC initializes it, it fails. I have dmesg and syslog for that instance with 4.3.3 kernel: dmesg from kernel 4.3.3: [ 94.139376] usb 2-6: new SuperSpeed USB device number 2 using xhci_hcd [ 94.159982] usb 2-6: LPM exit latency is zeroed, disabling LPM. [ 94.160879] usb 2-6: New USB device found, idVendor=2560, idProduct=c112 [ 94.160882] usb 2-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 94.160883] usb 2-6: Product: See3CAM_11CUG [ 94.160885] usb 2-6: Manufacturer: e-con Systems [ 94.160886] usb 2-6: SerialNumber: 18045300 [ 94.161596] uvcvideo: Found UVC 1.00 device See3CAM_11CUG (2560:c112) [ 94.162552] input: See3CAM_11CUG as /devices/pci0000:00/0000:00:14.0/usb2/2-6/2-6:1.0/input/input21 [ 95.140377] hid-generic 0003:2560:C112.0006: hiddev0,hidraw3: USB HID v1.11 Device [e-con Systems See3CAM_11CUG] on usb-0000:00:14.0-6/input2 [ 162.891394] uvcvideo: Failed to query (GET_CUR) UVC control 2 on unit 2: -110 (exp. 2). [ 163.756134] uvcvideo: Non-zero status (-71) in video completion handler. [ 163.873255] uvcvideo: Non-zero status (-71) in video completion handler. [ 163.890015] uvcvideo: Non-zero status (-71) in video completion handler. [ 163.899719] uvcvideo: Non-zero status (-71) in video completion handler. [ 163.912279] uvcvideo: Non-zero status (-71) in video completion handler. [ 175.349170] usb 2-6: USB disconnect, device number 2 [ 175.349221] xhci_hcd 0000:00:14.0: Cannot set link state. syslog from kernel 4.3.3: May 15 10:22:23 computer kernel: uvcvideo: Failed to query (GET_CUR) UVC control 2 on unit 2: -110 (exp. 2). May 15 10:22:24 computer kernel: uvcvideo: Non-zero status (-71) in video completion handler. May 15 10:22:24 computer kernel: uvcvideo: Non-zero status (-71) in video completion handler. May 15 10:22:24 computer kernel: uvcvideo: Non-zero status (-71) in video completion handler. May 15 10:22:24 computer kernel: uvcvideo: Non-zero status (-71) in video completion handler. May 15 10:22:24 computer kernel: uvcvideo: Non-zero status (-71) in video completion handler. If I unplug the device, and plug it back into a right side port, it works with VLC. I'm not certain that the preceding issue is related to the next issue. If I use a left side port, when the crash occurs, the entire USB subsystem shuts down and all USB devices stop working. I have attached a bunch of system data from kernel 4.6rc6. Unfortunately, testing with 4.6 isn't practical because the nvidia xorg driver I need does not compile with 4.6 yet. I don't know how relevant this is, but I'm using gstreamer-1.6.3 to stream data from the cameras, when this blizzard of bad activity happens. I have found that gstreamer has it's own issues (I get segfaults in "string" randomly). But I don't think the two are intricately linked. I have configured the 4.6RC6 kernel for kernel debugging and should be able to capture the failure in gdb, but I'd really like a link to an up to date howto. I'll keep googling around for a good one. Any advice on how to figure this out and fix it would be appreciated. Thanks for reading all this.
Attachment:
usb_camera_crash_info.tar.bz2
Description: BZip2 compressed data