Tool to map usb device port chain and port name
Project description
pyusb-chain
Support command line interface to get the port chain of USB devices(serial, audio, .etc) based on UsbDeviceTreeView.exe in windows.
Installation
The easiest (and best) way to install pyusb-chain is through pip:
pip install pyusb-chain
Sources packages are also available at git hub:
https://github.com/BillYuan/usb_port_path
Quickstart
The API to use pyusb_chain to map between port chain and port name.
from pyusb_chain.usb_tree_view_tool import UsbTreeViewTool
tool = UsbTreeViewTool()
tool.scan() # scan first to get the latest USB devices information
# to get the port chain by COM port
portChain = tool.get_chain_from_port("COM16") # "1-7-5" or "1-3-1:2" if there are multi-com ports in one USB device
# to get the port chain by Audio Name
portChain = too.get_chain_from_port("Speakers (4- USB Audio Device)") # "1-3-7-4:Speaker"
portChain = too.get_chain_from_port("Microphone (4- USB Audio Device)") # "1-3-7-4:Microphone"
# to get port name by the port chain
portName = tool.get_port_from_chain("1-7-5") # "COM16"
portName = tool.get_port_from_chain("1-3-1:2") # "COM11"
portName = tool.get_port_from_chain("1-3-7-4:Speaker") # "Speakers (4- USB Audio Device)"
portName = tool.get_port_from_chain("1-3-7-4:Microphone") # "Microphone (4- USB Audio Device)"
Support command line standalone usage
usage: __main__.py [-h] [-g] [-l] [-a] [-f FILTER] [-e] [-v VERBOSE]
Command line for port path of USB devices (COM ports / Audio Devices)
Version:0.1.3
optional arguments:
-h, --help show this help message and exit
-g, --gui Launch GUI of USBTreeViewer.exe in Windows system
-l, --list List all USB devices information for COM ports and USB
Audio devices
-a, --allinfo List all information of USB device, include SN and
driver key
-f FILTER, --filter FILTER
filter the key words of USB devices information
-e, --export export the json format with all connected USB devices
information
-v VERBOSE, --verbose VERBOSE
verbose log mode, 'debug', 'fatal', 'error',
'warning', 'info'
For example,
- List all devices:
>pyusb-chain --list --allinfo
Scanning all USB devices...
Port Chain Key Port Name Device Name SN Driver Key
---------------- ------------------------------ ---------------------------------------------- ------------------------------------------------ ------------
2-1-1 Altera USB-Blaster 8a56TRPS 28
2-1-5:Speaker Headphones (Realtek USB Audio) USB Composite Device - Realtek USB Audio 200901010001 8
2-1-6 USB Composite Device - 2× Keyboard, 2× HID 9
2-1-7-3-2 COM16 Silicon Labs CP210x USB to UART Bridge (COM16) evkmimxrt1170_1_a 14
2-1-7-3-3 COM3 mbed Composite Device - D:\, COM3, HID 022900001294098900000000000000000000000097969905 17
2-1-7-4-1 COM109 USB-SERIAL CH340 (COM109) 16
2-1-7-4-4 USB Input Device - Mouse 7
2-1-7-7-1 Altera USB-Blaster 8a56TQ1M 27
2-1-7-7-3 COM11 USB Composite Device - COM11, E:\ SDAF7507E73 18
2-3-2 Realtek USB GbE Family Controller 000002000000 7
3-2 Altera USB-Blaster 8B951BA7 26
3-5 USB Composite Device - Camera 7
3-7 Intel(R) Wireless Bluetooth(R) - Media, HID 0
3-10 USB Composite Device 6
- Add filter to only list devices you required:
>pyusb-chain --list Altera --allinfo
Port Chain Key Port Name Device Name SN Driver Key
---------------- ----------- ------------------ -------- ------------
2-1-1 Altera USB-Blaster 8a56TRPS 28
2-1-7-7-1 Altera USB-Blaster 8a56TQ1M 27
3-2 Altera USB-Blaster 8B951BA7 26
- Export to the json file for all listed devices:
>pyusb-chain --list Altera --export
Please get 'usb_port_chain_export.json' for dumped information!
{
"2-1-1": {
"Port Name": "",
"Device Name": "Altera USB-Blaster",
"SN": "8a56TRPS",
"Location Info": "Port_#0001.Hub_#0004",
"Device ID": "USB\\VID_09FB&PID_6001\\8A56TRPS",
"Driver Key": 28
},
"2-1-7-7-1": {
"Port Name": "",
"Device Name": "Altera USB-Blaster",
"SN": "8a56TQ1M",
"Location Info": "Port_#0001.Hub_#0011",
"Device ID": "USB\\VID_09FB&PID_6001\\8A56TQ1M",
"Driver Key": 27
},
"3-2": {
"Port Name": "",
"Device Name": "Altera USB-Blaster",
"SN": "8B951BA7",
"Location Info": "Port_#0002.Hub_#0001",
"Device ID": "USB\\VID_09FB&PID_6001\\8B951BA7",
"Driver Key": 26
}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyusb-chain-0.2.7.tar.gz
(459.6 kB
view details)
Built Distribution
pyusb_chain-0.2.7-py3-none-any.whl
(469.5 kB
view details)
File details
Details for the file pyusb-chain-0.2.7.tar.gz
.
File metadata
- Download URL: pyusb-chain-0.2.7.tar.gz
- Upload date:
- Size: 459.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 814e779bcc66504801dc24faa43b4331fbc618598b9fca929681848a48f2759a |
|
MD5 | eae9a288e1e2d47826fffffcef970f24 |
|
BLAKE2b-256 | 4da15d4b61fbb74f79cd4fe63a9af822911673b0a3c97d7e2d442179c6ade94a |
File details
Details for the file pyusb_chain-0.2.7-py3-none-any.whl
.
File metadata
- Download URL: pyusb_chain-0.2.7-py3-none-any.whl
- Upload date:
- Size: 469.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94d4cf7550118cf37f239fac21ad2452279ddaf199e638bac673fd1c6be0fafc |
|
MD5 | 90d0475415f3bbb901f02e393a2e20ae |
|
BLAKE2b-256 | 93ac269278390bd9e36cf0fd41dc50136c66c999a625c76f998f31a67b3cc5bc |