Upgrading Firmware
Prerequisites
- esptool
- USB to Serial adapter (must have RTS and DTR pins)
- Female-to-female dupont connecting wires
- Anova Precision Oven firmware
Configuration
- Remove the rear cover of the oven.
- Remove the plastic cover protecting the PCB.

- Connect the USB-to-serial adapter to the debug pins. In order to use the automatic bootloader, all 5 pins must be connected as follows:

Firmware Links
By using tcpdump to analyze traffic from my APO's I was able to see that firmware is available via public links. See below for a changelog and available versions:
1.0.0, 1.0.1, 1.1.9, 1.1.20, 1.1.23, 1.1.31, 1.1.32, 1.1.33, 1.2.7, 1.2.10, 1.4.17, 1.4.18, 1.4.21, 1.4.24
2.0.11, 2.1.3, 2.1.5, 2.1.7, 2.1.8, 2.1.9, 2.1.10
Procedure
- Connect to the APO as detailed in Serial Console
- Download the desired firmware
- Back up your current flash. If you don't do this, there is no easy way back.
esptool.py --chip esp32 --port /dev/<serial-device> -b 230400 read_flash 0 ALL backup.bin
- Erase the factory partition
esptool.py --chip esp32 --port /dev/<serial-device> -b 230400 erase_region 0x00010000 0x0012c000
- Flash the firmware
esptool.py --chip esp32 --port /dev/<serial-device> -b 230400 write_flash 0x00010000 <path_to_firmware_bin> -u
- Disconnect from the debug pins
- Briefly unplug the APO
Restoring From Backup
As long as you backed up the original firmware in the previous steps, you can always restore from backup.
esptool.py --chip esp32 --port /dev/<serial-device> -b 230400 write_flash 0 backup.bin -u -e