USB port not enumerating devices (error -71)

Hello.

I’m one of the programmers on a FIRST Robotics Competition team, and I’m trying to do vision processing on the Jetson using a USB webcam.

In an attempt to get the camera to work, I tried attaching it to a power/data Y-splitter cable
(here: http://www.amazon.com/Power-Enhancer-Female-Charge-Extension/dp/B00NIGO4NM), with the data end attached to the Jetson and the power end attached to a RoboRIO.

It worked for a bit, but really slowly and intermittently.
Then, it stopped working altogether, and now I can’t use any USB devices with the USB port at all.

I was using a USB keyboard for console input, but as of now it doesn’t seem to work.
Whenever I plug it in, the console outputs the following errors:

usb 2-1: device not accepting address 2, error -71
usb 2-1: device not accepting address 3, error -71
usb 2-1: device descriptor read/64, error -71
usb 2-1: device descriptor read/64, error -71
usb 2-1: device descriptor read/64, error -71
usb 2-1: device descriptor read/64, error -71
hub 2-0:1.0: unable to enumerate USB device on port 1

A fair bit of google searching has brought up USB overcurrent issues and other issues, which I suspect is the issue.

Rebooting, depowering the device for several minutes, and connecting through a self-powered USB hub haven’t helped. As for the latter: the self-powered hub lights up, but no devices are detected when I plug it in. There aren’t even any error messages on the console.

I’m really, really afraid I might have permanently broken something on the board.

Anyone have any ideas?

1 Like

A USB port is designed to offer a certain amount of power from the root HUB. If this isn’t enough, a powered HUB can provide the power from an outside source…this is what the Y-cable appears to be (however, the Y-cable doesn’t have a wall adapter, it grabs power from your RoboRIO).

Technically, for a device to be certified as compliant to a given USB standard, the device has to deal with over-current based on a standard current. I’ve found drawing too much USB power is almost always “not as expected” compared to what the standard says. For this reason I always use powered HUBs whenever I have an unknown set of devices on the port (simple stuff like keyboard and mouse I don’t bother doing this with). If for some reason the port or HUB does get into the wrong state, there are times when reducing or rebooting might not set things back to normal. One reason for this is that there are always sleep and power off requirements to deliver tiny amounts of power as well (things like a mouse or keyboard could then trigger wake up). If you have just a mouse or keyboard and you unplug everything from USB, remove physical power for several minutes, and then reconnect power plus just the one device, does that device then work?

If not, does the micro-port show up on your Linux host in recovery mode? It is possible that hardware is bad, but if for some other bizarre reason software is involved in incorrect setting of power states on USB a flash could fix the issue (though I would not use that Y-cable again if things work…the camera should be debugged on a powered HUB first, and only then migrated to other test conditions). Also, even if you end up replacing the board, recovery mode could allow you to clone partitions to recover your work. See:
http://elinux.org/Jetson/Cloning

Well, I’ve certainly learned not to use the Y-cable now.

Unplugging and depowering the Jetson for several minutes didn’t work.

And yes, the micro-port is visible from my host computer (lsusb shows an “NVidia Corp.” device.).
In fact, I’m trying to reflash the TK1 right now.

Nope, reflashing didn’t fix the issue. Looks like it’s HW after all.

I feel your pain. I once had a popular hot-swap drive bay die and take out all of the hard drives. Research on what I thought was a good product turned up that the bay had an enormous failure rate after one year, and that about half of those failures ended up destroying a hard drive (none of which involved hot swap, the failures were always on ordinary hard drive activity).

One reason to not use a Y-cable like that is that the source of power from another USB port means you still can’t run in excess of the cable-powered current rating; when using a true external powered HUB, the USB detects this and the total power allowed goes up (the wall wart or other power supply can handle more power output and the standards current limit at a higher current).