Currently AVRDUDE in combination with the Arduino serial bootloader is using the DTR line to generate a reset. However there is a new simple FTDI chip, FT230x, that han only basic control lines RxD, TxD, RTS and CTS, so no DTR line. Same for some other assembled USB-Serial converters.
To solve this problem i suggest to add an configuration option to use the RTS line to generate a reset, instead of the DTR line. This will solve many problems, also the FTDI FRIEND Serial interface has standard the RTS line connected, not the DTR line.
The simplest way to do so is in the AVRDUDE.CONF file to define Reset = DTR or Reset = RTS in the "Arduino" section. A pulse on the selected output will reset the Arduino and start the Bootloader.
I believe you are already free to use either DTR or RTS, as you like. Did you try it?
retrolefty:
On the first board that arduino developed that used an auto-reset feature the IDE used the RTS control signal to trigger the reset to the board. On later boards they changed to using the DTR signal to use that (I recall no reason given for the change) for the trigger signal. So to keep compatibility they had to issue both RTS and DTR pulses. There should be no issue in the future but who knows what the future may bring. One issue is that when opening the serial monitor the DTR is pulsed which causes a board reset and I don't recall if opening the serial monitor pulses RTS or not, probably not and it would be easy for you to test this.
And regarding the question of Serial Monitor raised in that quote, here's something just last week from one of the lead Arduino developers:
On Serial Monitor open, we use dtr and rts signals to reboot the main processor (if the board is a UNO-like). Probably your 644 completely resets if these signals are being moved, so the workaround is to add serial.disableRTS and serial.disableDTR to boards.txt
Note the mention of a nifty little feature they never bothered to document.