mvp/uhubctl

Lenovo USB-C to 4 Ports USB-A Hub (4X90X21427) works only in USB2 mode

Closed this issue ยท 2 comments

Relates to #561

Hi, I just bought this hub "Lenovo USB-C to 4 Ports USB-A Hub" (P/N: 4X90X21427, S/N: DRF00720, Manufacturing date: 2025-01-01). It's listed as supported, but it doesn't switch power. Also the USB 3 peer device is not auto detected.

I tested this the following way: I attached a TI DevKit (USB 2) to USB port 1 and a Google Pixel 6a (USB 3) to the USB port 4. For both, the power stayed on during the whole test. The DevKit LED stayed on (it has no battery) and the phone was charging. The hub was connected to the USB 3.0 SuperSpeed capable USB-C jack on my Lenovo Thinkpad running a v6.8 kernel.

$ uhubctl
Current status for hub 4-4 [17ef:1039 VIA Labs, Inc. USB3.0 Hub, USB 3.20, 4 ports, ppps]
  Port 1: 02a0 power 5gbps Rx.Detect
  Port 2: 02a0 power 5gbps Rx.Detect
  Port 3: 02a0 power 5gbps Rx.Detect
  Port 4: 0203 power 5gbps U0 enable connect [18d1:4ee1 Google Pixel 6a 27055JEGR05191]
Current status for hub 3-12 [17ef:103a VIA Labs, Inc. USB2.0 Hub, USB 2.10, 5 ports, ppps]
  Port 1: 0103 power enable connect [0451:f432 Texas Instruments Texas Instruments MSP-FET430UIF 2BFF427A4D072857]
  Port 2: 0100 power
  Port 3: 0100 power
  Port 4: 0100 power
  Port 5: 0503 power highspeed enable connect [17ef:103b VIA Labs, Inc. USB Billboard Device 0000000000000001]
# [...]

$ uhubctl --location 3-12 --action off
Current status for hub 3-12 [17ef:103a VIA Labs, Inc. USB2.0 Hub, USB 2.10, 5 ports, ppps]
  Port 1: 0103 power enable connect [0451:f432 Texas Instruments Texas Instruments MSP-FET430UIF 2BFF427A4D072857]
  Port 2: 0100 power
  Port 3: 0100 power
  Port 4: 0100 power
  Port 5: 0503 power highspeed enable connect [17ef:103b VIA Labs, Inc. USB Billboard Device 0000000000000001]
Sent power off request
New status for hub 3-12 [17ef:103a VIA Labs, Inc. USB2.0 Hub, USB 2.10, 5 ports, ppps]
  Port 1: 0000 off
  Port 2: 0000 off
  Port 3: 0000 off
  Port 4: 0000 off
  Port 5: 0000 off

$ uhubctl
Current status for hub 4-4 [17ef:1039 VIA Labs, Inc. USB3.0 Hub, USB 3.20, 4 ports, ppps]
  Port 1: 02a0 power 5gbps Rx.Detect
  Port 2: 02a0 power 5gbps Rx.Detect
  Port 3: 02a0 power 5gbps Rx.Detect
  Port 4: 0203 power 5gbps U0 enable connect [18d1:4ee1 Google Pixel 6a 27055JEGR05191]
Current status for hub 3-12 [17ef:103a VIA Labs, Inc. USB2.0 Hub, USB 2.10, 5 ports, ppps]
  Port 1: 0000 off
  Port 2: 0000 off
  Port 3: 0000 off
  Port 4: 0000 off
  Port 5: 0000 off
# [...]

$ uhubctl --exact --location 4-4 --action off
Current status for hub 4-4 [17ef:1039 VIA Labs, Inc. USB3.0 Hub, USB 3.20, 4 ports, ppps]
  Port 1: 02a0 power 5gbps Rx.Detect
  Port 2: 02a0 power 5gbps Rx.Detect
  Port 3: 02a0 power 5gbps Rx.Detect
  Port 4: 0203 power 5gbps U0 enable connect [18d1:4ee1 Google Pixel 6a 27055JEGR05191]
Sent power off request
New status for hub 4-4 [17ef:1039 VIA Labs, Inc. USB3.0 Hub, USB 3.20, 4 ports, ppps]
  Port 1: 00a0 off
  Port 2: 00a0 off
  Port 3: 00a0 off
  Port 4: 00a0 off

Switching off the ports individually yielded the same result.

mvp commented

Thanks for reporting this @gschwaer!

Considering that original report was 5 years ago, I wouldn't be surprised if hub under such non-descript model name but released 5 years later has completely different chip underneath.

That said, before we write it off, can you do USB2 only test? That is, can you connect hub to host either to USB2 only port, or using USB2 only cable? Basically, you want uhubctl to show only USB2 device without its USB3 counterpart. I have observed some devices which worked correctly when connected to USB2 only, but not when to USB3. Thanks!

I build a horrible adapter chain that enforced a USB 2 only connection. When testing I found that it partially works. The ports are ganged in the following way:

port 1 power controls nothing
port 2 power controls nothing
port 3 power controls port 3 and port 2
port 4 power controls port 4 and port 1

So 1&4 and 2&3 power switches are ganged together. The order might seem strange, but they are actually adjacent on this hub. From uplink cable the ports are enumerated as: 4,1,2,3

In the end ports 3 and port 4 can be fully used as intended, if you force a USB 2 only connection (and don't use ports 1 and 2). For ~30 bucks and for my use case (I only really need two switchable USB 2 ports) that is not great but still acceptable. Thanks for the hint @mvp! ๐Ÿ™

Btw, for anyone that cares, I also just bought a "managed USB Hub" from exsys/startech (same product basically). I wasn't aware that those existed, which is why I even went down the rabbit hole of trying to find a purchasable uhubctl supported hub. ๐Ÿ˜… I'll use that for more elaborate setups where I need USB 3.