diff --git a/src/sagas/flash-firmware.ts b/src/sagas/flash-firmware.ts index 158d7f934..3e101a79f 100644 --- a/src/sagas/flash-firmware.ts +++ b/src/sagas/flash-firmware.ts @@ -280,7 +280,7 @@ function* flashFirmware(action: FlashFirmwareFlashAction): Generator { throw Error('Missing hub type in MaxProgramFlashSize'); } - for (let offset = 0; offset < firmware.length; offset += maxDataSize) { + for (let offset = 0; ; ) { const payload = firmware.slice(offset, offset + maxDataSize); const programAction = (yield put( programRequest(info[0].startAddress + offset, payload.buffer), @@ -289,6 +289,13 @@ function* flashFirmware(action: FlashFirmwareFlashAction): Generator { yield put(progress(offset, firmware.length)); + // we don't want to request checksum if this is the last packet since + // the bootloader will send a response to the program request already. + offset += maxDataSize; + if (offset >= firmware.length) { + break; + } + if (connectResult.canWriteWithoutResponse) { // Request checksum every 10 packets to prevent buffer overrun on // the hub because of sending too much data at once. The actual