83 lines
2.6 KiB
Markdown
83 lines
2.6 KiB
Markdown
# arduino-cli (Arduino CLI)
|
|
|
|
## What it is
|
|
|
|
Arduino's headless build tool: manage cores (board support packages) and
|
|
libraries, compile sketches, and upload over serial — no IDE required. Good
|
|
fit for CI builds of Arduino-based firmware.
|
|
|
|
## Install
|
|
|
|
Official script (latest stable into `~/.local/bin`):
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh \
|
|
| BINDIR=~/.local/bin sh
|
|
```
|
|
|
|
Static binaries (x86_64/arm64) also on the releases page if you want to pin a
|
|
version. Add `~/.local/bin` to PATH if it isn't already.
|
|
|
|
## Authenticate
|
|
|
|
None for core functionality. Only the (optional) Arduino Cloud integration
|
|
uses credentials — we don't use it; keep any such tokens in Vaultwarden if you
|
|
ever enable it.
|
|
|
|
## Configure for this environment
|
|
|
|
First-run setup for AVR + ESP32:
|
|
|
|
```bash
|
|
arduino-cli config init
|
|
arduino-cli config add board_manager.additional_urls \
|
|
https://espressif.github.io/arduino-esp32/package_esp32_index.json
|
|
arduino-cli core update-index
|
|
arduino-cli core install arduino:avr
|
|
arduino-cli core install esp32:esp32
|
|
arduino-cli lib install "PubSubClient"
|
|
```
|
|
|
|
Serial access: `sudo usermod -aG dialout $USER` (re-login).
|
|
|
|
Typical cycle:
|
|
|
|
```bash
|
|
arduino-cli board list # find the port + FQBN
|
|
arduino-cli compile --fqbn esp32:esp32:esp32 sketch/
|
|
arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:esp32 sketch/
|
|
arduino-cli monitor -p /dev/ttyUSB0 -c baudrate=115200
|
|
```
|
|
|
|
## Self-hosted equivalent
|
|
|
|
Fully local — cores/libraries download from public indexes, but builds and
|
|
uploads happen on the laptop. No cloud dependency. (Build artifacts can be
|
|
mirrored to MinIO `http://192.168.0.40:9000` with the rest of the firmware.)
|
|
|
|
## Aurélio integration
|
|
|
|
The **embedded-linux** skill uses `arduino-cli` for Arduino-core firmware
|
|
builds and uploads (ESP32/AVR). Flashed devices usually talk to the
|
|
`mqtt-local` broker connector.
|
|
|
|
## Verify
|
|
|
|
```bash
|
|
arduino-cli version
|
|
# arduino-cli Version: 1.x.y ...
|
|
arduino-cli board list
|
|
# Port Protocol Type Board Name FQBN Core
|
|
# /dev/ttyUSB0 serial Serial Port (USB) Unknown esp32:esp32:... esp32:esp32
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
- **`Board not found` on compile** — the core isn't installed;
|
|
`arduino-cli core search <chip>` then `core install`.
|
|
- **ESP32 package index ignored** — the `additional_urls` must be added via
|
|
`config add` (as above), then `core update-index` again.
|
|
- **Upload permission denied** — `dialout` group missing, or `arduino-cli
|
|
monitor`/minicom still holding the port.
|
|
- **Compile cache confusion after core upgrade** — `arduino-cli cache clean`
|
|
then rebuild.
|