Can't open USB devices - "pl2303 ttyUSB7: failed to submit interrupt urb: -28"

evs

New Member
Joined
Mar 16, 2021
Messages
3
Reaction score
2
Credits
42
Hello,

My name is Everett Sykes. I'm a developer at Western Telematic, Inc. (WTI). My company developed a custom board based on the Beaglebone Black (AM3352). I've recently upgraded to the v5.4 kernel. I've also recently added USB host support to the board. I'm having a problem not being able to open some of the USB devices attached to the USB host ports.

Physical Configuration:
I have a 4-port internal USB hub connected to the USB bus. I'm exposing two USB host connectors from ports 1 and 2 of the internal hub. I typically connect a 4-port USB hub to each of these two host connectors, for a total of 8 possible ports. Then I connect USB devices to these ports. The "lsusb -t" output is shown below:

root@192:/dev# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=musb-hdrc/1p, 480M
|__ Port 1: Dev 2, If 0, Class=, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 0, Class=, Driver=hub/4p, 480M
|__ Port 4: Dev 10, If 0, Class=, Driver=pl2303, 12M
|__ Port 2: Dev 7, If 0, Class=, Driver=ftdi_sio, 12M
|__ Port 3: Dev 9, If 0, Class=, Driver=pl2303, 12M
|__ Port 1: Dev 5, If 0, Class=, Driver=pl2303, 12M
|__ Port 2: Dev 4, If 0, Class=, Driver=hub/4p, 480M
|__ Port 1: Dev 13, If 1, Class=, Driver=cdc_acm, 480M
|__ Port 1: Dev 13, If 0, Class=, Driver=cdc_acm, 480M
|__ Port 2: Dev 11, If 0, Class=, Driver=pl2303, 12M
|__ Port 3: Dev 6, If 0, Class=, Driver=ftdi_sio, 12M
|__ Port 4: Dev 8, If 0, Class=, Driver=pl2303, 12M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=musb-hdrc/1p, 480M

If I connect less than 6 or 7 USB devices (typically USB to serial adapters or ACM type devices), everything is OK. But, when I connect more that 6 or 7 devices, I'm not able to open one or more of the devices. The "TTYUSBn" or "TTYACMn" devices show up in the /dev directory. And they show up in the tree if I enter "lsusb -t". But if I enter dmesg to look at the log, I see the following errors:

"pl2303 ttyUSB7: failed to submit interrupt urb: -28" (for ttyUSB devices)
"cdc_acm 2-1.2.1:2.0: acm_port_activate - usb_submit_urb(ctrl irq) failed" (for ttyACM devices)

Can you tell me what might be causing this problem?

Thank you for your time,
Everett Sykes
 


Do your 4-port USB hubs have a "wall cube power supply," or are you only drawing power from the USB socket?
 
I'm currently using hubs without separate power supplies. They draw power from the USB ports. Although, I tried a couple powered hubs (with wall blocks) last week, and noticed the same problem.
 
It's not a limitation of Linux itself. I've had enough devices hooked up so that it looked like a family of porcupines. Could it possibly be a limitation of the hubs themselves?
 
This article offers some insight that may help.

I have a 4-port internal USB hub connected to the USB bus. I'm exposing two USB host connectors from ports 1 and 2 of the internal hub. I typically connect a 4-port USB hub to each of these two host connectors, for a total of 8 possible ports.
The article I linked to says the USB specification does not permit piggy-backing one hub into another hub unless they are self powered. I'll quote it here: "First, you must take care about power supply: the USB standard does not allow you to connect a USB hub to another if they don't have their own power supply. Some hubs will even disable their downstream ports when they detect that they are second-layer hubs without external power supply. Generally speaking, if you want to connect many devices, always start by powering all hubs from the beginning, without exception. This is the safest way to go."

Look near the end of the article for USB Host Comparison also. I will again quote the most relevant part that I see: "The Raspberry Pi 2 appears to work with 10 devices sending messages at 100Hz: this eats up about 12% of its CPU time. Over 10 devices, the handling of High-Speed devices seems to slow down exponentially, and it is even impossible to get 17 devices to work simultaneously, even when they send almost no data."

So, besides the possible trouble from power issues, it is also possible that the USB Host controller on the BeagleBone Black is struggling under this load (3 hubs + 8 devices). Or maybe it's a combination of these. Can your internal hub even be self-powered?
 
Hello KGIII and Stan,

Thank you for your answers.

Stan,
I'll check out the article today. I DID try the configuration with one of the two external hubs being self powered. But I got the same result. I'll dig up another one today and give it a try using all powered external hubs. I believe the internal hub has it's own power supply. But I'll check that also.

Thanks again...
Everett
 
Hello KGIII and Stan,

Thank you for your answers.

Stan,
I'll check out the article today. I DID try the configuration with one of the two external hubs being self powered. But I got the same result. I'll dig up another one today and give it a try using all powered external hubs. I believe the internal hub has it's own power supply. But I'll check that also.

Thanks again...
Everett
Good luck! If that doesn't help, I'm afraid I can't think of anything else. It seems like you are pushing the USB capabilities to its limits. The article's conclusion also mentions the significance of using Multi-TT hubs versus Single-TT hubs, so that is another thing to look at.
 
Last edited:

Staff online

Members online


Top