A fatal error occurred: Invalid head of packet

Trying to upload to a Wemos D1 Mini / ESP8266 via USB on a Macbook, but getting this error.

platform.ini is:

[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino
upload_port = /dev/cu.usbserial*
monitor_baud = 115200
upload_speed = 921600
upload_protocol = esptool

Output of pio is:

Ryans-MacBook-Air-3:esp rw3iss$ pio run -t upload -v
Warning! `monitor_baud` configuration option in section [env:d1_mini] is deprecated and will be removed in the next release! Please use `monitor_speed` instead
Processing d1_mini (platform: espressif8266; board: d1_mini; framework: arduino; upload_port: /dev/cu.usbserial*; upload_speed: 921600; upload_protocol: esptool; monitor_speed: 115200)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CorePackageManager: Installing tool-scons @ ~2.20501.7
Downloading  [####################################]  100%
tool-scons @ 2.20501.190826 has been successfully installed!
Uninstalling tool-scons @ 3.30101.0: 	[OK]
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/d1_mini.html
PLATFORM: Espressif 8266 2.2.3 > WeMos D1 R2 and mini
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES: toolchain-xtensa 2.40802.190218 (4.8.2), tool-esptool 1.413.0 (4.13), tool-mkspiffs 1.200.0 (2.0), tool-esptoolpy 1.20600.0 (2.6.0), framework-arduinoespressif8266 2.20502.0 (2.5.2)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 28 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <ESP8266WiFi> 1.0 (/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi)
xtensa-lx106-elf-g++ -o .pio/build/d1_mini/src/main.cpp.o -c -fno-rtti -std=c++11 -Os -mlongcalls -mtext-section-literals -falign-functions=4 -U__STRICT_ANSI__ -ffunction-sections -fdata-sections -fno-exceptions -Wall -DPLATFORMIO=40003 -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_WEMOS_D1MINI -DF_CPU=80000000L -D__ets__ -DICACHE_FLASH -DARDUINO=10805 -DARDUINO_BOARD=\"PLATFORMIO_D1_MINI\" -DFLASHMODE_DIO -DLWIP_OPEN_SRC -DNONOSDK221=1 -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DVTABLES_IN_FLASH -Iinclude -Isrc -I/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src -I/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include -I/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include -I/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/cores/esp8266 -I/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lwip2/include -I/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/variants/d1_mini src/main.cpp
xtensa-lx106-elf-gcc -CC -E -P -DVTABLES_IN_FLASH /Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/tools/sdk/ld/eagle.app.v6.common.ld.h -o .pio/build/d1_mini/ld/local.eagle.app.v6.common.ld
(bunch more gcc calls, removed for brevity)
xtensa-lx106-elf-ar rc .pio/build/d1_mini/libFrameworkArduino.a .pio/build/d1_mini/FrameworkArduino/Esp-frag.cpp.o .pio/build/d1_mini/FrameworkArduino/Esp-version.cpp.o .pio/build/d1_mini/FrameworkArduino/Esp.cpp.o .pio/build/d1_mini/FrameworkArduino/FS.cpp.o .pio/build/d1_mini/FrameworkArduino/FunctionalInterrupt.cpp.o .pio/build/d1_mini/FrameworkArduino/HardwareSerial.cpp.o .pio/build/d1_mini/FrameworkArduino/IPAddress.cpp.o .pio/build/d1_mini/FrameworkArduino/MD5Builder.cpp.o .pio/build/d1_mini/FrameworkArduino/Print.cpp.o .pio/build/d1_mini/FrameworkArduino/Schedule.cpp.o .pio/build/d1_mini/FrameworkArduino/ScheduledFunctions.cpp.o .pio/build/d1_mini/FrameworkArduino/StackThunk.cpp.o .pio/build/d1_mini/FrameworkArduino/Stream.cpp.o .pio/build/d1_mini/FrameworkArduino/StreamString.cpp.o .pio/build/d1_mini/FrameworkArduino/Tone.cpp.o .pio/build/d1_mini/FrameworkArduino/Updater.cpp.o .pio/build/d1_mini/FrameworkArduino/WMath.cpp.o .pio/build/d1_mini/FrameworkArduino/WString.cpp.o .pio/build/d1_mini/FrameworkArduino/abi.cpp.o .pio/build/d1_mini/FrameworkArduino/base64.cpp.o .pio/build/d1_mini/FrameworkArduino/cbuf.cpp.o .pio/build/d1_mini/FrameworkArduino/cont.S.o .pio/build/d1_mini/FrameworkArduino/cont_util.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_app_entry_noextra4k.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_eboot_command.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_flash_utils.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_i2s.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_main.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_noniso.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_phy.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_postmortem.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_si2c.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_sigma_delta.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_timer.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_waveform.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_wiring.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_wiring_analog.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_wiring_digital.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_wiring_pulse.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_wiring_pwm.cpp.o .pio/build/d1_mini/FrameworkArduino/core_esp8266_wiring_shift.cpp.o .pio/build/d1_mini/FrameworkArduino/debug.cpp.o .pio/build/d1_mini/FrameworkArduino/gdb_hooks.cpp.o .pio/build/d1_mini/FrameworkArduino/heap.cpp.o .pio/build/d1_mini/FrameworkArduino/libb64/cdecode.cpp.o .pio/build/d1_mini/FrameworkArduino/libb64/cencode.cpp.o .pio/build/d1_mini/FrameworkArduino/libc_replacements.cpp.o .pio/build/d1_mini/FrameworkArduino/sntp-lwip2.cpp.o .pio/build/d1_mini/FrameworkArduino/spiffs/spiffs_cache.cpp.o .pio/build/d1_mini/FrameworkArduino/spiffs/spiffs_check.cpp.o .pio/build/d1_mini/FrameworkArduino/spiffs/spiffs_gc.cpp.o .pio/build/d1_mini/FrameworkArduino/spiffs/spiffs_hydrogen.cpp.o .pio/build/d1_mini/FrameworkArduino/spiffs/spiffs_nucleus.cpp.o .pio/build/d1_mini/FrameworkArduino/spiffs_api.cpp.o .pio/build/d1_mini/FrameworkArduino/spiffs_hal.cpp.o .pio/build/d1_mini/FrameworkArduino/sqrt32.cpp.o .pio/build/d1_mini/FrameworkArduino/time.cpp.o .pio/build/d1_mini/FrameworkArduino/uart.cpp.o .pio/build/d1_mini/FrameworkArduino/umm_malloc/umm_malloc.cpp.o
xtensa-lx106-elf-ranlib .pio/build/d1_mini/libFrameworkArduino.a
xtensa-lx106-elf-g++ -o .pio/build/d1_mini/firmware.elf -T eagle.flash.4m1m.ld -Os -nostdlib -Wl,--no-check-sections -Wl,-static -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read -u app_entry -u _printf_float -u _scanf_float -u _DebugExceptionVector -u _DoubleExceptionVector -u _KernelExceptionVector -u _NMIExceptionVector -u _UserExceptionVector .pio/build/d1_mini/src/main.cpp.o -L.pio/build/d1_mini -L.pio/build/d1_mini/ld -L/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lib -L/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/tools/sdk/ld -L/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/lib -L/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lib/NONOSDK221 -Wl,--start-group .pio/build/d1_mini/lib5ad/libESP8266WiFi.a .pio/build/d1_mini/libFrameworkArduinoVariant.a .pio/build/d1_mini/libFrameworkArduino.a -lhal -lphy -lpp -lnet80211 -lwpa -lcrypto -lmain -lwps -lbearssl -laxtls -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc -llwip2-536-feat -Wl,--end-group
<lambda>(["checkprogsize"], [".pio/build/d1_mini/firmware.elf"])
MethodWrapper(["checkprogsize"], [".pio/build/d1_mini/firmware.elf"])
"/usr/bin/python" "/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/tools/elf2bin.py" --eboot "/Users/rw3iss/.platformio/packages/framework-arduinoespressif8266/bootloaders/eboot/eboot.elf" --app .pio/build/d1_mini/firmware.elf --flash_mode dio --flash_freq 40 --flash_size 4M --path "/Users/rw3iss/.platformio/packages/toolchain-xtensa/bin" --out .pio/build/d1_mini/firmware.bin
Memory Usage -> http://bit.ly/pio-memory-usage
DATA:    [===       ]  32.4% (used 26540 bytes from 81920 bytes)
PROGRAM: [==        ]  24.6% (used 257072 bytes from 1044464 bytes)
.pio/build/d1_mini/firmware.elf  :
section                                                                                    size         addr
.data                                                                                      1268   1073643520
.noinit                                                                                       4   1073644788
.text                                                                                       144   1074790400
.irom0.text                                                                              230868   1075843088
.text1                                                                                    24248   1074790544
.rodata                                                                                     544   1073644800
.bss                                                                                      24728   1073645344
.comment                                                                                   5065            0
.xtensa.info                                                                                 56            0
.xt.prop._ZNSt14_Function_baseD2Ev                                                           48            0
.xt.prop._ZNSt8functionIFvvEE4swapERS1_                                                      36            0
.xt.lit._ZN18ScheduledFunctions16ScheduledElementD2Ev                                         0            0
.xt.lit._ZNSt10_List_baseIN18ScheduledFunctions16ScheduledElementESaIS1_EE8_M_clearEv         0            0
.xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev                            48            0
.xt.prop._ZN18ScheduledFunctions16ScheduledElementD2Ev                                       48            0
.xt.prop._ZNSt10_List_baseIN18ScheduledFunctions16ScheduledElementESaIS1_EE8_M_clearEv       72            0
.debug_frame                                                                              19308            0
.debug_info                                                                              269261            0
.debug_abbrev                                                                             45780            0
.debug_loc                                                                               121214            0
.debug_aranges                                                                             5488            0
.debug_ranges                                                                              6736            0
.debug_line                                                                              121801            0
.debug_str                                                                                60775            0
Total                                                                                    937540
Creating BIN file ".pio/build/d1_mini/firmware.bin" using ".pio/build/d1_mini/firmware.elf"
<lambda>(["upload"], [".pio/build/d1_mini/firmware.bin"])
AVAILABLE: espota, esptool
CURRENT: upload_protocol = esptool
MethodWrapper(["upload"], [".pio/build/d1_mini/firmware.bin"])
Auto-detected: /dev/cu.usbserial-1410
"/usr/bin/python" "/Users/rw3iss/.platformio/packages/tool-esptoolpy/esptool.py" --chip esp8266 --port "/dev/cu.usbserial-1410" --baud 921600 write_flash 0x0 .pio/build/d1_mini/firmware.bin
esptool.py v2.6
Serial port /dev/cu.usbserial-1410
Connecting....
Chip is ESP8266EX
Features: WiFi
MAC: 50:02:91:c3:46:47
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...

A fatal error occurred: Invalid head of packet (0xE0)
*** [upload] Error 2
======================================================================================================= [FAILED] Took 22.72 seconds =======================================================================================================

Anyone have a suggestion, please?

Try slowing down your upload speed… anything above 460800 is prone to failure with CH340 serial UARTs on *nix systems…

I use …

upload_speed = 460800

… on both Linux and Windows without any issues.

1 Like

You are a saint! Worked, thank you!

1 Like

Woohoo! Happy coding! :slight_smile: