Add USB-C hubs
Add a couple of USB-C hubs that I’ve tested and that are currently (2023) on the market.
All were tested on a Librem 5 Evergreen with a 0.2.0 firmware.
Test protocol
Prerequisites: Phone booted into PureOS Byzantium, tracing enabled for the tps6598x, high-quality 45W charger, high-quality cabling
-
Plug hub into phone, connect hub USB-C PD input to 45W charging port, no external display connected
-
Figure out the USB ID of the hub
(If the hub has several USB devices, pick the one where theBillboard Capability
section shows the Alternate Mode configuration) -
Dump the detailed output of
sudo lsusb -v
for that USB ID -
Inspect charging current of the BQ25890 and battery with no external display connected
(not included in test report) -
Connect external display via HDMI, 4K@30 Hz
-
Confirm DP Alt mode is working
-
Confirm that even with display connected, charging current is still positive
-
Take note of charging current of the BQ25890 and battery
(with display connected and while battery capacity between 0% and 75%) -
Dump the tps6598x trace (
sudo cat /sys/kernel/debug/tracing/trace
) -
Unplug phone, turn connector 180 degrees, plug in again
-
Confirm that DP Alt mode is still working and that charging current is in the same ballpark as in step 7
-
Dump the tps6598x trace again
Bash functions to inspect the charging current
Requires the bc
package to be installed.
print_vcp() {
local name voltage current status health charge_type
name="${1?}"
read voltage < "${2?}"
read current < "${3?}"
read status < "${4?}"
read health < "${5:-/dev/null}" || true
read charge_type < "${6:-/dev/null}" || true
LC_NUMERIC=en_US.utf8 printf \
'%-36s | %5.1f V | %'\''8.0f mA | %5.1f W | %s | %s | %s\n' \
"${name}" \
"$(bc <<< "scale=6; ${voltage} / 10^6")" \
"$(bc <<< "scale=6; ${current} / 10^3")" \
"$(bc <<< "scale=6; ${voltage} / 10^6 * ${current} / 10^6")" \
"${status}" "${health:-N/A}" "${charge_type:-N/A}"
}
export -f print_vcp
charge() {
watch -x -n 1 bash -c 'set -eu; print_vcp "Phone charging controller (BQ25890)" /sys/class/power_supply/bq25890-charger-0/{voltage_now,current_now,status,health,charge_type}; print_vcp "Phone battery (Max170xx)" /sys/class/power_supply/max170xx_battery/{voltage_now,current_now,status,health}'
}
export -f charge
Test reports
Anker A8385 (Anker 563 USB-C PD Hub, 11-in-1, 2021 model)
$ sudo lsusb -v -d 291a:8385
Bus 003 Device 004: ID 291a:8385 Anker Innovations Limited Anker USB-C Hub Device
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.01
bDeviceClass 17
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x291a
idProduct 0x8385
bcdDevice 0.01
iManufacturer 1 Anker Innovations Limited
iProduct 2 Anker USB-C Hub Device
iSerial 3 0000000000000001
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0012
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 3 0000000000000001
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 17
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 3 0000000000000001
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x0049
bNumDeviceCaps 2
Billboard Capability:
bLength 48
bDescriptorType 16
bDevCapabilityType 13
iAddtionalInfoURL 3 0000000000000001
bNumberOfAlternateModes 1
bPreferredAlternateMode 0
VCONN Power 0 1W
bmConfigured 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
bcdVersion 1.10
bAdditionalFailureInfo 0
bReserved 0
Alternate Modes supported by Device Container:
Alternate Mode 0 : Alternate Mode configuration successful
wSVID[0] 0xFF01
bAlternateMode[0] 1
iAlternateModeString[0] 3 0000000000000001
Container ID Device Capability:
bLength 20
bDescriptorType 16
bDevCapabilityType 4
bReserved 0
ContainerID {00000000-0000-0000-0000-000000000000}
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0001
Self Powered
Phone charging controller (BQ25890) | 3.8 V | 0 mA | 0.0 W | Charging | Good | Fast Phone battery (Max170xx) | 3.8 V | -710 mA | -2.7 W | Discharging | Good | N/A
Orientation with Anker logo in back:
irq/34-0-003f-144 [001] ..... 52854.909496: tps6598x_status:
conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: off
, pwr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: P
LUG_PRESENT
irq/34-0-003f-144 [001] ..... 52854.910006: tps6598x_power_st
atus: conn: 1, pwr-role: sink, typec: pd, bc: sdp
irq/34-0-003f-144 [001] ..... 52854.911055: tps6598x_pdo: fix
ed supply, max 100000uA, 5000000uV, details: dr-power|ext-power|usb-
comms|dr-data
irq/34-0-003f-144 [001] ..... 52855.122394: tps6598x_irq: eve
nt1=DATA_STATUS_UPDATE, event2=
irq/34-0-003f-144 [001] ..... 52855.122999: tps6598x_status:
conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: off
, pwr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: P
LUG_PRESENT|DATAROLE
irq/34-0-003f-144 [001] ..... 52855.123577: tps6598x_data_sta
tus: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION|DP_CONNECTION|P
OWER_MISMATCH, DP pinout D
irq/34-0-003f-144 [001] ..... 52855.123707: tps6598x_data_sta
tus: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION|DP_CONNECTION|P
OWER_MISMATCH, DP pinout D
Orientation with Anker logo in front:
irq/34-0-003f-144 [001] ..... 52902.152649: tps6598x_irq: eve
nt1=NEW_CONTRACT_AS_CONSUMER|STATUS_UPDATE, event2=STATUS_UPDATE
irq/34-0-003f-144 [001] ..... 52902.153218: tps6598x_status:
conn: conn-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: out, p
wr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: PLUG
_PRESENT|UPSIDE_DOWN|DATAROLE|VCONN
irq/34-0-003f-144 [001] ..... 52902.153960: tps6598x_pdo: fix
ed supply, max 100000uA, 5000000uV, details: dr-power|ext-power|usb-
comms|dr-data
irq/34-0-003f-144 [001] ..... 52902.336752: tps6598x_irq: eve
nt1=DATA_STATUS_UPDATE, event2=
irq/34-0-003f-144 [001] ..... 52902.337337: tps6598x_status:
conn: conn-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: out, p
wr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: PLUG
_PRESENT|UPSIDE_DOWN|DATAROLE|VCONN
irq/34-0-003f-144 [001] ..... 52902.337909: tps6598x_data_sta
tus: DATA_CONNECTION|DATA_UPSIDE_DOWN|USB2_CONNECTION|USB3_CONNECTIO
N|DP_CONNECTION|POWER_MISMATCH, DP pinout D
irq/34-0-003f-144 [001] ..... 52902.337992: tps6598x_data_sta
tus: DATA_CONNECTION|DATA_UPSIDE_DOWN|USB2_CONNECTION|USB3_CONNECTIO
N|DP_CONNECTION|POWER_MISMATCH, DP pinout D
Anker A8388 (Anker 565 USB-C Hub, 11-in-1, 2023 model)
$ sudo lsusb -v -d 291a:8388
Bus 003 Device 004: ID 291a:8388 Anker Innovations Limited. Anker USB-C Hub Device
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.01
bDeviceClass 17
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x291a
idProduct 0x8388
bcdDevice 0.01
iManufacturer 1 Anker Innovations Limited.
iProduct 2 Anker USB-C Hub Device
iSerial 3 0000000000000001
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0012
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 3 0000000000000001
bmAttributes 0xc0
Self Powered
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 17
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 3 0000000000000001
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x0051
bNumDeviceCaps 3
Billboard Capability:
bLength 48
bDescriptorType 16
bDevCapabilityType 13
iAddtionalInfoURL 3 0000000000000001
bNumberOfAlternateModes 1
bPreferredAlternateMode 0
VCONN Power 0 1W
bmConfigured 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
bcdVersion 1.21
bAdditionalFailureInfo 0
bReserved 0
Alternate Modes supported by Device Container:
Alternate Mode 0 : Alternate Mode configuration successful
wSVID[0] 0xFF01
bAlternateMode[0] 0
iAlternateModeString[0] 3 0000000000000001
Billboard Alternate Mode Capability:
bLength 8
bDescriptorType 16
bDevCapabilityType 15
bIndex 0
dwAlternateModeVdo 0x05000000
Container ID Device Capability:
bLength 20
bDescriptorType 16
bDevCapabilityType 4
bReserved 0
ContainerID {30eef35c-07d5-2549-b001-802d79434c30}
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0001
Self Powered
Phone charging controller (BQ25890) | 3.7 V | 0 mA | 0.0 W | Charging | Good | Fast Phone battery (Max170xx) | 3.7 V | -798 mA | -3.0 W | Discharging | Good | N/A
Orientation 1:
irq/34-0-003f-148 [003] ..... 1091.646590: tps6598x_irq: event1=PLUG_EVENT|PP_SWITCH_CHANGED|POWER_STATUS_UPDATE|DATA_STATUS_UPDATE, event2=
irq/34-0-003f-148 [003] ..... 1091.651600: tps6598x_status: conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: off, pwr-src: vin-3p3, vbus: vSafe5V, usb-host: no, legacy: no, flags: PLUG_PRESENT
irq/34-0-003f-148 [003] ..... 1091.653981: tps6598x_power_status: conn: 1, pwr-role: sink, typec: 1.5A, bc: sdp
irq/34-0-003f-148 [003] ..... 1091.654568: tps6598x_data_status: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION
irq/34-0-003f-148 [003] ..... 1091.654674: tps6598x_data_status: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION
irq/34-0-003f-148 [003] ..... 1091.728321: tps6598x_irq: event1=STATUS_UPDATE, event2=STATUS_UPDATE
irq/34-0-003f-148 [003] ..... 1091.729068: tps6598x_status: conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: off, pwr-src: vin-3p3, vbus: vSafe5V, usb-host: pd-usb, legacy: no, flags: PLUG_PRESENT
irq/34-0-003f-148 [003] ..... 1091.733036: tps6598x_irq: event1=DATA_STATUS_UPDATE, event2=
irq/34-0-003f-148 [003] ..... 1091.733604: tps6598x_status: conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: off, pwr-src: vin-3p3, vbus: vSafe5V, usb-host: pd-usb, legacy: no, flags: PLUG_PRESENT
irq/34-0-003f-148 [003] ..... 1091.734196: tps6598x_data_status: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION|POWER_MISMATCH
irq/34-0-003f-148 [003] ..... 1091.734293: tps6598x_data_status: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION|POWER_MISMATCH
irq/34-0-003f-148 [003] ..... 1091.737199: tps6598x_irq: event1=, event2=
irq/34-0-003f-148 [003] ..... 1091.823336: tps6598x_irq: event1=NEW_CONTRACT_AS_CONSUMER|POWER_STATUS_UPDATE|STATUS_UPDATE, event2=STATUS_UPDATE
irq/34-0-003f-148 [003] ..... 1091.823923: tps6598x_status: conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: off, pwr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: PLUG_PRESENT
irq/34-0-003f-148 [003] ..... 1091.824434: tps6598x_power_status: conn: 1, pwr-role: sink, typec: pd, bc: sdp
irq/34-0-003f-148 [003] ..... 1091.825517: tps6598x_pdo: fixed supply, max 100000uA, 5000000uV, details: dr-power|ext-power|usb-comms|dr-data
irq/34-0-003f-148 [003] ..... 1092.036666: tps6598x_irq: event1=DATA_STATUS_UPDATE, event2=
irq/34-0-003f-148 [003] ..... 1092.037266: tps6598x_status: conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: off, pwr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: PLUG_PRESENT|DATAROLE
irq/34-0-003f-148 [003] ..... 1092.037841: tps6598x_data_status: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION|DP_CONNECTION|POWER_MISMATCH, DP pinout D
irq/34-0-003f-148 [003] ..... 1092.037982: tps6598x_data_status: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION|DP_CONNECTION|POWER_MISMATCH, DP pinout D
Orientation 2:
irq/34-0-003f-148 [003] ..... 1192.345198: tps6598x_irq: event1=PLUG_EVENT|DATA_STATUS_UPDATE, event2=
irq/34-0-003f-148 [003] ..... 1192.345978: tps6598x_status: conn: conn-Ra, pp_5v0: off, pp_hv: off, pp_ext: off, pp_cable: off, pwr-src: vin-3p3, vbus: pd, usb-host: no, legacy: no, flags: PLUG_PRESENT|UPSIDE_DOWN|PORTROLE|DATAROLE
irq/34-0-003f-148 [003] ..... 1192.349613: tps6598x_data_status: DATA_CONNECTION|DATA_UPSIDE_DOWN|USB2_CONNECTION|USB3_CONNECTION
irq/34-0-003f-148 [003] ..... 1192.349691: tps6598x_data_status: DATA_CONNECTION|DATA_UPSIDE_DOWN|USB2_CONNECTION|USB3_CONNECTION
irq/34-0-003f-148 [003] ..... 1192.386472: tps6598x_irq: event1=PP_SWITCH_CHANGED|STATUS_UPDATE, event2=STATUS_UPDATE
irq/34-0-003f-148 [003] ..... 1192.387059: tps6598x_status: conn: conn-Ra, pp_5v0: out, pp_hv: off, pp_ext: off, pp_cable: out, pwr-src: vin-3p3, vbus: pd, usb-host: no, legacy: no, flags: PLUG_PRESENT|UPSIDE_DOWN|PORTROLE|DATAROLE|VCONN
irq/34-0-003f-148 [003] ..... 1192.387522: tps6598x_power_status: conn: 1, pwr-role: source, typec: usb, bc: sdp
irq/34-0-003f-148 [003] ..... 1192.391229: tps6598x_irq: event1=, event2=
irq/34-0-003f-148 [003] ..... 1192.487863: tps6598x_irq: event1=POWER_STATUS_UPDATE, event2=
irq/34-0-003f-148 [003] ..... 1192.488498: tps6598x_status: conn: conn-Ra, pp_5v0: out, pp_hv: off, pp_ext: off, pp_cable: out, pwr-src: vin-3p3, vbus: pd, usb-host: no, legacy: no, flags: PLUG_PRESENT|UPSIDE_DOWN|PORTROLE|DATAROLE|VCONN
irq/34-0-003f-148 [003] ..... 1192.489023: tps6598x_power_status: conn: 1, pwr-role: source, typec: usb, bc: sdp
irq/34-0-003f-148 [003] ..... 1192.496685: tps6598x_irq: event1=STATUS_UPDATE, event2=STATUS_UPDATE
irq/34-0-003f-148 [003] ..... 1192.497291: tps6598x_status: conn: conn-Ra, pp_5v0: out, pp_hv: off, pp_ext: off, pp_cable: out, pwr-src: vin-3p3, vbus: vSafe5V, usb-host: no, legacy: no, flags: PLUG_PRESENT|UPSIDE_DOWN|PORTROLE|DATAROLE|VCONN
irq/34-0-003f-148 [003] ..... 1192.530197: tps6598x_irq: event1=POWER_STATUS_UPDATE|STATUS_UPDATE, event2=STATUS_UPDATE
irq/34-0-003f-148 [003] ..... 1192.530915: tps6598x_status: conn: conn-Ra, pp_5v0: out, pp_hv: off, pp_ext: off, pp_cable: out, pwr-src: vin-3p3, vbus: pd, usb-host: no, legacy: no, flags: PLUG_PRESENT|UPSIDE_DOWN|PORTROLE|DATAROLE|VCONN
irq/34-0-003f-148 [003] ..... 1192.531414: tps6598x_power_status: conn: 1, pwr-role: source, typec: pd, bc: sdp
irq/34-0-003f-148 [003] ..... 1192.563055: tps6598x_irq: event1=PP_SWITCH_CHANGED|STATUS_UPDATE, event2=STATUS_UPDATE
irq/34-0-003f-148 [003] ..... 1192.563795: tps6598x_status: conn: conn-Ra, pp_5v0: off, pp_hv: off, pp_ext: off, pp_cable: out, pwr-src: vin-3p3, vbus: vSafe0V, usb-host: no, legacy: no, flags: PLUG_PRESENT|UPSIDE_DOWN|DATAROLE|VCONN
irq/34-0-003f-148 [003] ..... 1192.564305: tps6598x_power_status: conn: 1, pwr-role: source, typec: pd, bc: sdp
irq/34-0-003f-148 [003] ..... 1192.678180: tps6598x_irq: event1=PP_SWITCH_CHANGED|POWER_STATUS_UPDATE|STATUS_UPDATE, event2=STATUS_UPDATE
irq/34-0-003f-148 [003] ..... 1192.678783: tps6598x_status: conn: conn-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: out, pwr-src: vin-3p3, vbus: vSafe5V, usb-host: no, legacy: no, flags: PLUG_PRESENT|UPSIDE_DOWN|DATAROLE|VCONN
irq/34-0-003f-148 [003] ..... 1192.679273: tps6598x_power_status: conn: 1, pwr-role: sink, typec: pd, bc: sdp
irq/34-0-003f-148 [003] ..... 1192.682991: tps6598x_irq: event1=, event2=
irq/34-0-003f-148 [003] ..... 1192.697681: tps6598x_irq: event1=STATUS_UPDATE, event2=STATUS_UPDATE
irq/34-0-003f-148 [003] ..... 1192.698417: tps6598x_status: conn: conn-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: out, pwr-src: vin-3p3, vbus: vSafe5V, usb-host: pd-usb, legacy: no, flags: PLUG_PRESENT|UPSIDE_DOWN|DATAROLE|VCONN
irq/34-0-003f-148 [003] ..... 1192.702410: tps6598x_irq: event1=DATA_STATUS_UPDATE, event2=
irq/34-0-003f-148 [003] ..... 1192.702995: tps6598x_status: conn: conn-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: out, pwr-src: vin-3p3, vbus: vSafe5V, usb-host: pd-usb, legacy: no, flags: PLUG_PRESENT|UPSIDE_DOWN|DATAROLE|VCONN
irq/34-0-003f-148 [003] ..... 1192.703591: tps6598x_data_status: DATA_CONNECTION|DATA_UPSIDE_DOWN|USB2_CONNECTION|USB3_CONNECTION|POWER_MISMATCH
irq/34-0-003f-148 [003] ..... 1192.703682: tps6598x_data_status: DATA_CONNECTION|DATA_UPSIDE_DOWN|USB2_CONNECTION|USB3_CONNECTION|POWER_MISMATCH
irq/34-0-003f-148 [003] ..... 1192.792455: tps6598x_irq: event1=NEW_CONTRACT_AS_CONSUMER|STATUS_UPDATE, event2=STATUS_UPDATE
irq/34-0-003f-148 [003] ..... 1192.793042: tps6598x_status: conn: conn-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: out, pwr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: PLUG_PRESENT|UPSIDE_DOWN|DATAROLE|VCONN
irq/34-0-003f-148 [003] ..... 1192.793741: tps6598x_pdo: fixed supply, max 100000uA, 5000000uV, details: dr-power|ext-power|usb-comms|dr-data
irq/34-0-003f-148 [003] ..... 1192.977104: tps6598x_irq: event1=DATA_STATUS_UPDATE, event2=
irq/34-0-003f-148 [003] ..... 1192.977683: tps6598x_status: conn: conn-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: out, pwr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: PLUG_PRESENT|UPSIDE_DOWN|DATAROLE|VCONN
irq/34-0-003f-148 [003] ..... 1192.978254: tps6598x_data_status: DATA_CONNECTION|DATA_UPSIDE_DOWN|USB2_CONNECTION|USB3_CONNECTION|DP_CONNECTION|POWER_MISMATCH, DP pinout D
irq/34-0-003f-148 [003] ..... 1192.978348: tps6598x_data_status: DATA_CONNECTION|DATA_UPSIDE_DOWN|USB2_CONNECTION|USB3_CONNECTION|DP_CONNECTION|POWER_MISMATCH, DP pinout D
Anker A8355 (Anker 332 USB-C Hub, 5-in-1)
$ sudo lsusb -v -d 05e3:0626
Bus 004 Device 002: ID 05e3:0626 Genesys Logic, Inc. USB3.1 Hub
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.20
bDeviceClass 9 Hub
bDeviceSubClass 0
bDeviceProtocol 3
bMaxPacketSize0 9
idVendor 0x05e3 Genesys Logic, Inc.
idProduct 0x0626
bcdDevice 6.63
iManufacturer 1 GenesysLogic
iProduct 2 USB3.1 Hub
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x001f
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 1 GenesysLogic
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 19
Transfer Type Interrupt
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0002 1x 2 bytes
bInterval 8
bMaxBurst 0
Hub Descriptor:
bLength 12
bDescriptorType 42
nNbrPorts 4
wHubCharacteristic 0x0000
Ganged power switching
Ganged overcurrent protection
bPwrOn2PwrGood 50 * 2 milli seconds
bHubContrCurrent 576 milli Ampere
bHubDecLat 0.4 micro seconds
wHubDelay 1508 nano seconds
DeviceRemovable 0x00
Hub Port Status:
Port 1: 0000.02a0 lowspeed L1
Port 2: 0000.02a0 lowspeed L1
Port 3: 0000.02a0 lowspeed L1
Port 4: 0000.02a0 lowspeed L1
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x002a
bNumDeviceCaps 3
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000006
BESL Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 8 micro seconds
bU2DevExitLat 190 micro seconds
Container ID Device Capability:
bLength 20
bDescriptorType 16
bDevCapabilityType 4
bReserved 0
ContainerID {9f4b56f0-1df6-11e0-ac64-0800200c9a66}
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0001
Self Powered
$ sudo lsusb -v -d 25a4:9311
Bus 003 Device 003: ID 25a4:9311 USB C USB C Video Adaptor
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.01
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x25a4
idProduct 0x9311
bcdDevice 2.01
iManufacturer 1 USB C
iProduct 2 USB C Video Adaptor
iSerial 3 000000000001
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0012
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 3 000000000001
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 17
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 2 USB C Video Adaptor
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x0058
bNumDeviceCaps 4
Container ID Device Capability:
bLength 20
bDescriptorType 16
bDevCapabilityType 4
bReserved 0
ContainerID {00000000-0000-0000-0000-000000000000}
Billboard Capability:
bLength 48
bDescriptorType 16
bDevCapabilityType 13
iAddtionalInfoURL 4 http://help.vesa.org/dp-usb-type-c/
bNumberOfAlternateModes 1
bPreferredAlternateMode 0
VCONN Power 0 1W
bmConfigured 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
bcdVersion 1.21
bAdditionalFailureInfo 0
bReserved 0
Alternate Modes supported by Device Container:
Alternate Mode 0 : Alternate Mode configuration successful
wSVID[0] 0xFF01
bAlternateMode[0] 0
iAlternateModeString[0] 1 USB C
Billboard Alternate Mode Capability:
bLength 8
bDescriptorType 16
bDevCapabilityType 15
bIndex 0
dwAlternateModeVdo 0x00000000
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000000
(Missing must-be-set LPM bit!)
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0000
(Bus Powered)
Phone charging controller (BQ25890) | 4.1 V | -650 mA | -2.6 W | Charging | Good | Fast Phone battery (Max170xx) | 4.1 V | 727 mA | 3.0 W | Charging | Good | N/A
Orientation 1:
```plain
irq/34-0-003f-144 [001] ..... 53254.801328: tps6598x_power_st
atus: conn: 1, pwr-role: sink, typec: pd, bc: sdp
irq/34-0-003f-144 [001] ..... 53254.802045: tps6598x_pdo: fix
ed supply, max 1500000uA, 5000000uV, details: dr-power|ext-power|usb
-comms|dr-data
irq/34-0-003f-144 [001] ..... 53254.805862: tps6598x_irq: eve
nt1=, event2=
irq/34-0-003f-144 [001] ..... 53255.052337: tps6598x_irq: eve
nt1=DATA_STATUS_UPDATE, event2=
irq/34-0-003f-144 [001] ..... 53255.052940: tps6598x_status:
conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: off
, pwr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: P
LUG_PRESENT|DATAROLE
irq/34-0-003f-144 [001] ..... 53255.053541: tps6598x_data_sta
tus: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION|DP_CONNECTION,
DP pinout D
irq/34-0-003f-144 [001] ..... 53255.053647: tps6598x_data_sta
tus: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION|DP_CONNECTION,
DP pinout D
Orientation 2:
irq/34-0-003f-144 [001] ..... 53865.824074: tps6598x_status:
conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: off
, pwr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: P
LUG_PRESENT|UPSIDE_DOWN|DATAROLE
irq/34-0-003f-144 [001] ..... 53865.824549: tps6598x_power_st
atus: conn: 1, pwr-role: sink, typec: pd, bc: sdp
irq/34-0-003f-144 [001] ..... 53865.825242: tps6598x_pdo: fix
ed supply, max 1500000uA, 5000000uV, details: dr-power|ext-power|usb
-comms|dr-data
irq/34-0-003f-144 [001] ..... 53866.071578: tps6598x_irq: eve
nt1=DATA_STATUS_UPDATE, event2=
irq/34-0-003f-144 [001] ..... 53866.072175: tps6598x_status:
conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: off
, pwr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: P
LUG_PRESENT|UPSIDE_DOWN|DATAROLE
irq/34-0-003f-144 [001] ..... 53866.072779: tps6598x_data_sta
tus: DATA_CONNECTION|DATA_UPSIDE_DOWN|USB2_CONNECTION|USB3_CONNECTIO
N|DP_CONNECTION, DP pinout D
irq/34-0-003f-144 [001] ..... 53866.072901: tps6598x_data_sta
tus: DATA_CONNECTION|DATA_UPSIDE_DOWN|USB2_CONNECTION|USB3_CONNECTIO
N|DP_CONNECTION, DP pinout D
Isy IAD 1024-1 (5-in-1 USB-C Multiport Adapter mit Power Delivery)
$ sudo lsusb -v -d 05e3:0626
Bus 004 Device 002: ID 05e3:0626 Genesys Logic, Inc. USB3.1 Hub
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.20
bDeviceClass 9 Hub
bDeviceSubClass 0
bDeviceProtocol 3
bMaxPacketSize0 9
idVendor 0x05e3 Genesys Logic, Inc.
idProduct 0x0626
bcdDevice 6.56
iManufacturer 1 GenesysLogic
iProduct 2 USB3.1 Hub
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x001f
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 1 GenesysLogic
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 19
Transfer Type Interrupt
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0002 1x 2 bytes
bInterval 8
bMaxBurst 0
Hub Descriptor:
bLength 12
bDescriptorType 42
nNbrPorts 4
wHubCharacteristic 0x0004
Ganged power switching
Compound device
Ganged overcurrent protection
bPwrOn2PwrGood 50 * 2 milli seconds
bHubContrCurrent 576 milli Ampere
bHubDecLat 0.4 micro seconds
wHubDelay 1508 nano seconds
DeviceRemovable 0x10
Hub Port Status:
Port 1: 0000.02a0 lowspeed L1
Port 2: 0000.02a0 lowspeed L1
Port 3: 0000.02a0 lowspeed L1
Port 4: 0000.0263 lowspeed L1 enable connect
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x002a
bNumDeviceCaps 3
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000006
BESL Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 8 micro seconds
bU2DevExitLat 190 micro seconds
Container ID Device Capability:
bLength 20
bDescriptorType 16
bDevCapabilityType 4
bReserved 0
ContainerID {9f4b56f0-1df6-11e0-ac64-0800200c9a66}
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0001
Self Powered
Phone charging controller (BQ25890) | 4.1 V | -650 mA | -2.6 W | Charging | Good | Fast Phone battery (Max170xx) | 4.1 V | 697 mA | 2.8 W | Charging | Good | N/A
Orientation 1:
irq/34-0-003f-144 [001] ..... 54505.738390: tps6598x_irq: eve
nt1=PP_SWITCH_CHANGED|STATUS_UPDATE, event2=STATUS_UPDATE
irq/34-0-003f-144 [001] ..... 54505.739139: tps6598x_status:
conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: in,
pwr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: PL
UG_PRESENT|DATAROLE|VCONN
irq/34-0-003f-144 [001] ..... 54505.739623: tps6598x_power_st
atus: conn: 1, pwr-role: sink, typec: pd, bc: sdp
irq/34-0-003f-144 [001] ..... 54505.992647: tps6598x_irq: eve
nt1=DATA_STATUS_UPDATE, event2=
irq/34-0-003f-144 [001] ..... 54505.993232: tps6598x_status:
conn: conn-no-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: in,
pwr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: PL
UG_PRESENT|DATAROLE|VCONN
irq/34-0-003f-144 [001] ..... 54505.993802: tps6598x_data_sta
tus: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION|DP_CONNECTION,
DP pinout D
irq/34-0-003f-144 [001] ..... 54505.993923: tps6598x_data_sta
tus: DATA_CONNECTION|USB2_CONNECTION|USB3_CONNECTION|DP_CONNECTION,
DP pinout D
Orientation 2:
irq/34-0-003f-144 [001] ..... 54696.113582: tps6598x_status:
conn: conn-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: out, p
wr-src: vin-3p3, vbus: vSafe5V, usb-host: pd-usb, legacy: no, flags:
PLUG_PRESENT|UPSIDE_DOWN|DATAROLE|VCONN
irq/34-0-003f-144 [001] ..... 54696.117239: tps6598x_irq: eve
nt1=, event2=
irq/34-0-003f-144 [001] ..... 54696.282742: tps6598x_irq: eve
nt1=NEW_CONTRACT_AS_CONSUMER|POWER_STATUS_UPDATE|STATUS_UPDATE, even
t2=STATUS_UPDATE
irq/34-0-003f-144 [001] ..... 54696.283348: tps6598x_status:
conn: conn-Ra, pp_5v0: off, pp_hv: in, pp_ext: off, pp_cable: out, p
wr-src: vin-3p3, vbus: pd, usb-host: pd-usb, legacy: no, flags: PLUG
_PRESENT|UPSIDE_DOWN|DATAROLE|VCONN
irq/34-0-003f-144 [001] ..... 54696.283832: tps6598x_power_st
atus: conn: 1, pwr-role: sink, typec: pd, bc: sdp
irq/34-0-003f-144 [001] ..... 54696.284508: tps6598x_pdo: fix
ed supply, max 1500000uA, 5000000uV, details: dr-power|ext-power|usb
-comms|dr-data
irq/34-0-003f-144 [001] ..... 54696.288257: tps6598x_irq: eve
nt1=, event2=
Notes
Notably, every time the phone was connected to one of the hubs where charging wouldn’t work (Anker 563 and Anker 565), the tps6598x_data_status
trace event would consistently show the POWER_MISMATCH
flag as set.