UmberHubManager/api/examples/python/speed_test_cli
Bob McMahon 2650ca4b5e first commit 2026-03-07 15:59:12 -08:00
..
README.md first commit 2026-03-07 15:59:12 -08:00
argument_parser.py first commit 2026-03-07 15:59:12 -08:00
speed_test_cli.py first commit 2026-03-07 15:59:12 -08:00

README.md

USB Speed Test CLI

This script tests USB device enumeration speeds across multiple ports by progromatically limiting the max data rate of the USB hub.

The test validates that devices enumerate at the expected speeds by comparing:

  • The speed reported by the hub
  • The speed reported by the operating system
  • The expected speed for the current data rate configuration

Tested Configurations

Speed Description
10G SuperSpeed Plus
5G SuperSpeed
480M High Speed
12M Full Speed
1.5M Low Speed (currently unsupported on Acroname products)

Hardware Setup

Note: Configuration assumes a device with its default settings.

  • Upstream connection: "Port 0"
  • Dedicated control connection: "Control"
  • Adequate power supply connection
  • USB Device on a downstream port

Software Setup

  1. Create a virtual environment:

    python -m venv venv
    
  2. Activate the virtual environment:

    # macOS/Linux
    source venv/bin/activate
    
    # Windows
    venv\Scripts\activate
    
  3. Install BrainStem:

    pip install brainstem
    

Example Usage

Detailed Help:

python speed_test_cli.py --help

Automatic Mode: Tests all ports which have a downstream device connected.

python speed_test_cli.py

Manual Mode: Tests all ports that are provided.

python speed_test_cli.py --test_ports 1 2 3

Test a single port:

python speed_test_cli.py --test_ports 3

Connect to a specific device by serial number and perform automatic testing:

python speed_test_cli.py --sn 0x12345678

Exit Codes

Code Name Description
0 SUCCESS All speed tests passed
1 CONNECTION_ERROR Failed to connect to device
2 CAPABILITY_CHECK_FAILED Device does not support required capabilities
3 CONFIGURATION_ERROR Failed to configure hub data rate settings
4 TEST_FAILED One or more speed tests failed

Results Table

After testing, a summary table is printed showing PASS/FAIL/N/A for each port and speed configuration:

Result Meaning
PASS Device enumerated at the expected speed
FAIL Device did not enumerate at the expected speed
N/A Configuration not supported by the device (not counted as failure)