USB-Hub: unable to enumerate USB device

Hello,

Please help me with the following problem. I am not much of a hardware-expert, but till now I was able to resolve quite all of my BeagleBone Black related problems with the extensive information available online. Only with this problem I am now stuck for days…

I got a custom (not by me) made board providing a USB-Hub (from SMSC) and a USB-to-RS485 (FTDI) converter. When I connect it to the the Beaglebone Black on its USB-Host interface I constantly get messages like the following, with the device number counting up forever:

[ 17.600794] usb 1-1: new high-speed USB device number 25 using musb-hdrc
[ 17.673073] hub 1-0:1.0: unable to enumerate USB device on port 1

Also no leds are turning on on the custom board. The Beaglebone is running on Debian with the following kernel - but I also tried without success another Beaglebone Black with a more recent kernel.
root@debian:~# uname -a
Linux debian 3.8.13-bone67 #1 SMP Wed Sep 24 18:32:44 UTC 2014 armv7l GNU/Linux

When I connect the same board via USB to a Linux laptop, it works perfectly fine with the following messages, including the custom boards’ leds turning on:

usb 1-3: new high-speed USB device number 3 using ehci-pci

usb 1-3: New USB device found, idVendor=0424, idProduct=2514

usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0

hub 1-3:1.0: USB hub found
hub 1-3:1.0: 4 ports detected
usb 1-3.4: new full-speed USB device number 4 using ehci-pci
usb 1-3.4: New USB device found, idVendor=0403, idProduct=6015
usb 1-3.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-3.4: Product: FT230X Basic UART
usb 1-3.4: Manufacturer: FTDI

Also on a Windows Machine the board works fine. Results of usbview.exe:

[Port2] : Generic USB Hub

External Hub: USB#VID_0424&PID_2514#6&109c578c&0&2#{f18a0e88-c30c-11d0-8815-00a0c906bed8}

Is Port User Connectable: yes
Is Port Debug Capable: no
Companion Port Number: 0
Companion Hub Symbolic Link Name:
Protocols Supported:
USB 1.1: yes
USB 2.0: yes
USB 3.0: no

Hub Power: Self Power
Hub type: USB 2.0 Hub
Number of Ports: 4
Power switching: Individual
Compound device: Yes
Over-current Protection: Individual

High speed capable: Yes
High speed: Yes
Multiple transaction translations capable: Yes
Performs multiple transaction translations simultaneously: Yes
Hub wakes when device is connected: No
Hub is bus powered: No
Hub is root: No

—===>Device Information<===—
ConnectionStatus:
Current Config Value: 0x01 → Device Bus Speed: High (is not SuperSpeed or higher capable)
Device Address: 0x02
Open Pipes: 1

===>Device Descriptor<===
bLength: 0x12
bDescriptorType: 0x01
bcdUSB: 0x0200
bDeviceClass: 0x09 → This is a HUB Device

bDeviceSubClass: 0x00
bDeviceProtocol: 0x02
bMaxPacketSize0: 0x40 = (64) Bytes
idVendor: 0x0424 = SMSC
idProduct: 0x2514
bcdDevice: 0x0BB3
iManufacturer: 0x00
iProduct: 0x00

iSerialNumber: 0x00
bNumConfigurations: 0x01
—===>Open Pipes<===—
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81 → Direction: IN - EndpointID: 1
bmAttributes: 0x03 → Interrupt Transfer Type

wMaxPacketSize: 0x0001 = 1 transactions per microframe, 0x01 max bytes
bInterval: 0x0C
—===>Full Configuration Descriptor<===—
===>Configuration Descriptor<===
bLength: 0x09
bDescriptorType: 0x02
wTotalLength: 0x0029 → Validated
bNumInterfaces: 0x01
bConfigurationValue: 0x01

iConfiguration: 0x00
bmAttributes: 0xE0 → Self Powered
→ Remote Wakeup
MaxPower: 0x01 = 2 mA
===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x00
bAlternateSetting: 0x00
bNumEndpoints: 0x01
bInterfaceClass: 0x09 → HUB Interface Class

bInterfaceSubClass: 0x00
bInterfaceProtocol: 0x01
iInterface: 0x00
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81 → Direction: IN - EndpointID: 1
bmAttributes: 0x03 → Interrupt Transfer Type

wMaxPacketSize: 0x0001 = 1 transactions per microframe, 0x01 max bytes

bInterval: 0x0C
===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x00
bAlternateSetting: 0x01
bNumEndpoints: 0x01
bInterfaceClass: 0x09 → HUB Interface Class
bInterfaceSubClass: 0x00

bInterfaceProtocol: 0x02
iInterface: 0x00
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81 → Direction: IN - EndpointID: 1
bmAttributes: 0x03 → Interrupt Transfer Type
wMaxPacketSize: 0x0001 = 1 transactions per microframe, 0x01 max bytes
bInterval: 0x0C

If I plug in a ready-made powered USB-Hub into my Beaglebone, it’s also working without problems:

[ 1011.864369] usb 1-1: new high-speed USB device number 79 using musb-hdrc
[ 1011.993478] usb 1-1: New USB device found, idVendor=04b4, idProduct=6560
[ 1012.003654] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 1012.024643] hub 1-1:1.0: USB hub found
[ 1012.043653] hub 1-1:1.0: 4 ports detected

Only my custom board doesn’t seem to work. Trying to compare the outputs of “usbview.exe” I found the following differences between the “ready-madepowered USB-Hub” and the “custom board”: (ignoring the obviously different idVendor, idProduct and bcdDevice values)
Ready-madepowered USB-Hub:

Compound device: No

MaxPower: 0x32 = 100 mA

Custom board:

Compound device: Yes
MaxPower: 0x01 = 2 mA

Is it a power supply problem? How can I solve the problem? All your feedback and hints are very much appreciated.

Best regards,
Stefan

Hi,

I am still stuck with this problem. I found out, that the hardware is definitely working - even with a Raspberry Pi running a 3.6.11 kernel the USB hub is recogniced, so I am sure it is a software issue.

I updated to the latest kernel version in rcn-ee.net jessie repository (“3.18.0-rc6-bone1”). With this kernel, I don’t receive those “unable to enumerate USB device” errors anymore, but while booting up I get the following timeout:

`
udevadm settle - timeout of 120 seconds reached, the event queue contains:
/sys/devices/ocp/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb1 (1431)
/sys/devices/ocp/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb1/1-0:1.0 (1432)

`

I see, that there is a USB-Hub cape available (http://elinux.org/USB_HUB_Cape). Does anybody know what chip they are using - or does anybody have experiences with a USB hub chip that is working with the BeagleBone Black? I found an I/O cape from Titan (http://www.titan.tw/product/USB_2COM_BB.html) which is built on a chip from Genesys Logic. The powered usb hub I have here and that is working well, is built on a chip from Cypress (CY7C65640-LFC). So I could just have a new pcb board designed which is built on one of those chips and forget about the SMSC chip, but I cannot believe, that one of the most popular usb hub chips of all is just not working with the BeagleBone Black.

I don’t know anymore what else to try. I’d be glad for any advice…

Best regards,
Stefan

Hi,

sorry for spaming the mailinglist. Out of desperation I just tried one more experiment. If I attach the “powered usb hub” directly to the BeagleBone and connect my “custom made usb hub” on the “powered usb hub”, I receive the following messages:

`
[ 49.784746] usb 1-1.1: device not accepting address 11, error -71
[ 50.794745] usb 1-1.1: device not accepting address 14, error -71

[ 55.144832] hub 1-1.1:1.0: hub_port_status failed (err = -71)
[ 55.151082] hub 1-1.1:1.0: hub_port_status failed (err = -71)

[ 55.399949] hub 1-1.1:1.0: activate → -19

`

Any clue?

Thanks for any answer.

Best regards,
Stefan