Beagleboard Rev C3 USB EHCI Controller Trouble

If you are the owner of a BeagleBoard Revision C3, you might have noticed your USB devices disappear when there is sudden load of heavy traffic on the USB bus. Error messages along the lines of the following appear:

phy0 -> rt2x00usb_vendor_request: Error - Vendor Request 0x06 failed for offset 0x3090 with error -19.
usb 1-2.3: USB disconnect, address X
ehci-omap ehci-omap.0: port X reset error -110
hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: Cannot enable port X.  Maybe the USB cable is bad?

To restore the system so that the USB devices can be found again, one has perform a complete reboot of system. One might think the problem to be software related, but it turns out the error is actually a hardware problem, due to noise on the 1.8 V VDD2 power rail. When there is heavy traffic on the USB bus, this can cause voltage drops on the VDD2 power rail sending the USB host controller into panic [1].

The recommended solution is to increase the decoupling capacitance of the power rail by adding an additional capacitor in parallel to the C97 capacitor [1-3] or replacing it entirely. In this case a 22 uF 25V electrolytic capacitor was soldered across the C97 capacitor, as seen in the photo below. This solved USB EHCI controller problem nicely.

If you plan repeat this mod using an electrolytic capacitor, please note that these capacitors are polarised.

Zoomed BeagleBoard with 22uF 25V Electrolytic Capacitor Mod

BeagleBoard with 22uF 25V Electrolytic Capacitor Mod

 

References
[1] Beagleboard stable USB EHCI hack, Linus Åkesson, 13 May 2010,
http://www.linusakesson.net/hardware/beagleboard/ehci.php
[2] USB EHCI Problems, BeagleBoard Google Group, May 2009,
http://groups.google.com/group/beagleboard/browse_thread/thread/5b8385f0bb1f63da
[3] BeagleBoard, Embedded Linux Wiki,
http://elinux.org/BeagleBoard#USB

About Poul
Software Engineer in Denmark.
This entry was posted in Beagleboard, Electronics. Bookmark the permalink.

Comments are closed.