 
         chip_end = chip_size();
         Serial.print("Size = ");
-        Serial.println(chip_end * 2);  // Because we actually have double this
+        Serial.println(chip_end);
 
         Serial.println("OK");
 

      case 'R': {
        chip_end = chip_size();
        Serial.print("Read whole chip.  Size = ");
        Serial.println(chip_end * 2);
        Serial.print("DATA:");
        // chip_end == number of bytes in a single chip, i.e. 2 * number of words
        for (uint32_t addr = 0; addr < chip_end / 2; ++addr) {
          // fail gracefully on disconnect
          do {
            if (check_disconnect()) return;
          } while (!Serial.availableForWrite());
          // read a byte from flash and send it to the remote host
          serial_put_uint32(flash_read(addr));
        }
        flash_unlock();
        reset();

  Serial.println("OK");
}

// Return the number of bytes of flash on this board, i.e. double the byte count of one chip
uint32_t chip_size() {
  flash_write_both(0x55, 0x0098L);  // Enter CFI mode
  uint32_t size_log2 = flash_read(0x27) & 0xffff;
