Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

Open
Labels
os: macosSpecific to macOS operating system topic: codeRelated to content of the project itself type: imperfectionPerceived defect in any part of project
@dankeboy36

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

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 system topic: codeRelated to content of the project itself type: 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

        AltStyle によって変換されたページ (->オリジナル) /