Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Disable DTR clearing on 1200-bps touch (only on Windows) (#2234)
The reason why it was originally introduced:
arduino/Arduino@a6909bd

Why we are removing it now?
* Windows does preserve the state of the RTS/DTR bits on successive
  opening of the serial port.
* The serial library used in the Arduino IDE 1.8.x has a bug when trying
  to set DTR=false, on successive opening of the port the DTR line is
  set back high by the USB serial driver. This works differently from
  the serial library we use in the Arduino CLI, that sets DTR=false for
  good and this change is preserved on the successive opening of the
  port.
* Having the serial port left in a state with DTR=false may cause
  problems to tools uploading later.

It may probably completely removed, but for now, to reduce the testing
surface, it will be disabled only for Windows.
  • Loading branch information
cmaglie authored and fabik111 committed Aug 29, 2025
commit 64a0414bccfeb2f51a087e4bf0656dca5d84c377
14 changes: 10 additions & 4 deletions arduino/serialutils/serialutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package serialutils

import (
"fmt"
"runtime"
"strings"
"time"

Expand All @@ -37,10 +38,15 @@ func TouchSerialPortAt1200bps(port string) error {
return errors.WithMessage(err, tr("opening port at 1200bps"))
}

// Set DTR to false
if err = p.SetDTR(false); err != nil {
p.Close()
return errors.WithMessage(err, tr("setting DTR to OFF"))
if runtime.GOOS != "windows" {
// This is not required on Windows
// TODO: Investigate if it can be removed for other OS too

// Set DTR to false
if err = p.SetDTR(false); err != nil {
p.Close()
return errors.WithMessage(err, tr("setting DTR to OFF"))
}
}

// Close serial port
Expand Down
Loading