Skip to main content

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)

Source distribution for arduino-disco 0.1.0
File Size Uploaded
arduino_disco-0.1.0.tar.gz 5.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for arduino-disco 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page