com-com
A smart CLI tool for identifying, monitoring, and managing Arduino and microcontroller COM/serial ports.
Features
- Detect connected Arduino boards and other microcontrollers by VID/PID
- Real-time watch mode — see devices connect and disconnect live
- Assign friendly nicknames to ports
- View full connection history with timestamps and uptime
- Export device list to JSON, CSV, or table format
- Copy a port name to clipboard interactively
Supported boards
Arduino (Uno, Mega, Leonardo, Nano, MKR, Nano 33 BLE, Uno R4...), ESP32 / CP210x, FTDI, STM32, Teensy, Adafruit Feather/Metro, Raspberry Pi Pico, Seeed XIAO, SparkFun Pro Micro, BBC micro:bit, WCH CH340/CH341 clones, and more.
Installation
From source (requires Rust)
Or install directly from crates.io once published:
Windows — linker setup
Rust on Windows needs a linker. Pick one:
Option A — MSVC (recommended): Install Build Tools for Visual Studio with the "Desktop development with C++" workload, then:
Option B — GNU via MSYS2:
- Install MSYS2
- In an MSYS2 MinGW64 terminal:
pacman -S mingw-w64-x86_64-gcc - Add
C:\msys64\mingw64\binto your system PATH rustup default stable-x86_64-pc-windows-gnu
If MSYS2 is not on your PATH, uncomment the linker block in .cargo/config.toml and point it at your GCC installation.
Linux
No extra steps — cargo build works out of the box.
You may need libudev for the serialport crate:
# Debian/Ubuntu
# Fedora/RHEL
macOS
No extra steps — cargo build works out of the box.
Usage
# List connected Arduino/MCU devices
# Show all serial ports (including PCI, Bluetooth, unknown)
# Real-time watch mode (Ctrl+C to stop)
# Show connection history (last 24 hours by default)
# Show history for the last 7 days
# Show devices disconnected in the last 30 minutes
# Verbose output (serial number, product string)
# Assign a nickname to a port
# Remove a nickname
# List all saved nicknames
# Interactively copy a port name to clipboard
# Export to JSON or CSV
# Filter to only known MCU boards or only unknown USB serial devices
# Adjust watch polling interval (milliseconds)
# Clear all saved connection history
Data storage
All persistent data lives in your OS application data directory:
| OS | Path |
|---|---|
| Windows | %APPDATA%\com-com\ |
| macOS | ~/Library/Application Support/com-com/ |
| Linux | ~/.local/share/com-com/ (or $XDG_DATA_HOME) |
Files:
config.json— saved nicknamessession.json— current session connection timestampshistory.json— full connection/disconnection event log
Contributing
Pull requests are welcome. To get started:
To add board support, edit the KNOWN_VIDS and BOARD_NAMES tables in src/detection.rs.
License
MIT — see LICENSE.