February 14, 2022

Orange Pi 4 (Rockchip 3399) USB and linux on my PC

There is nothing here that is RK3399 specific. I just got curious about the USB layout on my home desktop machine. It is a Gigabyte "G1 Sniper 3" purchased back in 2013 or so.

The front has 4 USB ports laid out like so:

    AAA   BBB

    CCC   DDD
AAA is usb1-1.4
BBB is usb1-1.3
CCC is usb2-1.7
DDD is usb2-1.8

These are both ehci host controllers (i.e USB-2.0) capable of 480 mb/s.

The layout on the back has 6 ports as follows:

A  B
A  B
A  B

C  D  eth
C  D  eth
C  D  eth

E  F
E  F
E  F
AAA is usb1-1.5 (my mouse)
BBB is usb1-1.6
CCC is usb1-1.1 (sound dongle)
DDD is usb1-1.2 (currently a USB to serial CP210x)
EEE is usb3-1.6 (goes to hub in my monitor)
FFF is usb4-2:1.0 (my card reader)

My monitor is a Dell U4320Q. The side of the monitor has a USB-C port (5V/3A) and a traditional USB port. The bottom of the monitor has two traditional (type A) USB ports. The monitor connects to the computer via what it calls a USB-C 3.1 cable. It claims USB 3.1 "super speed" (5 Ghz) support.

[tom@trona drivers]$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 2: Dev 8, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
    |__ Port 3: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
    |__ Port 4: Dev 4, If 0, Class=Hub, Driver=hub/4p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 1: Dev 27, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 2: Dev 28, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
        |__ Port 5: Dev 30, If 0, Class=Human Interface Device, Driver=usbhid, 480M
        |__ Port 6: Dev 31, If 0, Class=, Driver=, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 1: Dev 28, If 0, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 1: Dev 28, If 1, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 29, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
        |__ Port 5: Dev 30, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
The "hid" device on usb3 must be the monitor itself. I am surprised that the monitor hub does not show "super speed". I inspect my cable and see the extra connectors for the super speed signals. Even swapping it to the other location (swapping E for F) makes no difference.

The behavior of physical ports E and F is surprising. I can plug the same item into either port and it will show up on usb4 if it is super speed capable, otherwise it shows up on usb3 at a lower speed. In other words, both of these physical ports appear to be wired to the same usb3 capable chip which maintains two different internal buses, one for superspeed, the other for lesser speeds. Or something like that. Studing the specification for xhci_hcd might reveal some of the mystery.

The Gigabyte board (sniper 3) manual says:


Have any comments? Questions? Drop me a line!

Tom's electronics pages / tom@mmto.org