Skip to main content

Python implementation of the cusb interface for managed USB hubs

Project description

pycusb

A python library for managed USB hubs that are usually operated by a command line tool called cusbi (Linux Intel), cusba (Linux Arm), cusbm (Mac), or CUSBC/CUSBCTL (Windows), e.g., hubs from the companies EXSYS and StarTech.

Usage

Usage as library

from cusb import CUsb
import time

# Example:
path_to_device = "/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_B0036Y2H-if00-port0"
port = 1

with CUsb(path_to_device) as hub:
    hub.port_power_on(port, False)
    time.sleep(1)
    hub.port_power_on(port, True)

Usage as CLI tool

$ pycusb --help
CUSB Hub Control

This CLI tool is able to *set* or *get* the state of the managed USB hub. It
can *save* the current state as the default, so after a power loss, this state
will be restored. The hub can also be *reset*, or a *factory reset* can be
issued, resetting any stored state and/or set password.

If a password is required, it can be provided to all commands as an option. By
default the implementation uses "pass", which is the factory default. The *get*
command does not need the password to succeed.

Usage:
  pycusb [options] get <port> PATH
  pycusb [options] set <port> (on|off) PATH
  pycusb [options] save PATH
  pycusb [options] reset PATH
  pycusb [options] factory_reset PATH
  pycusb -h | --help

Arguments:
  PATH                      Path to serial device file controlling the hub.

Options:
  -p --password=<password>  Password for the hub [default: pass].
  --force                   Continue despite unknown firmware version. This may
                            have unknown consequences and could cause damage.

Example: switch off port 1 for 1 second

pycusb set 1 off /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_B0036Y2H-if00-port0
sleep 1
pycusb set 1 on /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_B0036Y2H-if00-port0

Installation

Installation as library

Add pycusb to your pyproject.toml:

[project]
dependencies = [
    "pycusb",
]

Installation as CLI tool

Create and activate a virtual environment, then run

pip install pycusb

Development

Clone the repo, create and activate a virtual environment, then install dependencies with:

pip install -e '.[dev]'

Test with

pytest test/test.py

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

pycusb-0.3.0.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pycusb-0.3.0-py2.py3-none-any.whl (6.2 kB view details)

Uploaded Python 2Python 3

File details

Details for the file pycusb-0.3.0.tar.gz.

File metadata

  • Download URL: pycusb-0.3.0.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pycusb-0.3.0.tar.gz
Algorithm Hash digest
SHA256 83e09e5b9676da5ee27dfe79ca71ade8bc38a108bc1e626ab52ff9d685f8a599
MD5 56f0788c320b13f021c8af4455b06f98
BLAKE2b-256 9250a353777c7229b7444252f3f07785f0171abc1312e8788e618d76c8aa77b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pycusb-0.3.0.tar.gz:

Publisher: release.yaml on gschwaer/pycusb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pycusb-0.3.0-py2.py3-none-any.whl.

File metadata

  • Download URL: pycusb-0.3.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pycusb-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 69945ab6688342c589699c59feac1a1f5bb4e38067738ca3b1910c724bed1e6d
MD5 1bce8ee0d3f552f072b66a3d794dedd6
BLAKE2b-256 882dc0a9ba9b335676e6d6b18ca1bb10243014296ab75867be76cf0885c30f0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pycusb-0.3.0-py2.py3-none-any.whl:

Publisher: release.yaml on gschwaer/pycusb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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