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.jsonlarger 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.