Skip to content

Monitor: "configure failed: invalid argument" when selecting 750 baudrate after starting the monitor with 74880 #3010

@dankeboy36

Description

@dankeboy36

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.

{ "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 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

d5ef61d

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    os: macosSpecific to macOS operating systemtopic: codeRelated to content of the project itselftype: imperfectionPerceived defect in any part of project

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions