diff --git a/avrdude/ChangeLog b/avrdude/ChangeLog
index 6c3542db..86a9c334 100644
--- a/avrdude/ChangeLog
+++ b/avrdude/ChangeLog
@@ -1,3 +1,8 @@
+2013-09-13  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
+
+	bug #34277: avrdude reads wrong byte order if using avr911 (aka butterfly)
+	* butterfly.c (butterfly_read_byte_flash): Swap bytes received.
+
 2013-09-12  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
 
 	bug #37768 Poll usbtiny 100 times at init time to handle low-clock devices
diff --git a/avrdude/NEWS b/avrdude/NEWS
index 8e9d194f..d08ef288 100644
--- a/avrdude/NEWS
+++ b/avrdude/NEWS
@@ -95,6 +95,7 @@ Current:
       - bug #38732: Support for ATtiny1634
       - bug #36901 flashing Atmega32U4 EEPROM produces garbage on chip
       - bug #28344 chip_erase_delay too short for ATmega324P, 644, 644P, and 1284P
+      - bug #34277: avrdude reads wrong byte order if using avr911 (aka butterfly)
 
   * Keep track of input file contents
 
diff --git a/avrdude/butterfly.c b/avrdude/butterfly.c
index b114ab19..db4098a5 100644
--- a/avrdude/butterfly.c
+++ b/avrdude/butterfly.c
@@ -521,13 +521,13 @@ static int butterfly_read_byte_flash(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
     butterfly_recv(pgm, buf, sizeof(buf));
 
     if ((addr & 0x01) == 0) {
-      *value = buf[1];
+      *value = buf[0];
       cached = 1;
-      cvalue = buf[0];
+      cvalue = buf[1];
       caddr = addr;
     }
     else {
-      *value = buf[0];
+      *value = buf[1];
     }
   }