beta-0.1.44-RC6
Pre-release
Pre-release
SigurdOS T-Deck Firmware — beta-0.1.44-RC6
Flash with esptool
# Full flash (first install):
esptool.py --chip esp32s3 --port /dev/ttyACM0 write_flash 0x0 firmware-merged.bin
# App update (keep settings):
esptool.py --chip esp32s3 --port /dev/ttyACM0 \
write_flash 0x10000 firmware.binWeb Flasher
Use manifest.json with esptool.js.
| File | Use |
|---|---|
firmware.bin |
App only (flash at 0x10000) |
firmware-merged.bin |
Full flash (flash at 0x0) |
SigurdOS-tdeck-launcher.bin |
For bmorcelli/Launcher install |
firmware-debug.bin |
Debug build with verbose logging |
manifest.json |
Web flasher manifest |
sigurdos-tdeck-bootloader.bin |
Bootloader (web flasher) |
sigurdos-tdeck-partitions.bin |
Partition table (web flasher) |
sigurdos-tdeck-boot_app0.bin |
Boot app0 (web flasher) |
sigurdos-tdeck-firmware.bin |
App firmware (web flasher) |
sigurdos-tdeck-full.bin |
Full image (web flasher) |
What's Changed
- fix: safe SPIFFS init with erased-partition auto-format (closes #750) by @hermes-gadget in #751
- Phase 1: Switch keyboard to key mode for multi-model T-Deck compatibility (#752) by @hermes-gadget in #753
- Phase 2: Multi-language keyboard layout system (12 layouts) — #752 by @hermes-gadget in #754
- Phase 3: I2C robustness improvements — #752 by @hermes-gadget in #755
- fix: keyboard doesn't work — I2C timeout kills cold boot (#752) by @hermes-gadget in #756
- [codex] use C3 key mode for multi-model keyboards by @hermes-gadget in #757
- [codex] Add persisted international keyboard layouts by @hermes-gadget in #758
- [codex] Harden shared I2C initialization and recovery by @hermes-gadget in #759
- Fork Merge: Radio profiles, diagnostics, RX-only mode, CI fixes by @hermes-gadget in #760
- fix: battery -% on menu nav, cursor visibility, RSSI chart labels by @hermes-gadget in #766
- fix(ci): exclude LauncherCompatibility.md from doc reference check by @hermes-gadget in #767
- docs: comprehensive repository-wide audit (audit.md) by @hermes-gadget in #770
- fix(gps): correct GPS-to-Unix-epoch conversion (BUG-001) by @hermes-gadget in #771
- fix(ui): prevent dangling g_wifi_icon use-after-free (BUG-002) by @hermes-gadget in #772
- fix(hw): guard deep-sleep RTC-GPIO calls on non-RTC DIO1 pin (HW-001) by @hermes-gadget in #773
- fix(mesh): hoist sender_buf out of if-block to prevent use-after-scope (BUG-003) by @hermes-gadget in #774
- fix(mesh): return correct contact in processAck instead of contact[0] (BUG-004) by @hermes-gadget in #775
- fix: batch of low-severity fixes (HW-002, DEAD-002..004, DOC-001, BUILD-001) by @hermes-gadget in #776
- fix(security): add OTA PIN brute-force rate limiting (SEC-001) by @hermes-gadget in #777
- docs: add remediation status to audit.md (7 PRs submitted) by @hermes-gadget in #778
- perf(display): lazy-allocate emergency buffer, reclaim 12.8KB DRAM (PERF-003) by @hermes-gadget in #784
- perf(touch): adaptive poll interval — 50ms idle / 10ms active (PERF-004) by @hermes-gadget in #785
- fix(store): eliminate atomic-replace race and add .tmp recovery (RELI-003) by @hermes-gadget in #779
- fix(companion): align device PIN range with on-device 4-digit gate (SEC-002) by @hermes-gadget in #780
- perf(store): O(1) file opens in messageExists (PERF-001) by @hermes-gadget in #781
- fix(touch): bounded GT911 re-init after persistent I2C wedge (RELI-001) by @hermes-gadget in #782
- perf(display): double-buffer PSRAM + DMA push for flush overlap (PERF-002) by @hermes-gadget in #783
- fix(ui): add lv_obj_is_valid guards to global widget pointers (ARCH-001) by @hermes-gadget in #786
- docs: final audit update — resolve/defer remaining Phase 3-5 findings by @hermes-gadget in #787
- fix(touch): restore bounded GT911 recovery retries by @hermes-gadget in #789
- fix: resolve LVGL screen-load deadlock causing UI freeze (progress toward #761) by @hermes-gadget in #768
- fix(spi): isolate the native FSPI fallback by @hermes-gadget in #828
- fix(mesh): bound and validate persisted advert blobs by @hermes-gadget in #795
- docs(companion): publish command support matrix by @hermes-gadget in #823
- fix(ui): bind WiFi and OTA timers to object lifetimes by @hermes-gadget in #793
- fix(chat): preserve protocol message timestamps by @hermes-gadget in #807
- fix(mesh): bound PONG numeric parsing by @hermes-gadget in #826
- docs: reconcile current implementation and artifacts by @hermes-gadget in #829
- fix(storage): transact channel NVS updates by @hermes-gadget in #801
- chore: remove proven unreferenced helpers by @hermes-gadget in #824
- fix(display): make framebuffer allocation failure-safe by @hermes-gadget in #827
- security(ota): protect local update sessions by @hermes-gadget in #830
- fix(power): short-circuit critical timer wakes by @hermes-gadget in #832
- docs(flash): preserve DIO image headers by @hermes-gadget in #791
- fix(wifi): service STA connection state in loop by @hermes-gadget in #825
- perf(map): reuse contacts and preserve cache on misses by @hermes-gadget in #835
- fix(spi): probe SD before radio ownership by @hermes-gadget in #834
- refactor(storage): add validated atomic replacement by @hermes-gadget in #797
- fix(storage): atomically persist identity and contacts by @hermes-gadget in #798
- fix(storage): atomically persist chat history by @hermes-gadget in #799
- fix(storage): recover companion message transactions by @hermes-gadget in #800
- fix(storage): preserve complete contact metadata by @hermes-gadget in #803
- fix(ble): make companion delivery retry-safe by @hermes-gadget in #805
- perf(storage): checkpoint chat history only when dirty by @hermes-gadget in #831
- refactor(chat): extract history checkpoint state by @hermes-gadget in #836
- test(ci): add sanitizer and static-analysis gates by @hermes-gadget in #833
- refactor(chat): extract the per-channel message buffer by @hermes-gadget in #839
- fix(ble): synchronize the companion receive-frame handoff by @hermes-gadget in #838
- fix(ui): remove screen load animations to prevent LVGL deadlock by @hermes-gadget in #840
- refactor(ui): extract a screen lifecycle guard for LVGL pointers by @hermes-gadget in #842
- refactor(mesh): extract the companion adapter into its own translation unit by @hermes-gadget in #841
- fix(mesh): migrate companion_adapter serial logs to SIG_LOG* by @hermes-gadget in #847
- fix(ui): route remaining screens through show_screen auto_del=false by @hermes-gadget in #848
- fix(hal): keyboard key-mode only (CMD 0x04), never raw matrix by @hermes-gadget in #849
Full Changelog: beta-0.1.43-RC5...beta-0.1.44-RC6