diff --git a/NEWS b/NEWS
index 93e00bcd..300660e2 100644
--- a/NEWS
+++ b/NEWS
@@ -133,6 +133,9 @@ Changes since version 6.4:
     - Tweak programmer info formatting strings #872
     - Remove libhid support in ser_avrdoper.c in favor of libhidapi #882
     - Reduce jtag3 output verbosity #877
+    - Fix Curiosity Nano target voltage #878
+    - Smallest possible fix for PL2303HX #885
+    - Add missing USBtiny derived programmers #873
 
   * Internals:
 
diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in
index 4b4766fb..e5aacbd7 100644
--- a/src/avrdude.conf.in
+++ b/src/avrdude.conf.in
@@ -886,6 +886,24 @@ programmer
   usbpid     = 0x0c9f;
 ;
 
+programmer
+  id    = "arduinoisp";
+  desc  = "Arduino ISP Programmer";
+  type  = "usbtiny";
+  connection_type = usb;
+  usbvid     = 0x2341;
+  usbpid     = 0x0049;
+;
+
+programmer
+  id    = "arduinoisporg";
+  desc  = "Arduino ISP Programmer";
+  type  = "usbtiny";
+  connection_type = usb;
+  usbvid     = 0x2A03;
+  usbpid     = 0x0049;
+;
+
 # commercial version of USBtiny, using a separate VID/PID
 programmer
   id    = "ehajo-isp";
@@ -896,6 +914,16 @@ programmer
   usbpid     = 0x0BA5;
 ;
 
+# commercial version of USBtiny, using a separate VID/PID
+programmer
+  id    = "iseavrprog";
+  desc  = "USBtiny-based USB programmer, https://github.com/IowaScaledEngineering/ckt-avrprogrammer";
+  type  = "usbtiny";
+  connection_type = usb;
+  usbvid     = 0x1209;
+  usbpid     = 0x6570;
+;
+
 programmer
   id = "micronucleus";
   desc = "Micronucleus Bootloader";
@@ -914,16 +942,6 @@ programmer
   usbpid = 0x0478;
 ;
 
-# commercial version of USBtiny, using a separate VID/PID
-programmer
-  id    = "iseavrprog";
-  desc  = "USBtiny-based USB programmer, https://github.com/IowaScaledEngineering/ckt-avrprogrammer";
-  type  = "usbtiny";
-  connection_type = usb;
-  usbvid     = 0x1209;
-  usbpid     = 0x6570;
-;
-
 programmer
   id    = "butterfly";
   desc  = "Atmel Butterfly Development Board";
diff --git a/src/updi_link.c b/src/updi_link.c
index 684b6b8d..1f179398 100644
--- a/src/updi_link.c
+++ b/src/updi_link.c
@@ -53,7 +53,7 @@ static void updi_set_rtsdtr_mode(PROGRAMMER* pgm)
 
 static int updi_physical_open(PROGRAMMER* pgm, int baudrate, unsigned long cflags)
 {
-  serial_recv_timeout = 100;
+  serial_recv_timeout = 1000;
   union pinfo pinfo;
 
   pinfo.serialinfo.baud = baudrate;
@@ -155,6 +155,8 @@ static int updi_physical_send_double_break(PROGRAMMER * pgm)
   serial_send(&pgm->fd, buffer, 1);
   serial_recv(&pgm->fd, buffer, 1);
 
+  serial_drain(&pgm->fd, 0);
+
   if (serial_setparams(&pgm->fd, pgm->baudrate? pgm->baudrate: 115200, SERIAL_8E2) < 0) {
     return -1;
   }
@@ -196,10 +198,14 @@ int updi_physical_sib(PROGRAMMER * pgm, unsigned char * buffer, uint8_t size)
 
 int updi_link_open(PROGRAMMER * pgm) 
 {
+  unsigned char init_buffer[1];
+
   if (updi_physical_open(pgm, pgm->baudrate? pgm->baudrate: 115200, SERIAL_8E2) < 0) {
     return -1;
   }
-  return updi_physical_send_double_break(pgm);
+
+  init_buffer[0]=UPDI_BREAK;
+  return updi_physical_send(pgm, init_buffer, 1);
 }
 
 void updi_link_close(PROGRAMMER * pgm)