Skip to main content

ESP32 Flasher

These commands are available three ways — in the FREE-WILi GUI app, in a serial terminal, and on the device itself. See Connecting it to a computer for how to reach them.

Connect To Bootloader​

Drives the ESP32's BOOT and EN pins to put the target into ROM bootloader (download) mode and establishes a serial-loader sync over the UART. Once synced, this command is a prerequisite for all other flash/memory/register operations in this menu.

Typical Workflow​

b <baud> # Connect To Bootloader
i # Read Chip ID / security info
k # Read flash size
f ... # Start flash operations
o ... # Write flash data
p 1 # Finish flash, reboot

Troubleshooting​

  • Timeout — check wiring of EN, BOOT, TX, RX, GND.
  • Invalid target — chip or revision not supported by the loader build.
  • Invalid response at high baud — retry with 0 (stay at 115200) or shorter / better-quality wires.

How to use it — press b. At the prompt, enter: Baudrate to updgrade to upon successful connection.

What you enter — upgrade_transmission_rate.

Reset​

Instruct the ESP32 to enter into application

How to use it — press r.

Read Chip ID And Security Info​

Toggle ESP32's Enable Pin

How to use it — press i.

Read Flash Size​

Toggle ESP32's Enable Pin

How to use it — press k.

Read MAC​

Returns MAC of esp32

How to use it — press m.

Erase All Flash​

Toggle ESP32's Enable Pin

How to use it — press e.

Start Writing Flash Operations​

Prepares ESP32 to write flash at offset and expected size. Block size can be up to 128 bytes

How to use it — press f. At the prompt, enter: offset (hex), followed by image size (int) and expected block size (int).

What you enter — offset, size, block_size.

Finish Flash Writing Operations​

Ends ESP32 Flashing Operations.

How to use it — press p. At the prompt, enter: Reboot esp32 after stopping flash operations (1 - yes, 0 - no:).

What you enter — reboot.

Write Flash​

Writes Binary Blob into flash

How to use it — press o. At the prompt, enter: Byte separated by spaces, up to 128 bytes:

What you enter — flash_data.

Read Flash​

Reads binary blob from flash with given address and size.

How to use it — press j. At the prompt, enter: offset (hex) followed by size to read.

What you enter — offset, size.

Start Memory Write Operations​

Perpares memeory write operations on the esp32. Max Block Size size is 128

How to use it — press y. At the prompt, enter: offset (hex), followed by image size (int) and expected block size (int).

What you enter — offset, memory_block, block_size.

Write Memory​

Perpares memeory write operations on the esp32. Max Block Size size is 128

How to use it — press 0. At the prompt, enter: offset (hex), followed by image size (int) and expected block size (int).

What you enter — offset, memory_block, block_size.

Stop Memory Write Operations​

Disables memory write operations on esp32 and sets entry point in ram

How to use it — press t. At the prompt, enter: entry offset (hex) that the esp32 will boot to in RAM:

What you enter — entry_address.

Write Register​

Writes a 4 byte value onto a register in the esp32

How to use it — press g. At the prompt, enter: Regiser Address (hex) followed by value (hex):

What you enter — offset, value.

Read Register​

Reads a 4 byte value from a register in the esp32

How to use it — press c. At the prompt, enter: Regiser Address (hex) to read from:

What you enter — offset.

Flash Default App​

Flash default application onto ESP32

How to use it — press n.

Flash From Folder​

Starts flashing the ESP32 from a folder on the SD card. The folder must contain a flasher_args.json manifest as produced by an idf.py build (copy the whole build output folder - the manifest plus the .bin files it references - onto the SD card).

Typical Workflow​

w # wireless menu
a # ESP32 Flasher Functions
w 1:/bottlenose/ # start flashing
s # poll: flashing progress partition_index partition_count

Troubleshooting​

  • Timeout events - ESP32 not entering the bootloader; check power and the BOOT/EN lines.
  • Manifest parse errors - flasher_args.json larger than 4 KB or more than 6 partitions is rejected.

How to use it — press w. At the prompt, enter: SD card folder containing flasher_args.json (e.g. 1:/bottlenose/).

What you enter — folder.

Flash Status​

Reports ESP32 flashing state and progress percentage

How to use it — press s.