- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 435
 
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 \
  --verboseupload.sh:
./arduino-cli \
  upload \
  --fqbn esp32:esp32:esp32da \
  --port /dev/cu.usbserial-0001 \
  plotter \
  --verbosemonitor.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
 
{ "success": true } { "rxData": "KqtQqlRVC1WlC6XVVbVVolRFsBHPIse4gR7DYSADIzAB/g==" } { "rxData": "MA==" } { "rxData": "LjAyMDAJMA==" } // ...