Skip to main content

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_chain_from_port("1-7-5")  # "COM16"
portName = tool.get_chain_from_port("1-3-1:2")  # "COM11"
portName = tool.get_chain_from_port("1-3-7-4:Speaker")  # "Speakers (4- USB Audio Device)"
portName = tool.get_chain_from_port("1-3-7-4:Microphone")  # "Microphone (4- USB Audio Device)"

Support command line standalone usage

Command line for port path of USB devices (COM ports / Audio Devices)

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
  -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,

  1. List all devices: >pyusb-chain --list
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
  1. Add filter to only list devices you required: >pyusb-chain --list Altera
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
  1. 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


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.0.1.tar.gz (387.2 kB view details)

Uploaded Source

Built Distribution

pyusb_chain-0.0.1-py3-none-any.whl (390.1 kB view details)

Uploaded Python 3

File details

Details for the file pyusb-chain-0.0.1.tar.gz.

File metadata

  • Download URL: pyusb-chain-0.0.1.tar.gz
  • Upload date:
  • Size: 387.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.7.4

File hashes

Hashes for pyusb-chain-0.0.1.tar.gz
Algorithm Hash digest
SHA256 272cda21d5b59ef03766070146d9daaf377af573bbb7cd60ba51988bbec16ca5
MD5 d6e82c0dba67a8161d4f3649ccbbf958
BLAKE2b-256 384c4be040135a930e12571ee6e12a7413e8dd043fd1289850ed85794a950905

See more details on using hashes here.

File details

Details for the file pyusb_chain-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: pyusb_chain-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 390.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.7.4

File hashes

Hashes for pyusb_chain-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2d041d6a70b27b4766c60eeafbc61cca6fff1af75ba28b266b0c44853614dba8
MD5 95b175b43c01153a6b48e73fdb88cbc1
BLAKE2b-256 e4ad3895b1382a0c9e67c572132f9eaf345d49d45dee0d9758bcc7835233f364

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page