Hardware detector CLI for USB serial/debug devices (TriLightSense, STLINK-V3, ESP32, host info).
Project description
hwscan
A Python CLI tool that detects attached hardware devices on Linux systems. It scans for connected USB devices, storage devices, and host system information, outputting results in JSON format.
Features
Supported Hardware Detection:
- TriLightSense (FTDI devices)
- STLINK-V3 (ST-Link debuggers with attached storage)
- ESP32 (C5 WROOM variant)
- Arduino Leonardo
- JLink (Segger JLink debuggers)
- UART to DMX converters
- Host System Info (hostname, model name, system UUID)
Installation
Prerequisites
- Python 3.8 or higher
- Linux operating system (uses sysfs for device detection)
Install from PyPI
pip install lumenradio-hwscan
Install from source
git clone <repository-url>
cd lumenradio-hwscan
pip install -e ".[dev]"
Usage
Basic Usage
Run the scanner with JSON output:
hwscan
Pretty-print JSON Output
For more readable JSON formatting:
hwscan --pretty
Display Detector Errors
To see any errors encountered during hardware detection:
hwscan --errors
Combined example:
hwscan --pretty --errors
Save Results to File
Save hardware detection results to a JSON file:
hwscan --output hardware.json
Smart Merging: If the file already exists, the tool intelligently merges new detection results with existing data. This preserves any custom fields you've added (like name for device mapping) while updating detected information:
# First run - creates the file
hwscan --output hardware.json
# Later, if device configuration changes, custom fields are preserved
hwscan --output hardware.json
Example: If your hardware.json contains custom mapping data:
{
"3C:DC:75:84:F9:7C": {
"name": "spi-bridge-timo",
"type": "esp32-c5-wroom",
"tty": "/dev/ttyACM0"
}
}
And the tty changes to /dev/ttyACM1, running hwscan --output hardware.json will update the tty while preserving the name field.
Show Version
hwscan --version
Output Format
The tool outputs a JSON object where each key is a unique hardware identifier and the value contains device information.
Example output:
{
"trilightsense_0": {
"vendor": "FTDI",
"product": "TriLightSense",
"serial": "FTDI123456",
"port": "/dev/ttyUSB0"
},
"stlink_0": {
"vendor": "STMicroelectronics",
"product": "STLINK-V3",
"serial": "STL12345678",
"port": "/dev/ttyACM0"
},
"host_system": {
"hostname": "workstation-01",
"model": "Dell Inc.",
"uuid": "550e8400-e29b-41d4-a716-446655440000"
}
}
Use Cases
- Hardware Inventory: Automatically detect and catalog connected devices in labs or production environments
- CI/CD Pipelines: Verify required hardware is available before running CI tests
- Device Management: Track connected debugging and serial devices
- System Integration: Generate hardware resource definitions for automated test systems
Development
Run Tests
make test
Format Code
make black
Build Distribution
make build
Requirements
Runtime Dependencies:
- requests >= 2.32
- typer >= 0.12
- rich >= 13.7
- pydantic >= 2.8
Development Dependencies:
- black >= 25.9.0
- pytest >= 8.4.2
- pytest-html
- pytest-cov
- build >= 1.2.1
- twine >= 5.1.1
License
MIT License - See LICENSE file for details
Support
This tool is intended for internal LumenRadio use. For issues or feature requests, please contact the development team.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lumenradio_hwscan-0.5.0.tar.gz.
File metadata
- Download URL: lumenradio_hwscan-0.5.0.tar.gz
- Upload date:
- Size: 22.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35f8bdcae5e7464d56ad1274ec38ad1d94c2b27369a7e03382dad98b49ad123b
|
|
| MD5 |
a833a7e11ec37fef4ef7b7d6c6dd8a34
|
|
| BLAKE2b-256 |
8f5c34c4ac594bdaab8ddb2267950eaaf923629c64f61d7c6873c0e82ca827d7
|
File details
Details for the file lumenradio_hwscan-0.5.0-py3-none-any.whl.
File metadata
- Download URL: lumenradio_hwscan-0.5.0-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
282098ae1b3e213b5cdb6b11b4b32cf50fae3aca28556f4b10c9ec7a3b4959f8
|
|
| MD5 |
14ab95176932a4aeec046029488077b3
|
|
| BLAKE2b-256 |
8757b358386e48c424d91f32601c99946afc267cd4b3d5ee105aa68e1b3e4265
|