-
Notifications
You must be signed in to change notification settings - Fork 415
Installation
Flash directly from your browser — no tools or command line required:
Requires Chrome, Edge, or Opera. Select your firmware variant (WiFi or Ethernet), click "Connect & Install", and follow the prompts. All supported chips (ESP32, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-S3, WT32-ETH01) are detected automatically.
Once you have installed the firmware via this flashing procedure, you can easily update the binaries directly from the web interface. Download just the latest esp32_nat_router.bin image for your ESP32 chip. Go to the /config page and scroll down to the OTA update section. Select the binary file and click Update Firmware. The router will download it, check the file, install it, and reboot. All settings will be preserved. If the reboot fails, the router will fall back to the earlier version.
Even if you upload new binaries directly via the Web Installer or via esptool, all the config settings in NVRAM will be preserved. If you really want to clear them, use factory_reset from the CLI, press the BOOT-button for 10 seconds, or do a esptool.py --chip esp32 erase_flash (choose you ESP32 type here).
Get and install esptool:
cd ~
python3 -m pip install pyserial
git clone https://github.com/espressif/esptool
cd esptool
python3 setup.py install
Go to esp32_nat_router project directory and use the prebuild binary artifacts from the firmware_* directories.
esptool.py --chip esp32 \
--before default_reset --after hard_reset write_flash \
-z --flash_mode dio --flash_freq 40m --flash_size detect \
0x1000 firmware_esp32/bootloader.bin \
0x8000 firmware_esp32/partition-table.bin \
0xf000 firmware_esp32/ota_data_initial.bin \
0x20000 firmware_esp32/esp32_nat_router.binesptool.py --chip esp32c3 \
--before default_reset --after hard_reset write_flash \
-z --flash_size detect \
0x0 firmware_esp32c3/bootloader.bin \
0x8000 firmware_esp32c3/partition-table.bin \
0xf000 firmware_esp32c3/ota_data_initial.bin \
0x20000 firmware_esp32c3/esp32_nat_router.binesptool.py --chip esp32c5 \
--before default_reset --after hard_reset write_flash \
-z --flash_size detect \
0x0 firmware_esp32c5/bootloader.bin \
0x8000 firmware_esp32c5/partition-table.bin \
0xf000 firmware_esp32c5/ota_data_initial.bin \
0x20000 firmware_esp32c5/esp32_nat_router.binesptool.py --chip esp32c6 \
--before default_reset --after hard_reset write_flash \
-z --flash_size detect \
0x0 firmware_esp32c6/bootloader.bin \
0x8000 firmware_esp32c6/partition-table.bin \
0xf000 firmware_esp32c6/ota_data_initial.bin \
0x20000 firmware_esp32c6/esp32_nat_router.binesptool.py --chip esp32 \
--before default_reset --after hard_reset write_flash \
-z --flash_mode dio --flash_freq 40m --flash_size detect \
0x1000 firmware_wt32_eth01/bootloader.bin \
0x8000 firmware_wt32_eth01/partition-table.bin \
0xf000 firmware_wt32_eth01/ota_data_initial.bin \
0x20000 firmware_wt32_eth01/esp32_nat_router.binIf especially the ESP32s with the JTAG-USB have problems during the flash process try the --no-stub option of esptool.
esptool.py --chip esp32s3 \
--before default_reset --after hard_reset write_flash \
-z --flash_size detect \
0x0 firmware_esp32s3/bootloader.bin \
0x8000 firmware_esp32s3/partition-table.bin \
0xf000 firmware_esp32s3/ota_data_initial.bin \
0x20000 firmware_esp32s3/esp32_nat_router.binEach firmware_* directory contains:
-
bootloader.bin- ESP32 bootloader -
partition-table.bin- Partition table -
ota_data_initial.bin- Initial OTA data (selects first OTA partition on boot) -
esp32_nat_router.bin- Main application firmware -
build_info.txt- Build metadata (timestamp, git hash, target)