Arduino Disco
A lightweight Python library and CLI tool to discover Arduino boards connected via serial ports. It matches connected devices against the Arduino board database to provide FQBN (Fully Qualified Board Name) and architecture information.
The project is available on GitHub: https://github.com/christoph2/arduino-disco
Features
- Automated Discovery: Scans serial ports and identifies connected Arduino-compatible hardware.
- Board Database Matching: Uses your local Arduino installation to identify boards.
- Heuristic Scoring: Smart matching based on VID/PID, product strings, and manufacturer information.
- CLI Tool: Quick overview of connected boards directly from the terminal.
- Python API: Easy integration into your own Python projects.
Installation
pip install arduino-disco
Usage
Command Line Interface (CLI)
Run the tool to list discovered boards:
arduino-disco
To include all serial ports (even unrecognized ones), use the --all or -a flag:
arduino-disco --all
Example output for --all:
Port Board FQBN Core
COM6 Unknown - -
COM11 Unknown - -
COM5 Unknown - -
COM7 Unknown - -
COM10 Arduino Uno arduino:avr:uno avr
COM4 Arduino Uno arduino:avr:uno avr
COM8 ESP32 Family Device esp32:esp32:esp32_family esp32
Example output (default):
Port Board FQBN Core
COM4 Arduino Uno arduino:avr:uno avr
COM8 ESP32 Family Device esp32:esp32:esp32_family esp32
Python API
You can use the library in your own scripts:
from arduinodisco import discover_boards
# Get only recognized boards
boards = discover_boards()
for entry in boards:
print(f"Found {entry.board.name} on {entry.port.device}")
print(f"FQBN: {entry.board.fqbn}")
# Get all ports, including unrecognized ones
all_ports = discover_boards(include_all_ports=True)
Development
Prerequisites
Install development dependencies:
pip install -e ".[dev]"
Versioning
To bump the version (using bumpver):
bumpver update --patch
Pre-commit Hooks
To ensure code quality, install the pre-commit hooks:
pre-commit install
License
This project is licensed under the MIT License - see the pyproject.toml for details.
Release files for arduino-disco 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| arduino_disco-0.1.0.tar.gz | 5.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arduino_disco-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.9 kB
Release files / arduino_disco-0.1.0.tar.gz
| Download URL | arduino_disco-0.1.0.tar.gz |
|---|---|
| Size | 5.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3b47d3891850031d964f5014b59da5c2e3dc16f465b470e7ac171f6d9b84a582
|
|
BLAKE2b-256 checksum How to use checksums |
b657b1b293fe796cd99008abea804262ec720483cf21714f0501cc48bdb5ca1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / arduino_disco-0.1.0-py3-none-any.whl
| Download URL | arduino_disco-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d07f98558f687f20bc61eacd20663e64ec046e9cae1790708f4db5a4b1142e42
|
|
BLAKE2b-256 checksum How to use checksums |
3571ed67dfb926384bbb4d73905386f971bc404d7fb9a823e5ad4c90c9e1853d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|