Release Flashing
How to install a tagged ThistleOS release from GitHub assets, verify checksums, and choose the correct image for firmware versus recovery.
GitHub ReleasesRelease assets
A release should include these downloadable assets:
thistle_os-<version>.bin— main ThistleOS firmware for theota_1slot.thistle_os-<version>.bin.sig— Ed25519 signature for the firmware.thistle_os-<version>.bin.pub— public key used to verify the signature.thistle-recovery-<version>— recovery firmware for theota_0slot.SHA256SUMS— checksums for every release asset.
Verify downloads
sha256sum -c SHA256SUMS
On macOS, install GNU coreutils or compare individual files with shasum -a 256 <file>.
Initial flash
For development boards, the normal first install is still an ESP-IDF flash from source because it writes the bootloader, partition table, and factory app together:
. "$IDF_PATH/export.sh"
idf.py set-target esp32s3
idf.py build
idf.py flash monitor
Updating main firmware
Once recovery is installed, prefer the recovery web UI. Connect to ThistleOS-Recovery, connect the device to WiFi, choose the board, run the dry-run plan, then download and install.
For manual serial flashing, write the main firmware to ota_1 using the offsets in partitions.csv. In the current 16 MB layout, ota_1 starts at 0x720000.
esptool.py --chip esp32s3 write_flash 0x720000 thistle_os-<version>.bin
Updating recovery
Recovery lives in ota_0. In the current 16 MB layout, ota_0 starts at 0x4A0000 and has 0x280000 bytes available.
esptool.py --chip esp32s3 write_flash 0x4A0000 thistle-recovery-<version>