-
-
Notifications
You must be signed in to change notification settings - Fork 422
Description
Describe the problem
When trying to change the baudrate, I get this error:
{"error": "command 'configure' failed: invalid argument"}
This happens when I pick the 750 baudrate after starting the monitor with 74880.
To reproduce
plotter/plotter.ino
:
void setup() { Serial.begin(74880); // Set baudrate to 74880 to get the error when setting to 750 } void loop() { Serial.println("hello"); delay(1000); }
My scripts to compile, upload, and optionally monitor.
compile.sh
:
./arduino-cli \ compile \ --fqbn esp32:esp32:esp32da \ plotter \ --verbose
upload.sh
:
./arduino-cli \ upload \ --fqbn esp32:esp32:esp32da \ --port /dev/cu.usbserial-0001 \ plotter \ --verbose
monitor.sh
(optional):
./arduino-cli \ monitor \ --fqbn esp32:esp32:esp32da \ --port /dev/cu.usbserial-0001 \ --config baudrate=74880
i It is important to begin the serial communication with a 74880 baudrate. Selecting 9600, for example, will not cause the error.
Start the Arduino CLI in daemon mode:
./arduino-cli version
arduino-cli Version: git-snapshot Commit: d5ef61d6 Date: 2025年09月20日T13:04:53Z
./arduino-cli daemon
Daemon is now listening on 127.0.0.1:50051
{"IP":"127.0.0.1","Port":"50051"}
Open a new shell inside the arduino-cli
repo and run the following:
Generate the .proto files:
buf export . -o ./tmp/out
Create:
grpcurl \
-plaintext \
-import-path ./tmp/out \
-proto cc/arduino/cli/commands/v1/commands.proto \
127.0.0.1:50051 \
cc.arduino.cli.commands.v1.ArduinoCoreService.Create
{ "instance": { "id": 1 } }
Init:
grpcurl \
-plaintext \
-import-path ./tmp/out \
-proto cc/arduino/cli/commands/v1/commands.proto \
-d '{"instance": {"id": 1}}' \
127.0.0.1:50051 \
cc.arduino.cli.commands.v1.ArduinoCoreService.Init
Enumerate monitor port settings (FQBN is optional):
grpcurl -plaintext \
-import-path ./tmp/out \
-proto cc/arduino/cli/commands/v1/commands.proto \
-d '{"instance":{"id":1}, "port_protocol":"serial", "fqbn":"esp32:esp32:esp32da"}' \
localhost:50051 \
cc.arduino.cli.commands.v1.ArduinoCoreService/EnumerateMonitorPortSettings
{ "settings": [ { "settingId": "stop_bits", "label": "Stop bits", "type": "enum", "enumValues": [ "1", "1.5", "2" ], "value": "1" }, { "settingId": "baudrate", "label": "Baudrate", "type": "enum", "enumValues": [ "300", "600", "750", "1200", "2400", "4800", "9600", "19200", "31250", "38400", "57600", "74880", "115200", "230400", "250000", "460800", "500000", "921600", "1000000", "2000000" ], "value": "9600" }, { "settingId": "bits", "label": "Data bits", "type": "enum", "enumValues": [ "5", "6", "7", "8", "9" ], "value": "8" }, { "settingId": "dtr", "label": "DTR", "type": "enum", "enumValues": [ "on", "off" ], "value": "off" }, { "settingId": "parity", "label": "Parity", "type": "enum", "enumValues": [ "none", "even", "odd", "mark", "space" ], "value": "none" }, { "settingId": "rts", "label": "RTS", "type": "enum", "enumValues": [ "on", "off" ], "value": "off" } ] }
This lists the supported settings, including baudrates like 750.
Create the monitor duplex:
grpcurl \
-plaintext \
-import-path ./tmp/out \
-proto cc/arduino/cli/commands/v1/commands.proto \
-d @ \
127.0.0.1:50051 \
cc.arduino.cli.commands.v1.ArduinoCoreService.Monitor
Open the monitor:
{ "openRequest": { "instance": { "id": 1 }, "fqbn": "esp32:esp32:esp32da", "port": { "address": "/dev/cu.usbserial-0001", "protocol": "serial" }, "portConfiguration": { "settings": [ { "settingId": "baudrate", "value": "74880" } ] } } }
i Note that the monitor stream is opened with 74880 baudrate.
This works and data comes in from the board.
{ "success": true } { "rxData": "KqtQqlRVC1WlC6XVVbVVolRFsBHPIse4gR7DYSADIzAB/g==" } { "rxData": "MA==" } { "rxData": "LjAyMDAJMA==" } // ...
But if I try to change the baudrate to 750 (which was listed as valid):
{ "updatedConfiguration": { "settings": [ { "settingId": "baudrate", "value": "750" } ] } }
i I could not cause the error with other baudrates than 750, but I have not tried all.
I get this error:
{ "error": "command 'configure' failed: invalid argument" }
Expected behavior
- If a baudrate is not actually supported, it should not appear in the list.
- Or, if it cannot be detected reliably, the error should be more specific so clients can handle it.
Arduino CLI version
Operating system
macOS
Operating system version
15.6.1
Additional context
- Start the monitor connection with a 74880 baudrate.
- Select the 750 baudrate to cause the error.
Issue checklist
- I searched for previous reports in the issue tracker
- I verified the problem still occurs when using the nightly build
- My report contains all necessary details