I was told, that when computer opens port, it sends DTR (Data Terminal Ready) signal to Arduino, which initiates Arduino reboot.

This looks like part of DTR / DSR flow control. According to this, in response to DTR, Arduino should no only reboot, but also raise DSR (Data Set Ready) signal when it is ready to receive data

And computer should wait for it.

Does it happen so?

2 Answers 2


No, this doesn't happen.

DTR is used purely for resetting the board. Personally I would have chosen the RTS signal instead, but the wise guys at Arduino decided on DTR.

The Arduino has no knowledge of the DTR signal, it only knows that it has been rebooted. Whether that reboot came from DTR, or from the reset button, or wherever, it has no knowledge.

So the DTR is being (in my opinion ab-) used to perform the resetting in order to make uploading a sketch easier and that is all.

  • If you have no control over the other device and don't want your arduino to reset you can check the 328P datasheet: "The External Reset can be disabled by the RSTDISBL fuse, see Table 28-7 on page 282."
    – aaa
    Oct 13, 2015 at 14:18
  • Also, there is a possiblity to have knowledge of what has resetted your Arduino. It does go a bit further than Arduino only and involves reading the register: "11.9.1 MCUSR – MCU Status Register The MCU Status Register provides information on which reset source caused an MCU reset."
    – aaa
    Oct 13, 2015 at 14:20
  • @FuaZe That will only tell you that something lowered the reset pin - it can't know what that something is, and there's more than one thing on an Arduino that can lower that reset pin.
    – Majenko
    Oct 13, 2015 at 14:39

No, it does not, and can not for the simple reason that there is no DSR line connected to the processor.

Generally host software / serial driver configuration ignores DSR.

On the boards with an 8u2/16u2 the custom firmware therein can report whatever virtual state of the signal it is programmed to. On those with hardware USB-serial they will report however the pin is hard wired, or whatever value it is pulled to or floating at.

None of these (possibly excepting a Leonardo type board or an ARM one with native USB) reflect anything about the state of the target processor, so software hoping to talk to an Arduino should ignore the DSR signal.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.