This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

USB0 Enumeration error

Other Parts Discussed in Thread: AM3356

Hello,

We have a custom board based on the Beaglebone Black, I'm trying to get the board to boot from USB, with nothing programmed on or SD card. I'm expecting to get the AM335 RNDIS to initiate as an Ethernet device. On our board (compared to the Beaglebone Black), we're using USB0 with the OTG circuitry (instead of USB1) and forcing USB0 into device mode. The board is detected by the Linux PC, however, It will not enumerate.

The following is the dmesg I was able to get (running Ubuntu 12.04):

[424595.900132] usb 5-2: new full-speed USB device number 4 using uhci_hcd
[424596.075024] usb 5-2: unable to read config index 0 descriptor/all
[424596.075032] usb 5-2: can't read configurations, error -71
[424596.188220] usb 5-2: new full-speed USB device number 5 using uhci_hcd
[424596.251145] usb 5-2: unable to read config index 0 descriptor/all
[424596.251158] usb 5-2: can't read configurations, error -71
[424596.364184] usb 5-2: new full-speed USB device number 6 using uhci_hcd
[424596.422150] usb 5-2: unable to read config index 0 descriptor/all
[424596.422164] usb 5-2: can't read configurations, error -71
[424596.423023] hub 5-0:1.0: unable to enumerate USB device on port 2

 

I've been looking around to see if I can find any information on this error, I've found very little information. Does anyone have any idea what this error means?

Since this is an exercise to get Ethernet over USB0 working, our board has nothing programmed on flash and we are not using an SD card. 

Thanks

 

  • Hi Brendan,

    What is the silicon revision of your AM335X processor. There is an AM335X Errata 1.0.20 that prevents Rev.1 .0 devices from booting over USB.

  • Hi Biser, Thanks for the response.

    The silicon revision of the chip is 2.1. At this point, I'm trying to have the board correctly enumerated by the PC and have the board set up an RNDIS connection.

    I am using the Beaglebone Black USB1 OTG hardware (only I have connected the hardware to USB0 on the AM3356), I have floated the USB0_ID pin to force USB0 to act as Peripheral.

    I have included a schematic of the hardware below, are there any changes I need to make to the circuit in order to make it work properly?

  • Hardware seems fine to me. I suppose the vertical wire on top goes to USB0_VBUS, is this correct?

  • That's correct, the virtical wire goes to USB0_VBUS. I've gone through the hardware quite a bit, but I don't see where the issue is comming from. The schematic above should be identical to the Beaglebone Black USB0 schematic, minus the mini-B connector.
  • I will ask somebody from the factory team to help on this. Seems to me like a configuration problem on the PC side, but I'm not an expert on this.

  • Brendan,

    Error -71 is Protocol Error, which basically means the host is unable to interpret the received USB packets.

    Normally it is not a good idea to use the USB port before it has been validated and known it has no signal integrity problem.

    Is it possible to first boot the kernel from other source such as SD card then to validate the USB port, like EyeDiagram test? 

    If not, you still have options to look at what is wrong. Do you have access to a protocol analyzer? The analyzer trace probably can tell what is wrong during the RNDIS device enumeration. Or the usbmon trace on the Linux host can tell what USB packets the host received.

  • Also can you please show the USB0 pins on the AM335x? is there any cap on VBUS line?

  • Hi Bin thanks for the response, 

    I have been able to test the USB port within Linux (without modification to the ID pin), it is detecting the port and acting as master, it can successfully mount and read/write to a USB drive.

    Please see the below schematic, note that R253 has been removed to allow the ID pin to float, thus forcing USB0 as peripheral. USB0_VBUS is the same line going down from the previous schematic, there is no cap on the VBUS line, as per the Beaglebone Black schematic.

    Brendan

  • I don't have access to a protocol analyser at this time, however, I have looked at Wireshark to see the USB packets. Both look identical up to a point, where the Beaglebone Black mounts as a network device and our development board restarts the handshaking process. 

    Is my understanding correct in that, since the Beaglebone Black had the flash erased, and proven to work, there should be no special udev in place for our development board?

  • Try to use the USBmon in Linux, monitor the usb bus I/O, Emulation process.In windows try to use the bus hound. https://www.kernel.org/doc/Documentation/usb/usbmon.txt
  • Regardless of which USB sniffer was used, packets and data seem identical.

    The only visible difference is eventually the Beaglebone Black mounts as an RNDIS device and my development board restarts the handshaking process.

  • Hi Brendan,


        In USB0 OTG controller, how to swap BBB device to slave mode  to master mode and how to configure hardware pins(USB0-ID value). please share the hardware connections in Type-B device.