usbhubctl 0.0.1

Creator: bradpython12

Last updated:

Add to Cart

Description:

usbhubctl 0.0.1

usbhubctl
usbhubctl extends uhubctl.
State of this project
Still alpha. The concept/solution seems fine.
To be improved

Much too slow (uhubctl may take seconds just to switch one plug)
Implementation to complicated (uses lsusb -tv, uhubctl, root rights, ...)

Use Case

I would like to switch on power on plug 3 on my RSH_A16 hub.
Problem
uhubctl allows me to do this - but I have to know which usb device id corresponds to plug 3.

I have to first figure out the topology (internal structure) of my RSH_A16 hub. Spoiler: there are 5 hubs chips with 4 ports each.
Now I have to figure out, which port is connected to each plug.
When I reconnect the RSH_A16 to another USB connected on my compunter, the whole assignement changes again.

Now I can issue uhubctl -l 3-4.6.1 -p 3 --action on.
Solution with usbhubctl/uhbuctl
This is the topology of the RSH_A16.
rsh_a16 = Hub(
manufacturer="RSHTECH",
model="RSH-A16",
comment="",
plug_count=16,
hub_chip=HubChip(
"0bda:5411",
plug_or_chip=[
1,
2,
HubChip(
"0bda:5411",
plug_or_chip=[
7,
8,
HubChip("0bda:5411", plug_or_chip=[13, 14, 15, 16]),
HubChip("0bda:5411", plug_or_chip=[9, 10, 11, 12]),
],
),
HubChip("0bda:5411", plug_or_chip=[3, 4, 5, 6]),
],
),
)

Here you see the 5 internal hub-chips and to which usb-plugs the are connected.
This code will power on usb-plug number 3:
from usbhubctl.known_hubs import rsh_a10, rsh_a16

# Call `lsusb -tv` and find all connected RSH_A16
hubs = rsh_a16.find_connected_hubs()

if len(hubs) > 1:
print("More than one RSH_A16 hub detected: unambiguously")
return
if len(hubs) == 0:
print("No RSH_A16 hub detected")
return
hub = hubs.hubs[0]

# Finally power on
# Internally, this will call `uhubctl -l 3-4.6.1 -p 3 --action on`
hub.get_plug(3).on()

Benefit
No matter, where you connected the RSH-A16 hub, the method find_connected_hubs will find it and call uhubctl -l 3-4.6.1 -p 3 --action on with the correct parameters.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.