-
-
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
ⓘ 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-20T13: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" }
]
}
}
}
ⓘ Note that the monitor stream is opened with 74880 baudrate.
This works and data comes in from the board.
But if I try to change the baudrate to 750 (which was listed as valid):
{
"updatedConfiguration": {
"settings": [
{ "settingId": "baudrate", "value": "750" }
]
}
}
ⓘ 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