Track down EHCI and companion errors on rk3xxx systems

Diederik de Haas diederik at cknow-tech.com
Tue Jan 13 13:15:59 PST 2026


On Tue Jan 13, 2026 at 5:22 PM CET, Alan Stern wrote:
> On Tue, Jan 13, 2026 at 05:16:05PM +0100, Diederik de Haas wrote:
>> On Tue Jan 13, 2026 at 4:47 PM CET, Alan Stern wrote:
>> > Is this repeatable?
>> 
>> It doesn't happen every time, but it did actually happen another time.
>> After that test, I shutdown the device and unplugged the keyboard
>> adapter. Then I powered on the device and waited till it had completed
>> the boot process.
>> Logged in via SSH, retrieved my usual boot process data (what you saw in
>> my 'paste' starting with ``uname -a``) and then did ``dmesg -W``.
>> 
>> Then I plugged in my keyboard adapter in the bottom port and noticed it
>> didn't work (straight away). This time I waited, pressed various keys on
>> my keyboard, turned the keyboard off and on again, pressed some more
>> keys ... and after ~20 (or 30?) seconds, my keyboard started to work.
>> When I then switched back to my SSH session, I saw dmesg had (then)
>> printed messages indicating it saw the adapter plugged in and ``lsusb``
>> did see the device.
>> 
>> But that ~20 seconds is key here. Normally I would conclude that "it
>> doesn't work" after (say) >5 seconds of nothing happening.
>> 
>> > If it is, try doing the following.  After a fresh boot, log in via SSH 
>> > and turn on dynamic debugging for USB:
>> >
>> > 	echo module usbcore =p >/sys/kernel/debug/dynamic_debug/control
>> >
>> > and clear the kernel's log buffer:
>> >
>> > 	dmesg -C
>> >
>> > Then plug the keyboard adapter into the non-working bottom USB2 port and 
>> > wait a short time (say, 30 seconds).
>> >
>> > Then get a copy of the dmesg output and post it here.  Also, check to 
>> > see whether the keyboard is working.  In fact, you should check the 
>> > keyboard during that 30-second wait, so you will know just how long the 
>> > delay was before it started working.
>> 
>> I'll try doing the SSH session via my laptop, which
>> hopefully allows timings to be closer (but likely still not precise).
>
> Exact timing isn't important.  An approximate number that can be 
> compared with the log is what we want.

I'm now wondering if there's something wrong with the Quartz64-A ...
I already thought that it took way too long before I got a login prompt.

In my first attempt I noticed I did NOT have the "Warning! ehci_hcd
should always be loaded before uhci_hcd and ohci_hcd, not after"
It took so long I forgot to keep counting, but most of all I forgot the
dynamic debug command, so I tried again ...

This time I did the dynamic debug command and the above "Warning!" was
present. Plugged in the keyboard adapter, started a stopwatch on my
phone and monitored the ``dmesg -W`` for any changes ...

It took slightly more then a MINUTE for anything to appear in dmesg :-O

```
root at quartz64a:~# dmesg -W
[  357.343890] usb usb4: usb wakeup-resume
[  357.343970] usb usb4: usb auto-resume
[  357.344023] hub 4-0:1.0: hub_resume
[  357.344243] usb usb4-port1: status 0501 change 0001
[  357.446845] hub 4-0:1.0: state 7 ports 1 chg 0002 evt 0000
[  357.447094] usb usb4-port1: status 0501, change 0000, 480 Mb/s
[  357.510889] hub 4-0:1.0: port_wait_reset: err = -16
[  357.510909] usb usb2: usb wakeup-resume
[  357.510956] usb usb4-port1: not enabled, trying reset again...
[  357.510980] usb usb2: usb auto-resume
[  357.586708] hub 2-0:1.0: hub_resume
[  357.586936] usb usb2-port1: status 0101 change 0001
[  357.690841] hub 2-0:1.0: state 7 ports 1 chg 0002 evt 0000
[  357.691090] usb usb2-port1: status 0101, change 0000, 12 Mb/s
[  357.714843] usb usb4-port1: not reset yet, waiting 200ms
[  357.874717] usb 2-1: new full-speed USB device number 2 using ohci-platform
[  357.918838] usb usb4-port1: not reset yet, waiting 200ms
[  358.082679] usb 2-1: ep0 maxpacket = 32
[  358.087855] usb 2-1: skipped 1 descriptor after interface
[  358.087926] usb 2-1: skipped 1 descriptor after interface
[  358.089798] usb 2-1: default language 0x0409
[  358.093839] usb 2-1: udev 2, busnum 2, minor = 129
[  358.093904] usb 2-1: New USB device found, idVendor=1997, idProduct=2433, bcdDevice= 1.06
[  358.094803] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  358.095481] usb 2-1: Product: mini keyboard
[  358.095889] usb 2-1: Manufacturer:
[  358.097629] usb 2-1: usb_probe_device
[  358.097691] usb 2-1: configuration #1 chosen from 1 choice
[  358.099335] usb 2-1: adding 2-1:1.0 (config #1, interface 0)
[  358.100603] usb 2-1: adding 2-1:1.1 (config #1, interface 1)
[  358.101371] hub 2-0:1.0: state 7 ports 1 chg 0000 evt 0002
[  358.126129] usb usb4-port1: not reset yet, waiting 200ms
[  358.203797] hid: raw HID events driver (C) Jiri Kosina
[  358.227055] usbhid 2-1:1.0: usb_probe_interface
[  358.227080] usbhid 2-1:1.0: usb_probe_interface - got id
[  358.231307] usbhid 2-1:1.1: usb_probe_interface
[  358.231331] usbhid 2-1:1.1: usb_probe_interface - got id
[  358.236333] usbcore: registered new interface driver usbhid
[  358.236850] usbhid: USB HID core driver
[  358.267050] input:   mini keyboard as /devices/platform/fd8c0000.usb/usb2/2-1/2-1:1.0/0003:1997:2433.0001/input/input2
[  358.326722] usb usb4-port1: not reset yet, waiting 200ms
[  358.326992] hub 4-0:1.0: state 7 ports 1 chg 0000 evt 0002
[  358.327125] usb usb4-port1: status 0100, change 0001, 12 Mb/s
[  358.368453] hid-generic 0003:1997:2433.0001: input,hidraw0: USB HID v1.01 Keyboard [  mini keyboard] on usb-fd8c0000.usb-1/input0
[  358.372573] input:   mini keyboard Mouse as /devices/platform/fd8c0000.usb/usb2/2-1/2-1:1.1/0003:1997:2433.0002/input/input3
[  358.376787] input:   mini keyboard System Control as /devices/platform/fd8c0000.usb/usb2/2-1/2-1:1.1/0003:1997:2433.0002/input/input4
[  358.432171] input:   mini keyboard Consumer Control as /devices/platform/fd8c0000.usb/usb2/2-1/2-1:1.1/0003:1997:2433.0002/input/input5
[  358.434480] hid-generic 0003:1997:2433.0002: input,hidraw1: USB HID v1.01 Mouse [  mini keyboard] on usb-fd8c0000.usb-1/input1
[  358.455095] usb usb4-port1: debounce total 100ms stable 100ms status 0x100
[  358.455209] hub 4-0:1.0: hub_suspend
[  358.455285] usb usb4: bus auto-suspend, wakeup 1
^C
root at quartz64a:~# lsusb -tv
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=ohci-platform/1p, 12M
    ID 1d6b:0001 Linux Foundation 1.1 root hub
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=ohci-platform/1p, 12M
    ID 1d6b:0001 Linux Foundation 1.1 root hub
    |__ Port 001: Dev 002, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        ID 1997:2433 Shenzhen Riitek Technology Co., Ltd wireless mini keyboard with touchpad
    |__ Port 001: Dev 002, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        ID 1997:2433 Shenzhen Riitek Technology Co., Ltd wireless mini keyboard with touchpad
/:  Bus 003.Port 001: Dev 001, Class=root_hub, Driver=ehci-platform/1p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
/:  Bus 004.Port 001: Dev 001, Class=root_hub, Driver=ehci-platform/1p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
/:  Bus 005.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
/:  Bus 006.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
/:  Bus 007.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
/:  Bus 008.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
```

HTH,
  Diederik



More information about the Linux-rockchip mailing list