From 2407e2ba76638c4c316e68c8c19d8ec8e15aaa1d Mon Sep 17 00:00:00 2001 From: Martin Dummer Date: Sat, 22 Oct 2022 17:29:56 +0200 Subject: [PATCH] README.md: add more details to flash instructions Signed-off-by: Martin Dummer --- README.md | 32 ++++++++++++++++++++++++++--- docs/esp32_flash_download_tool.png | Bin 0 -> 31776 bytes 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 docs/esp32_flash_download_tool.png diff --git a/README.md b/README.md index b5e23fc..2ec839d 100644 --- a/README.md +++ b/README.md @@ -124,9 +124,10 @@ This can be achieved by editing the 'platformio.ini' file and add/change one or * other options: * clean the sources: `platformio run -e generic -t clean` * erase flash: `platformio run -e generic -t erase` + ### using the pre-compiled .bin files The pre-compiled files can be found on the [github page](https://github.com/tbnobody/OpenDTU) in the tab "Actions" and the sub menu "OpenDTU Build". Just choose the latest build from the master branch (blue font). You need to be logged in with your github account to download the files. -Use a ESP32 flash tool of your choice and flash the .bin files to the right addresses: +Use a ESP32 flash tool of your choice (see next chapter) and flash the `.bin` files to the right addresses: | Address | File | | ---------| ---------------------- | @@ -135,8 +136,31 @@ Use a ESP32 flash tool of your choice and flash the .bin files to the right addr | 0xe000 | boot_app0.bin | | 0x10000 | opendtu-*.bin | -Make sure too uncheck the DoNotChgBin option. Otherwise you will maybe get errors like "invalid header". -For further upgraded you can just use the web interface and upload the opendtu-*.bin file. +For further updates you can just use the web interface and upload the `opendtu-*.bin` file. + +### Flash with esptool.py (Linux) +``` +esptool.py --port /dev/ttyUSB0 --chip esp32 --before default_reset --after hard_reset \ + write_flash --flash_mode dout --flash_freq 40m --flash_size detect \ + 0x1000 bootloader_dio_40m.bin \ + 0x8000 partitions.bin \ + 0xe000 boot_app0.bin \ + 0x10000 opendtu-generic.bin +``` + +### Flash with Espressif Flash Download Tool (Windows) + +[Download link](https://www.espressif.com/en/support/download/other-tools) + +- On startup, select Chip Type -> "ESP32" / WorkMode -> "Develop" +- Prepare all settings (see picture). Make sure to uncheck the `DoNotChgBin` option. Otherwise you may get errors like "invalid header". +- ![flash tool image](docs/esp32_flash_download_tool.png) +- Press "Erase" button on screen. Look into the terminal window, you should see dots appear. Then press the "Boot" button on the ESP32 board. Wait for "FINISH" to see if flashing/erasing is done. +- To program, press "Start" on screen, then the "Boot" button. +- When flashing is complete (FINISH appears) then press the Reset button on the ESP32 board (or powercycle ) to start the OpenDTU application. + +### Flash with ESP_Flasher (Windows) +Users report that [ESP_Flasher](https://github.com/Jason2866/ESP_Flasher/releases/) is suitable for flashing OpenDTU on Windows. ## First configuration * After the initial flashing of the microcontroller, an Access Point called "OpenDTU-*" is opened. The default password is "openDTU42". @@ -153,6 +177,8 @@ Navigate to Settings --> Firmware upgrade and press the browse button. Select th You'll find the firmware file (after a successfull build process) under `.pio/build/generic/firmware.bin`. +If you downloaded a precompiled zip archive, unpack it and choose `opendtu-generic.bin`. + After the successful upload, the OpenDTU immediately restarts into the new firmware. ## MQTT Topic Documentation diff --git a/docs/esp32_flash_download_tool.png b/docs/esp32_flash_download_tool.png new file mode 100644 index 0000000000000000000000000000000000000000..3f970e63fb5d988bfea0492fe7f0cf2408c0eaeb GIT binary patch literal 31776 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 E01qnQdH?_b literal 0 HcmV?d00001