Re: coping with poor usb implementations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 19 Dec 2011, at 20:55, Alan Stern wrote:

> On Mon, 19 Dec 2011, Tim Coote wrote:
> 
>> No. But it does describe how the host drivers can confuse devices.
>> And my experience of such devices is that, for instance, they can be
>> swamped with error conditions that causes a stack overflow. Any I'm
>> hypothesising that's what's happened here.
> 
> No need to hypothesize.   Look at the actual data from usbmon or 
> wireshark and see what's really happening.
> 
Ok. I'll try to set that up. But it will still not tell me what's going on inside the device.

>>> 	echo X >/sys/bus/pci/drivers/uhci_hcd/unbind
>>> 
>>> Replace X with the correct name of the UHCI device for the bus your 
>>> device is plugged into -- this will be one of the file names in the 
>>> /sys/bus/pci/drivers/uhci_hcd directory, such as 0000:00:1d.1.
>>> 
>>> To rebind the controller, use the same command but replace "unbind" 
>>> with "bind".
>> Thanks. This does seem to work. However, this did not solve the problem the first time (I unbound what I thought was the correct device, but I can see that it could simply be the wrong one, so I'm going to disable them all tonight.
>> 
>> Are there any instructions on how these types of commands work. I've found something on lwn, but it misses the context of what the different connections can be.
> 
> These's lots of documentation about these things in the Linux kernel 
> source's Documentation directory.  In particular, the unbind and bind 
> files are explained in Documentation/ABI/testing/sysfs-bus-pci 
> (although they apply to all buses now, not just PCI).
> 
Thanks, I'll read that. When I unbind all of the devices, I don't get the errors. But then again, I don't think that the /dev/ttyUSB0 device gets created (nss!) So this is at best a partial work around for me, as I'd like to get to the device as soon as it boots up.

I'll setup the usbmon capture tonight.

Looking at the /var/log/messages difference for the failed connections vs the ones that work, there does seem to be a difference in the code that's executed:
Here's a broken attempt to communicate with the device (as the inverter's booting up):

Dec 19 07:43:03 pluto kernel: [143649.474044] usb 3-2: new full speed USB device number 14 using uhci_hcd
Dec 19 07:43:03 pluto kernel: [143649.704115] usb 3-2: New USB device found, idVendor=0451, idProduct=3410
Dec 19 07:43:03 pluto kernel: [143649.704124] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Dec 19 07:43:03 pluto kernel: [143649.704132] usb 3-2: Product: TUSB3410 Boot Device
Dec 19 07:43:03 pluto kernel: [143649.704138] usb 3-2: Manufacturer: Texas Instruments
Dec 19 07:43:03 pluto kernel: [143649.704144] usb 3-2: SerialNumber: TUSB3410        
Dec 19 07:43:03 pluto kernel: [143649.708242] ti_usb_3410_5052 3-2:1.0: TI USB 3410 1 port adapter converter detected
Dec 19 07:43:03 pluto kernel: [143649.730125] usb 3-2: ti_download_firmware - error downloading firmware, -75
Dec 19 07:43:03 pluto kernel: [143649.730151] ti_usb_3410_5052: probe of 3-2:1.0 failed with error -5
Dec 19 07:43:03 pluto kernel: [143649.730282] hub 3-0:1.0: port 2 disabled by hub (EMI?), re-enabling...
Dec 19 07:43:03 pluto kernel: [143649.730292] usb 3-2: USB disconnect, device number 14
Dec 19 07:43:04 pluto kernel: [143649.886072] hub 3-0:1.0: unable to enumerate USB device on port 2


and here's one that succeeds (from after the inverter's fully booted):
Dec 18 12:16:04 pluto kernel: [73629.951045] usb 3-2: new full speed USB device number 2 using uhci_hcd
Dec 18 12:16:04 pluto kernel: [73630.159119] usb 3-2: New USB device found, idVendor=0451, idProduct=3410
Dec 18 12:16:04 pluto kernel: [73630.159129] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Dec 18 12:16:04 pluto kernel: [73630.159136] usb 3-2: Product: TUSB3410 Boot Device
Dec 18 12:16:04 pluto kernel: [73630.159142] usb 3-2: Manufacturer: Texas Instruments
Dec 18 12:16:04 pluto kernel: [73630.159148] usb 3-2: SerialNumber: TUSB3410        
Dec 18 12:16:04 pluto kernel: [73630.557559] USB Serial support registered for TI USB 3410 1 port adapter
Dec 18 12:16:04 pluto kernel: [73630.558451] USB Serial support registered for TI USB 5052 2 port adapter
Dec 18 12:16:04 pluto kernel: [73630.559250] ti_usb_3410_5052 3-2:1.0: TI USB 3410 1 port adapter converter detected
Dec 18 12:16:04 pluto kernel: [73630.559291] ti_usb_3410_5052: probe of 3-2:1.0 failed with error -5
Dec 18 12:16:04 pluto kernel: [73630.560301] usbcore: registered new interface driver ti_usb_3410_5052
Dec 18 12:16:04 pluto kernel: [73630.560308] ti_usb_3410_5052: v0.10:TI USB 3410/5052 Serial Driver
Dec 18 12:16:04 pluto kernel: [73630.562244] ti_usb_3410_5052 3-2:2.0: TI USB 3410 1 port adapter converter detected
Dec 18 12:16:04 pluto kernel: [73630.562980] usb 3-2: TI USB 3410 1 port adapter converter now attached to ttyUSB0


Is it likely to be significant that during the failed log entries, it looks like the ti_usb_3410_5052 driver detects an adapter much faster than in the successful case (~0.04 sec vs ~0.4 sec), and never gets to the successful registration of the port adapter?

> Alan Stern
> 
Tim--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux