USB EHCI issue on OMAP3 Beagle

Hi all,

We have USB ECHI port 1 integrated with SMSC PHY (USB 3326) on Beagle Board. I have connected a high speed Mass Storage (USB harddisk) to the port, the enumeration happens fine and I am also able to do a data transfer, but after some time, it fails with below message:

ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
# ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
usb 2-1: USB disconnect, address 2
sd 0:0:0:0: [sda] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sda, sector 226436535
Buffer I/O error on device sda1, logical block 47837202
lost page write due to I/O error on sda1
Buffer I/O error on device sda1, logical block 69593106

<so on>

I have also tried connecting a self powered HUB, this fails as well. Other USB devices like Ethernet, Mouse, Keyboard, etc fail after similarly.

We have done USB eye diagram tests and found no issues with hardware as such.

Any pointers on these should be helpful, let me know if you need any further info.

FYI, I am using drivers/usb/host/ehci-omap.c on latest OMAP GIT.

Hardware reference manual for Beagle can be found here,

http://www.beagleboard.org/uploads/Beagle_HW_Reference_Manual_A_5.pdf

Regards,
Khasim

Hi all,

We have USB ECHI port 1 integrated with SMSC PHY (USB 3326) on Beagle
Board. I have connected a high speed Mass Storage (USB harddisk) to the
port, the enumeration happens fine and I am also able to do a data
transfer, but after some time, it fails with below message:

ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
# ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
usb 2-1: USB disconnect, address 2
sd 0:0:0:0: [sda] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sda, sector 226436535
Buffer I/O error on device sda1, logical block 47837202
lost page write due to I/O error on sda1
Buffer I/O error on device sda1, logical block 69593106

<so on>

I have also tried connecting a self powered HUB, this fails as well.

Other

USB devices like Ethernet, Mouse, Keyboard, etc fail after similarly.

is this mass storage really High Speed? If mouse and keyboard fail
similarly
it could be that you're using a full speed storage device.

From Beagle Manual:

"NOTE: Beagle USB Host only supports HS USB (480Mbp/S). Low Speed
  and Full Speed devices are not supported unless they are connected
through a USB Hub prior to connection to the Beagle. The OTG port
                   does support LS and FS devices."

also try applying this patch to wait a bit more for reset bit to be
cleared:

diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
index 4e065e5..3b2a228 100644
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -734,7 +734,7 @@ static int ehci_hub_control (
                         * this bit; seems too long to spin routinely...
                         */
                        retval = handshake(ehci, status_reg,
- PORT_RESET, 0, 750);
+ PORT_RESET, 0, 1250);
                        if (retval != 0) {
                                ehci_err (ehci, "port %d reset error %d\n",
                                        wIndex + 1, retval);

Op 30 apr 2008, om 10:42 heeft Syed Mohammed, Khasim het volgende
geschreven:

Hi all,

We have USB ECHI port 1 integrated with SMSC PHY (USB 3326) on
Beagle Board. I have connected a high speed Mass Storage (USB
harddisk) to the port, the enumeration happens fine and I am also
able to do a data transfer, but after some time, it fails with below
message:

ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
# ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)

I'm having similar issues with usbon the beagleboard:

usb 1-1: USB disconnect, address 2
usb 1-1.3: USB disconnect, address 7
eth0: unregister 'asix' usb-ehci-omap.0-1.3, ASIX AX8817x USB 2.0
Ethernet
usb 1-1: clear tt 4 (9082) error -19
usb 1-1: clear tt 4 (9082) error -19

I tried various combinations of the usb-ethernet adaptor with and
without hub and found:

* no hub, low cpu load + slow transfer (e.g. download over adsl):
transferring a few MiBs is OK
* hub, low cpu load + slow transfer: transferring ~ 1MiB is OK
* big cpu load (e.g. using scp): 128KiB max

I didn't dare to try a USB disk yet :slight_smile:

regards,

Koen

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Op 30 apr 2008, om 10:42 heeft Syed Mohammed, Khasim het volgende
geschreven:

Hi all,

We have USB ECHI port 1 integrated with SMSC PHY (USB 3326) on
Beagle Board. I have connected a high speed Mass Storage (USB
harddisk) to the port, the enumeration happens fine and I am also
able to do a data transfer, but after some time, it fails with below
message:

ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)
# ehci-omap ehci-omap.0: port 1 reset error -110
hub 2-0:1.0: hub_port_status failed (err = -32)

I'm having similar issues with usbon the beagleboard:

usb 1-1: USB disconnect, address 2
usb 1-1.3: USB disconnect, address 7
eth0: unregister 'asix' usb-ehci-omap.0-1.3, ASIX AX8817x USB 2.0
Ethernet
usb 1-1: clear tt 4 (9082) error -19
usb 1-1: clear tt 4 (9082) error -19

I tried various combinations of the usb-ethernet adaptor with and
without hub and found:

* no hub, low cpu load + slow transfer (e.g. download over adsl):
transferring a few MiBs is OK
* hub, low cpu load + slow transfer: transferring ~ 1MiB is OK
* big cpu load (e.g. using scp): 128KiB max

I didn't dare to try a USB disk yet :slight_smile:

false overcurrent indication maybe ?

try modprobe ehci_hcd ignore_oc=1

I've uploaded a kernel with your timeout patch and a modular ehci_hcd
(so you need to unpack modules.tgz into your rootfs) to here:

http://amethyst.openembedded.net/~koen/beagleboard/usbtest/

I'm currently 700 km from my beagleboard, so testing is appreciated :slight_smile:

regards,

Koen

Maybe someone else could test it, I'm still waiting mine to come :-p

I'm having a different problem, I'm running a 500 Mhz beagle and
trying to connect to a USRP (www.ettus.com). I've seen the firmware
load once or twice, but mostly I get this :

root@beagleboard:~# modprobe ehci_hcd ignore_oc=1
<3>Clock usbhost_48m_fck didn't enable in 100000 tries
Clock usbhost_48m_fck didn't enable in 100000 tries
<6>ehci-omap ehci-omap.0: OMAP-EHCI Host Controller
ehci-omap ehci-omap.0: OMAP-EHCI Host Controller
<6>ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 1
ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 1
<6>ehci-omap ehci-omap.0: irq 77, io mem 0x48064800
ehci-omap ehci-omap.0: irq 77, io mem 0x48064800
<6>ehci-omap ehci-omap.0: USB 0.0 started, EHCI 1.00, driver 10 Dec
2004, overcurrent ignored
ehci-omap ehci-omap.0: USB 0.0 started, EHCI 1.00, driver 10 Dec 2004,
overcurrent ignored
<6>usb usb1: configuration #1 chosen from 1 choice
usb usb1: configuration #1 chosen from 1 choice
<6>hub 1-0:1.0: USB hub found
hub 1-0:1.0: USB hub found
<6>hub 1-0:1.0: 3 ports detected
hub 1-0:1.0: 3 ports detected
root@beagleboard:~# lsusb
Bus 1 Device 1: ID 1d6b:0002
Bus 001 Device 001: ID 1d6b:0002
root@beagleboard:~# <6>usb 1-1: new high speed USB device using
ehci-omap and address 2
usb 1-1: new high speed USB device using ehci-omap and address 2
<6>usb 1-1: configuration #1 chosen from 1 choice
usb 1-1: configuration #1 chosen from 1 choice

root@beagleboard:~#
root@beagleboard:~# usrper load_standard_bits
usrper: found unconfigured usrp; needs firmware.
<7>usb 1-1: usbfs: USBDEVFS_CONTROL failed cmd usrper rqt 64 rq 160
len 6 ret -71
write_internal_ram failed: error sending control message: Protocol error
usrp: failed to load firmware /usr/share/usrp/rev4/std.ihx.
usrper: failed
root@beagleboard:~#

Was usbdevfs mounted with:

mount -t usbdevfs none /proc/bus/usb

?

regards,

Koen

Yes, usbfs is mounted.

I collected the errors after trying to load the USRP firmware with the
.22 kernel installed.

root@beagleboard:/usr/share/gnuradio/examples/audio# lsusb
Bus 001 Device 008: ID fffe:0002
Bus 001 Device 007: ID 07a6:8515 ADMtek, Inc.
Bus 001 Device 004: ID 0d8c:0103 C-Media Electronics, Inc.
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc.
Bus 001 Device 001: ID 0000:0000
Bus 1 Device 8: ID fffe:0002
Bus 1 Device 7: ID 07a6:8515 ADMtek, Inc.
Bus 1 Device 1: ID 0000:0000
Bus 1 Device 4: ID 0d8c:0103 C-Media Electronics, Inc.
Bus 1 Device 2: ID 05e3:0608 Genesys Logic, Inc.
root@beagleboard:/usr/share/gnuradio/examples/audio# usrper load_standard_bits
usrper: found unconfigured usrp; needs firmware.
<6>usb 1-1.1: USB disconnect, address 8
usb 1-1.1: USB disconnect, address 8
<6>usb 1-1.1: new high speed USB device using ehci-omap and address 9
usb 1-1.1: new high speed USB device using ehci-omap and address 9
<6>usb 1-1.1: configuration #1 chosen from 1 choice
usb 1-1.1: configuration #1 chosen from 1 choice
<7>usb 1-1.1: usbfs: USBDEVFS_CONTROL failed cmd usrper rqt 64 rq 2
len 64 ret -71
usb_control_msg failed: error se<7>usb 1-1.1: usbfs: USBDEVFS_CONTROL
failed cmd usrper rqt 64 rq 9 len 1 ret -71
nding control message: Protocol <7>usb 1-1.1: usbfs: USBDEVFS_CONTROL
failed cmd usrper rqt 64 rq 9 len 1 ret -71
error
usb_control_msg failed: e<7>usb 1-1.1: usbfs: USBDEVFS_CONTROL failed
cmd usrper rqt 64 rq 9 len 1 ret -71
rror sending control message: Pr<7>usb 1-1.1: usbfs: USBDEVFS_CONTROL
failed cmd usrper rqt 64 rq 9 len 1 ret -71
otocol error
usb_control_msg fa<7>usb 1-1.1: usbfs: USBDEVFS_CONTROL failed cmd
usrper rqt 64 rq 9 len 1 ret -71
iled: error sending control mess<7>usb 1-1.1: usbfs: USBDEVFS_CONTROL
failed cmd usrper rqt 64 rq 9 len 1 ret -71
age: Protocol error
usb_control_msg failed: error sending control message: Protocol error
usb_control_msg failed: error sending control message: Protocol error
usb_control_msg failed: error sending control message: Protocol error
usb_control_msg failed: error sending control message: Protocol error
usrp: failed to load fpga bitstream /usr/share/usrp/rev4/std_2rxhb_2tx.rbf.
usrper: failed
root@beagleboard:/usr/share/gnuradio/examples/audio# <6>usb 1-1.1: USB
disconnect, address 9
usb 1-1.1: USB disconnect, address 9
<6>usb 1-1.3: USB disconnect, address 7
usb 1-1.3: USB disconnect, address 7
<6>usb 1-1.4: USB disconnect, address 4
usb 1-1.4: USB disconnect, address 4
<3>ehci-omap ehci-omap.0: port 1 reset error -110
ehci-omap ehci-omap.0: port 1 reset error -110
<3>hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: hub_port_status failed (err = -32)
<3>ehci-omap ehci-omap.0: port 1 reset error -110
ehci-omap ehci-omap.0: port 1 reset error -110
<3>hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: hub_port_status failed (err = -32)
<3>ehci-omap ehci-omap.0: port 1 reset error -110
ehci-omap ehci-omap.0: port 1 reset error -110
<3>hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: hub_port_status failed (err = -32)
<3>ehci-omap ehci-omap.0: port 1 reset error -110
ehci-omap ehci-omap.0: port 1 reset error -110
<3>hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: hub_port_status failed (err = -32)
<3>ehci-omap ehci-omap.0: port 1 reset error -110
ehci-omap ehci-omap.0: port 1 reset error -110
<3>hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: hub_port_status failed (err = -32)
<3>hub 1-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
hub 1-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
<3>ehci-omap ehci-omap.0: port 1 reset error -110
ehci-omap ehci-omap.0: port 1 reset error -110
<3>hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: hub_port_status failed (err = -32)
<3>ehci-omap ehci-omap.0: port 1 reset error -110
ehci-omap ehci-omap.0: port 1 reset error -110
<3>hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: hub_port_status failed (err = -32)
<3>ehci-omap ehci-omap.0: port 1 reset error -110
ehci-omap ehci-omap.0: port 1 reset error -110
<3>hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: hub_port_status failed (err = -32)
<3>ehci-omap ehci-omap.0: port 1 reset error -110
ehci-omap ehci-omap.0: port 1 reset error -110
<3>hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: hub_port_status failed (err = -32)
<3>ehci-omap ehci-omap.0: port 1 reset error -110
ehci-omap ehci-omap.0: port 1 reset error -110
<3>hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: hub_port_status failed (err = -32)
<3>hub 1-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
hub 1-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
<3>ehci-omap ehci-omap.0: port 1 reset error -110
ehci-omap ehci-omap.0: port 1 reset error -110
<3>hub 1-0:1.0: hub_port_status failed (err = -32)
hub 1-0:1.0: hub_port_status failed (err = -32)