97 lines
2.3 KiB
Markdown
Executable File
97 lines
2.3 KiB
Markdown
Executable File
# 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:
|
|
```bash
|
|
python -m venv venv
|
|
```
|
|
|
|
2. Activate the virtual environment:
|
|
```bash
|
|
# macOS/Linux
|
|
source venv/bin/activate
|
|
|
|
# Windows
|
|
venv\Scripts\activate
|
|
```
|
|
|
|
3. Install BrainStem:
|
|
```bash
|
|
pip install brainstem
|
|
```
|
|
|
|
## Example Usage
|
|
|
|
**Detailed Help:**
|
|
```bash
|
|
python speed_test_cli.py --help
|
|
```
|
|
|
|
**Automatic Mode:** Tests all ports which have a downstream device connected.
|
|
```bash
|
|
python speed_test_cli.py
|
|
```
|
|
|
|
**Manual Mode:** Tests all ports that are provided.
|
|
```bash
|
|
python speed_test_cli.py --test_ports 1 2 3
|
|
```
|
|
|
|
**Test a single port:**
|
|
```bash
|
|
python speed_test_cli.py --test_ports 3
|
|
```
|
|
|
|
**Connect to a specific device by serial number and perform automatic testing:**
|
|
```bash
|
|
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) |
|
|
|