My BeagleBoard rev C3 with Ubuntu has suddenly developed problems opening a USB port on an I2C interface to a Devantech compass.
If a different Ubuntu machine is plugged into the same hub, it builds and runs the same application code (C/C++) with no problems. I've tried three different powered hubs, even plugging the I2C directly into the EHCI port. I tried a backup SD card that hadn't been touched in months. I also verified the port name "ttyUSB0", even when it was the only thing plugged in to the hub or EHCI. The servo power supply is a separate battery. The BeagleBoard and USB hub is powered on my desk from a lab power supply (Lambda 0-10 V, 0-5 A).
When the BeagleBoard tries to open the port, it hangs, and dumps hundreds of lines of diagnostics on the console. I have posted a listing of the boot sequence and the error dump here:
http://pastebin.com/AdtLFUxD
This interface worked fine for weeks. I suspect a BeagleBoard hardware failure; if that is the case, is it worth fixing?
It looks like your board is now suffering from the c3 ehci problem..
The simple fix is to add a 22uF cap to the expansion bus:
http://elinux.org/BeagleBoard#EHCI
Regards,
Thanks for the advice, Robert. After reading the URL I did solder a 22-uf
tantalum capacitor through the specified holes of the expansion bus, but
that didn't fix the problem. A borrowed C3 board had the identical problem.
The compass would work when first booted up, but only if facing west. After
that, if I rotated the truck slowly north or south a few degrees, it would
reach a value where it would hang, stuck in a low-level library routine and
unable to read from the port.
The Devantech CMPS03 compass and the Devantech USB-I2C module were ordered
from RobotShop:
http://www.robotshop.ca/devantech-magnetic-compass-module-cmps03-1.html
http://www.robotshop.ca/devantech-usb-to-i2c-module.html
Support information and software came from:
http://www.robot-electronics.co.uk
Incidentally, I was very satisfied with the customer service at RobotShop.
Both Devantech items work just fine with any x86 Windows or Linux platform
that I have tried.
(And, yes, my x86 code did have to be tweaked little-endian for the ARM to
interpret the compass data bytes on the BeagleBoard in the correct order.)
Hi John,
http://www.robotshop.ca/devantech-magnetic-compass-module-cmps03-1.html
http://www.robotshop.ca/devantech-usb-to-i2c-module.html
Any specific reason for going over USB for this? Why not just connect the
Compass module directly to the BeagleBoard I2C interface through a
level-converter and thereby avoid using USB altogether - Both easier and
cheaper as I see it 
Best regards
Søren
Thanks, S�ren. Yes, the specific reason was to have an architecture where any computer could be substituted for the BeagleBoard simply by plugging it into the USB hub. This was great for prototyping and testing.