USB EHCI problems

Hi,

I've seen a number of people having problems with the USB host port
(EHCI) on
the Rev C beagleboards. I seem to be having the same problem and
after a few
days of random lockups, I found I can easily reproduce it by reading
data
from a USB disk with dd. After a few seconds of I/O I get the
following:

beagleboard login: root
root@beagleboard:~# dd if=/dev/sda bs=1M > /dev/null
hub 1-0:1.0: port 2 disabled by hub (EMI?), re-enabling...
usb 1-2: USB disconnect, address 2
sd 0:0:0:0: [sda] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sda, sector 647152
__ratelimit: 3 callbacks suppressed
Buffer I/O error on device sda, logical block 80894
Buffer I/O error on device sda, logical block 80895
sd 0:0:0:0: [sda] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sda, sector 647168
Buffer I/O error on device sda, logical block 80896
Buffer I/O error on device sda, logical block 80897
Buffer I/O error on device sda, logical block 80898
Buffer I/O error on device sda, logical block 80899
Buffer I/O error on device sda, logical block 80900
Buffer I/O error on device sda, logical block 80901
Buffer I/O error on device sda, logical block 80902
Buffer I/O error on device sda, logical block 80903
sd 0:0:0:0: [sda] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sda, sector 647408
dd: /dev/sda: Input/output error
root@beagleboard:~#

And the usb devices are dead from then on - unplugging and re-plugging
aren't
noticed, lsusb locks up or just reports the two (EHCI & MUSB) root
hubs.
This happens with 2 USB disks: a 250Gb hard disk and a 4Gb flash
drive.

The same happens with every kernel I've tried - the angstrom demos,
the Rev C
validation images, the ones from http://www.rcn-ee.com/deb/kernel/ and
ones
I've built myself from the OpenEmbedded patches. (2.6.28 and 2.6.29).

I've also updated u-boot from 2009.01-dirty (as supplied) to 2009.03.

I've tried with a couple of power supplies, USB power and also with
several
hubs (and no hub).

Is there anything else I can try to fix this?

Thanks

Rob

Hi Rob,

Koen just pushed another ehci defconfig change to the angstrom's source tree..

http://cgit.openembedded.net/cgit.cgi?url=openembedded/commit/&id=f1ce646bf9e343b68bc602964cb462ed64f4a3dc

I've just uploaded a build based on that here:

http://www.rcn-ee.com/deb/kernel/CC-beagle-v2.6.29-58cf2f1-oer32

I haven't tested it yet to see if it solves the problem i was seeing..

Regards,

Hi Rob,

Koen just pushed another ehci defconfig change to the angstrom's source tree..

Openembedded-Hotels, Villen, Unterkünfte in Leipzig

I've just uploaded a build based on that here:

http://www.rcn-ee.com/deb/kernel/CC-beagle-v2.6.29-58cf2f1-oer32

I haven't tested it yet to see if it solves the problem i was seeing..

Regards,
--
Robert Nelsonhttp://www.rcn-ee.com/

Hi,

I've just given this a try and I still get the same error :frowning:

Regards

Rob

I get the same error. After a while i'm getting:

root@beagleboard:~# usb 1-2.1: USB disconnect, address 3
hub 1-0:1.0: port 2 disabled by hub (EMI?), re-enabling...
usb 1-2: USB disconnect, address 2
usb 1-2.3: USB disconnect, address 4
eth0: unregister 'asix' usb-ehci-omap.0-2.3, ASIX AX88772 USB 2.0
Ethernet
usb 1-2.4: USB disconnect, address 5

I tried couple kernels with the same result.

Hello,

I’m getting similar issues with USB, almost only when creating heavy traffic like file transfers. The (powered) USB-HUB turns off all LEDs (indicating connected devices), and I’ve to reset the board to get it back running.
Connected to the USB hub is a WIFI adapter and an USB memory stick.

I’ve a, not fully related, follow-up question; How to build a newer kernel revision with BitBake/OpenEmbedded? When I build the kernel some version with some patches are build, where to define that the latest is build?

Wkr,
Joep

2009/5/10 tenfoot <tenfoot@gmail.com>

Hi,

There has been quite a thread about the disconnect problem of the USB.
I've had similar problems and I decided to return the board.
Thankfully I just (well half an hour ago) received a new board and it
works! Somehow I have the feeling that the tolerances on the board are
slightly off and some people have problems with their USB.

I am not sure whether the reported problems are solved by replacing
the board or that some kind of software trick could work as well. I am
very happy at this moment as I can show my company tomorrow what the
potential future of computing could be.

I would recommend to read the thread started by me (something with USB
and disconnect), because some people have given tips and tricks that
could help...

Kind regards, Eelco

For what it is worth, I tested the board that Eelco returned. After a week of trying to make it fail, I could not. So, I had them send a new one, which is the one he is referring to.

Gerald

Does that mean i should return board to Digikey and request new one ?

DigiKey does not handle the repairs. RMAs are through beagleboard.org.

We have no board to replace anyones boards at the moment. Fell free to send them back and in another 3-4 weeks we will have replacements to send you.

As I already siad, the board that was returned did not fail. I tested it myself So, it is unclear that simply getting a new board will fix anyones problems. It could be related to a noisy power supply where some board are more tolerant than others of this noise.

Gerald

I'll try it with the best power supply i got. I power radio receivers
from it.

Gerald,

Thank you for returning a new board, as somehow all problems have been
solved. I have no idea what the main difference is, but now I am able
to copy a 350MB file from USB stick to MMC (Í've tried several things
and it didn't work at all with my old board) and when running the
chameleon man demo the USB keeps on working. And the board now is
perfectly stable with one of my crappiest psu's. Quite strange...

Do you think tolerances could be the explanation? As people who have
read my thread might know, I've gone to quite some lengths to assure
that it was a HW faillure. Maybe there is some sensitive point in the
current design?

Regards, Eelco

I agree that it could have something to do with tolerances and slight
board variations. I couldn't solve the problems myself with 5
different kernel versions,3 different MMC cards, 3 different PSU's, 3
different keyboard/mouse combo's, 3 different USB keys and a single
USB to ethernet interface. At a certain point I really didn't have any
options, so I was happy with the suggestion of Gerald to return the
board and thankfully it has solved my problems. Currently I am really
happy as I am able to show my company that the cutting edge of mobile
processors is able to replace simple desktop machines.

Regards, Eelco

I think we may have a random noise issue that may be locking up something. Unfortuantely, until I can get something to fail, I can’t do an analysis on what is going on. I certainly can’t afford to transfer large files multiples of time in production, or we will be shipping 50 boards a week. We are chasing a similar issue on another board inside TI at the moment. It is a lot worse than Beagle. I am hoping that we can get some inforamtion from there. They are looking at a noisy 1.8V rail to see if that may be the issue. I hope to get some feedback soon on their progress.

Gerald

eelcor,

I'm glad the new hardware was able to fix the problem. Boy, I hate
problems that are hard to reproduce. One possibility in this case is
a timing problem somewhere in the logic where a signal ALMOST has
sufficient set-up time for a clock. Most of the time it works, but a
voltage dip or temperature increase causes the signal to be missed, or
worse, become metastable. (I never metastable I liked.) Sometimes
this can be fixed in software -- perhaps there is a signal that could
be sampled on the opposite edge of the clock, providing a stable
signal at all times. Sometime software can perform extra reads on a
metastable register: the first to see if it has changed at all, and a
second read to see which value it really changed to.

One reason the new board could work while the old one failed is that a
component on the new board is just enough faster or slower so that the
timing issue does not occur -- or is so rare that nobody observes it.
For example, a different voltage regulator or passives can generate a
voltage that is a percent higher or lower... just enough to expose or
hide the timing issue.

I think I mentioned in the other stream a problem I had with a board
that would fail after a couple hours, and only at high temperature.
That was nasty to find. Turned out to have an easy software solution,
so happy ending!

These issues are tough to track down. Funny thing is that there are only two components in the circuit, OMAP and the SMSC PHY. This is a similar issue we had on Port1 of the OMAP3530. When we moved to port2 it appeared to be resolved. So, it may be an issue inside the OMAP or the PHY.

One thing we noticed on Port1 was that if we slowed down the processor, the issue went away, even though the interface was still 60MHZ. Could someone with a questionable board slow the processor speed down and see if that affects the results?

Gerald

What is the correct way to slow the CPU? I can try it.

We've just got a beagleboard at work (also rev C2) so I tried the same
test (dumping the contents of a USB disk) on both my board (which I
was using in my original email) and work's board. Mine always fails
after a minute or so, but the work's one doesn't show any error and I
was able to read the disk several times over (a total of about 40Gb of
data) without a problem. Everything was the same apart from the board
(i.e. same power supply, SD card, kernel, u-boot, NAND contents - both
in factory state) - so it definitely looks like a hardware issue.

How would I go about changing the clock speed to see if that fixes
anything?

Regards

Rob

This might be interesting for other things as well.
I noticed that my kingston 4gb sdhc card does not work with the latest
kernels but used to work on .27 or so.
Also I noticed some usb issues with EHCI (1.1 webcam on hub not
working; hauppage pvr working directly on ehci works, but if connected
to the hub it does not work any more; apparently the reset after
loading the firmware does not get thru. This happens with several
brands hub, but of course it it could be they have the same chip
inside). Odd thing is that the very same device on the very same hub
works like a charm under opensuse 11.1 (and also worked on 2.6.11 or
so on NLSU2 which is much slower).
Of course I have no idea if that is the ehci hw or the ehci driver
that is causing the issue (and no idea how to further diagnose this).

Frans

I have a RevC board that very repeatably fails with a "hub 1-0:1.0:
port 2 disabled by hub (EMI?), re-enabling... " message. The board is
powered by a 5V 2A switching power supply. It is connected to a USB
2.0 hub which is itself powered by a 2A power supply.

I have tried an experiment where I put the board into a cold chamber,
took it to 0C, and ran the same test - to the same result. I don't see
any significant variance in the time to failure. This would tend to
exclude any marginal timing issues that are exacerbated by low
temperature.

I could get a heat-gun and run the other side of the test if anybody
thinks that would be useful.

EHCI is known to have issues… try booting the Angstrom Demo from the Angstrom guys and see if you lose EHCI randomly still (they have a newer u-boot in their SD image that fixes some EHCI issues).

http://www.angstrom-distribution.org/demo/beagleboard/

If your problems go away… replace your u-boot with the one from the Angstrom SD image.