OpenWrt 21.02 & Asus AC68U unable to see usb 3.0 drives

Hello, I have a problem with my device which I believe is an OpenWRT based problem and I am looking for help in resolving this. I know the AC68U is not exactly a popular router on this forum because it uses broadcom wireless chips so the wifi is literally useless in OpenWRT. People tend to really dislike broadcom on this forum and rightfully so, but I am hoping everyone can look past the dislike for broadcom and help me get the USB issue fixed.

I currently use an Asus RT-AC68U all in 1 router as a wired only, main router. The AC68U has 2 USB ports. The first is a USB 3.0 port, the second is a USB 2.0 port. I noticed that if I plug in a usb 3.0 drive into the 3.0 port that OpenWRT is unable to "see" the drive. If i ssh into the router and issue a command "fdisk -l" (thats a lowercase L for you folks out there wondering) i do not see the drive show up. This problem exists across the 3 known good working USB 3.0 drives I tested.

However, if I plug in a USB 3.0 drive into the USB 2.0 port then OpenWRT is able to correctly "see" and mount it. Also, using the USB 2.0 port allows the USB 3.0 drive to correctly show up with the terminal command "Fdisk -l".
As a further annoyance, If i plug in an older USB 2.0 drive into either the USB 2.0 port OR the USB 3.0 port, the 2.0 drive IS correctly identified and mounted. What this means to me is that the USB 3.0 port works correctly in USB 2.0 mode, but not in USB 3.0 mode.
This also tells me that the 5V power supply for both ports are properly working so that I know whatever problem this is, it is not a voltage problem.
By the way I have a second AC68U and as a troubleshooting step I installed OpenWRT 21.02 on it and this problem is repeated exactly as the first one. So that tells me that it is probably not a hardware issue. As another troubleshooting step I also installed the factory Asus firmware on the router and it correctly identifies and mounts the USB 3.0 drive in USB 3.0 mode. This tells me that it's more then likely not a hardware issue.
I did find some usb related errors in the system log and I will include them now.

Wed Sep 22 15:41:35 2021 user.info kernel: [    5.663860] kmodloader: loading kernel modules from /etc/modules-boot.d/*
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.747871] usbcore: registered new interface driver usbfs
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.753421] usbcore: registered new interface driver hub
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.758762] usbcore: registered new device driver usb
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.766607] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.773745] ehci-fsl: Freescale EHCI Host controller driver
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.779954] ehci-platform: EHCI generic platform driver
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.787145] ehci-platform 18021000.usb: EHCI Host Controller
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.792031] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.792900] ehci-platform 18021000.usb: new USB bus registered, assigned bus number 1
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.799690] ohci-platform: OHCI generic platform driver
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.806929] ehci-platform 18021000.usb: irq 37, io mem 0x18021000
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.812194] ohci-platform 18022000.usb: Generic Platform OHCI controller
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.824804] ohci-platform 18022000.usb: new USB bus registered, assigned bus number 2
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.832716] ohci-platform 18022000.usb: irq 37, io mem 0x18022000
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.842632] ehci-platform 18021000.usb: USB 2.0 started, EHCI 1.00
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.849258] hub 1-0:1.0: USB hub found
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.853180] hub 1-0:1.0: 2 ports detected
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.904641] hub 2-0:1.0: USB hub found
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.908463] hub 2-0:1.0: 2 ports detected
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.980134] xhci-hcd 18023000.usb: xHCI Host Controller
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.985360] xhci-hcd 18023000.usb: new USB bus registered, assigned bus number 3
Wed Sep 22 15:41:35 2021 kern.info kernel: [    5.992967] xhci-hcd 18023000.usb: hcc params 0x02501164 hci version 0x100 quirks 0x0000001000010010
Wed Sep 22 15:41:35 2021 kern.info kernel: [    6.002116] xhci-hcd 18023000.usb: irq 38, io mem 0x18023000
Wed Sep 22 15:41:35 2021 kern.info kernel: [    6.008407] hub 3-0:1.0: USB hub found
Wed Sep 22 15:41:35 2021 kern.err kernel: [    6.012286] hub 3-0:1.0: config failed, hub doesn't have any ports! (err -19)
Wed Sep 22 15:41:35 2021 kern.info kernel: [    6.019522] xhci-hcd 18023000.usb: xHCI Host Controller
Wed Sep 22 15:41:35 2021 kern.info kernel: [    6.024754] xhci-hcd 18023000.usb: new USB bus registered, assigned bus number 4
Wed Sep 22 15:41:35 2021 kern.info kernel: [    6.032132] xhci-hcd 18023000.usb: Host supports USB 3.0 SuperSpeed
Wed Sep 22 15:41:35 2021 kern.info kernel: [    6.050168] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
Wed Sep 22 15:41:35 2021 kern.info kernel: [    6.058626] hub 4-0:1.0: USB hub found
Wed Sep 22 15:41:35 2021 kern.info kernel: [    6.062431] hub 4-0:1.0: 1 port detected
Wed Sep 22 15:41:35 2021 user.info kernel: [    6.068081] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
Wed Sep 22 15:41:48 2021 daemon.info samba4-server: io_uring module found, enabling VFS io_uring. (also needs Kernel 5.4+ Support)
Wed Sep 22 15:41:49 2021 daemon.info samba4-server: io_uring module found, enabling VFS io_uring. (also needs Kernel 5.4+ Support)
Wed Sep 22 15:41:49 2021 daemon.info samba4-server: io_uring module found, enabling VFS io_uring. (also needs Kernel 5.4+ Support)
Wed Sep 22 15:41:49 2021 daemon.info procd: - init complete -
Wed Sep 22 15:41:51 2021 daemon.err smbd[2309]: [2021/09/22 15:41:51.133787,  0] ../../lib/util/become_daemon.c:136(daemon_ready)
Wed Sep 22 15:41:51 2021 daemon.err smbd[2309]:   daemon_ready: daemon 'smbd' finished starting up and ready to serve connections
Wed Sep 22 15:52:02 2021 kern.info kernel: [   52.920167] usb 4-1: new SuperSpeed Gen 1 USB device number 2 using xhci-hcd
Wed Sep 22 15:52:02 2021 kern.err kernel: [   52.959830] xhci-hcd 18023000.usb: ERROR: unexpected command completion code 0x11.
Wed Sep 22 15:52:02 2021 kern.warn kernel: [   53.000284] uas: probe of 4-1:1.0 failed with error -12
Wed Sep 22 15:52:18 2021 daemon.err uhttpd[1591]: luci: accepted login on / for root from 192.168.120.22
Wed Sep 22 15:54:49 2021 kern.info kernel: [  219.570231] usb 4-1: USB disconnect, device number 2
Wed Sep 22 15:55:13 2021 kern.info kernel: [  244.030222] usb 4-1: new SuperSpeed Gen 1 USB device number 3 using xhci-hcd
Wed Sep 22 15:55:13 2021 kern.err kernel: [  244.069416] xhci-hcd 18023000.usb: ERROR: unexpected command completion code 0x11.
Wed Sep 22 15:55:13 2021 kern.warn kernel: [  244.110386] uas: probe of 4-1:1.0 failed with error -12

And here is the output of cat /proc/cpuinfo...

root@RT-AC68U-FA00:~# cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 0 (v7l)
BogoMIPS        : 1200.00
Features        : half thumb fastmult edsp tls 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x3
CPU part        : 0xc09
CPU revision    : 0

processor       : 1
model name      : ARMv7 Processor rev 0 (v7l)
BogoMIPS        : 1200.00
Features        : half thumb fastmult edsp tls 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x3
CPU part        : 0xc09
CPU revision    : 0

Hardware        : BCM5301X
Revision        : 0000
Serial          : 0000000000000000
root@RT-AC68U-FA00:~# 

Here are some helpful links about the AC68U's hardware for your reading pleasure.

deviwiki.com/wiki/ASUS_RT-AC68U

I really hope that this can be resolved as I feel my samba speed is currently crippled to USB 2.0 speeds and I would LOVE to get this fixed. If anyone needs more info, more syslogs or kernel logs or anything else please ask!

fwiw, have you verified the USB3 drive is detected with stock Asus firmware?

I only suggest this because I have witnessed USB3 issues with stock and open source firmwares (DDwrt, Tomato) with other brands of routers running same ancient Broadcom BCM4708A0 SoC in the past where the device is not detected. It may be dependent on the USB3 device. eg. one may work but many others not detected etc.

If I use a USB2 extension lead with a USB3 device, plugged into USB3 port, it always works, but at USB2 speeds.

Thank you for the reply, as i stated in the original post:

As another troubleshooting step I also installed the factory Asus firmware on the router and it correctly identifies and mounts the USB 3.0 drive in USB 3.0 mode. This tells me that it's more then likely not a hardware issue.

In other words, the stock firmware works fine with a USB 3.0 drive without the need for a USB extension cable or a hub.

You brought up a good point about 3rd party firmware. I have in the past used Fresh Tomato Ver. 2021.5 firmware on this router and it correctly identifies and mounts any USB 3.0 drive I throw at it. So as a re-cap, stock firmware works fine with 3.0 drive, Fresh tomato firmware works fine with 3.0 drive, but OpenWRT does not identify or mount any of my 3.0 drives, and I have tested 3 of them.

Another good point you brought up, I tried using a USB 2.0 extension on the routers 3.0 port and this does indeed allow the router to correctly identify and mount the drive. I also tried using a USB 2.0 4 port hub and this also allows the router to correctly identify and mount the drive. This leads me to believe it probably is not a drive issue either.
thank you again.

As best I can tell, the USB3 device attachment is failing - see the xhci-hcd error messages in the last few lines of your log. Some googling might turn up something useful; I had a quick look but didn't see anything directly pertinent, but there are some obscure reasons why this might fail at the driver level so a more exhaustive search than I could make might be needed. Have you tried running 19.07.8 to see whether this is a regression? You seem to have tried a USB2 hub - have you tried a USB3 hub? Have you tried these USB3 devices on other Linux hosts with different hardware (CPU architecture, USB chips etc) particularly with verbose logging enabled and noting kernel versions. Also use tools like lsusb to give details of the actual USB3 devices, in both working and non-working states. If you can suppress the UAS (USB as SCSI) driver probing that might also help illuminate the issue.

Thank you for the reply, in response to your comments, yes your comment about disabling UAS I went and uninstalled one of the packages called kmod-usb-storage-extras which says it enables support for extra USB related things. After that I had to install the package kmod-usb-storage-uas which allowed my 2.0TB UAS drive to be correctly identified on a 2.0 port but not the 3.0 port. I did try this drive on other computers and laptops and it works fine! I did not try 19.07 as I am unable to make that big of a config change at this time, and I do have a 3.0 hub on order from amazon.

i also found this bug which was IMO incorrectly marked as closed. https://bugs.openwrt.org/index.php?do=details&task_id=1862

I do have a USB 3.0 hub on order and will be here in a few days for more testing. As of now I tried the solution that [Paul Fertser] recommended at the bottom that thread and it did not work for me :confused:

So to rehash things in an easier to understand way, I got 2 out of 3 of my external drives working correctly on my 3.0 port! I only have 1 drive left that does not work on the USB 3.0 port, a drive named:

Bus 004 Device 002: ID 174c:55aa RSH-339 ASM1153E <---- That little bugger vexes me! But I must point out again that it works great on laptops and other things. It even works great on the 3.0 port of another AC68U I have that runs Fresh tomato firmware. But it doesn't work on OpenWRT with my USB 3.0 port.

At this point I guess I should submit a bug as a web search does show my vid pid has issues with openwrt.

Net update!: As far as I can tell when i plug in the drive to the 3.0 port OpenWRt is not assigning it a storage driver! look at the output of lsusb -t:

root@AC68U-43B8:~# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=, Driver=, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/0p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-platform/2p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/2p, 480M

Where it says "Class=" It should say "Class=Mass Storage, Driver=usb-storage" but it does not show any driver being loaded.! This is a big breakthrough! But sadly I do not know how to manually spec a driver for it. Does anyone here?

Look at the last device, it shows no driver is being loaded!




root@AC68U-43B8:~# cat /sys/kernel/debug/usb/devices



T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 2
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 5.04
S:  Manufacturer=Linux 5.4.143 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=18021000.usb
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 5.04
S:  Manufacturer=Linux 5.4.143 ohci_hcd
S:  Product=Generic Platform OHCI controller
S:  SerialNumber=18022000.usb
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 0
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 5.04
S:  Manufacturer=Linux 5.4.143 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=18023000.usb
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 5.04
S:  Manufacturer=Linux 5.4.143 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=18023000.usb
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=174c ProdID=55aa Rev= 1.00
S:  Manufacturer=RSH-339
S:  Product=ASM1153E
S:  SerialNumber=00000000001D
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:  If#= 0 Alt= 1 #EPs= 4 Cls=08(stor.) Sub=06 Prot=62 Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

A couple of further thoughts:

  • does FreshTomato show the still problematic drive as using the uas driver or usb-storage on USB3?
  • Is it showing up with the uas driver on USB2, on FreshTomato or OpenWrt?
  • I think you're going to need a quirk flag (IGNORE_UAS I think it is; "u" when used on the Linux boot command line) on that device's VID:PID to force use of usb-storage, especially if FreshTomato is still using usb-storage, as I think that the uas driver is failing to initialise with that device and usb-storage is consequently not checked as the device supposedly supports uas.

While the apparently problematic chipset seems like it should be fine with recent kernels (5.x for sure), there still seem to be particular enclosures with poor implementations (incl poor firmware if Seagate) and odd interactions with some drives. While UASP can be supported on USB2, the USB2 driver (ehci/ohci) has to have some features required by UASP and not all USB2 drivers have them.