Flipper Zero WiFi Devboard flashing

From Modding Fridays
Jump to navigation Jump to search

Flashing the Flipper Zero WiFi Devboard can be done by all sorts of user-friendly tools and scripts that tends to make things way more complicated and hard to debug if things go wrong. All the way down it's basically always esptool.py, the Espressif SoC serial bootloader utility, that's called to do the actual flashing, so why not using it directly? Let's.

Download mode

The board needs to be put in download to be flashed.

Method 1

  • plug the board to the computer
  • press and hold the boot switch
  • press and release the reset switch
  • release the boot switch

Method 2

  • press and hold the boot switch
  • plug the board to the computer
  • press and release the reset switch
  • release the boot switch

If everything went fine your board should be reachable at /dev/ttyACM0, make sure your user has the permissions to write to it :)

Official firmware

  • Download the required files
wget https://update.flipperzero.one/builds/blackmagic-firmware/0.x.x/blackmagic-firmware-s2-full-0.x.x.tgz
tar xvf blackmagic-firmware-s2-full-0.x.x.tgz
  • Put the board in download mode (see above)
  • Query the board. This is needed in situations where the board does not respond well to the final esptool.py flash command. For instance when you get a lot of [Errno 71] Protocol error
esptool.py -p /dev/ttyACM0 flash_id
  • If the query is successful (chip is detected properly etc) you can proceed with flash, otherwise start again from scratch
esptool.py -p /dev/ttyACM0 -b 460800 --chip esp32s2 write_flash --flash_mode dio --flash_freq 80m --flash_size 4MB 0x1000 bootloader.bin 0x10000 blackmagic.bin 0x8000 partition-table.bin
  • press the reset switch
  • done!

Unofficial firmwares

It's the same really. You just need to get the files and provide the correct addresses to flash. Here is an example with the Marauder firmware:

  • Download the required files
wget https://github.com/justcallmekoko/ESP32Marauder/releases/download/v0.xx.x/esp32_marauder_v0_xx_xx_202xxxxx_flipper.bin
wget https://github.com/justcallmekoko/ESP32Marauder/raw/master/FlashFiles/FlipperZeroDevBoard/esp32_marauder.ino.partitions.bin
wget https://github.com/justcallmekoko/ESP32Marauder/raw/master/FlashFiles/FlipperZeroMultiBoardS3/boot_app0.bin
wget https://github.com/justcallmekoko/ESP32Marauder/raw/master/FlashFiles/FlipperZeroDevBoard/esp32_marauder.ino.bootloader.bin
  • Put the board in download mode (see above)
  • Query the board. This is needed in situations where the board does not respond well to the final esptool.py flash command. For instance when you get a lot of [Errno 71] Protocol error
esptool.py -p /dev/ttyACM0 flash_id
  • If the query is successful (chip is detected properly etc) you can proceed with flash, otherwise start again from scratch
esptool.py -p /dev/ttyACM0 -b 460800 --chip esp32s2 write_flash --flash_mode dio --flash_freq 80m --flash_size 4MB 0x1000 esp32_marauder.ino.bootloader.bin 0x8000 esp32_marauder.ino.partitions.bin 0xE000 boot_app0.bin 0x10000 esp32_marauder_v0_xx_xx_202xxxxx_flipper.bin
  • press the reset switch
  • done!