Files
wadamesh/variants/thinknode_m9/partitions_m9_touch.csv
T
Christopher Van HooseandClaude Fable 5 1b7d793ceb M9: audit pass 2 — 29 verified fixes (nav soft-locks, gate parity, deep sleep, build hardening)
Second 7-dimension adversarially-verified audit over the 08-19 tree.
Headliners: SUB_MAP over a display-only Lua app orphaned the app page
(key-only soft-lock); Back-ladder z-order redesign (CC/power always-
frontmost, confirm-modal deference, Lua key-forward suppressed while a
confirm is up — the send-permission dialog was unanswerable); map pan
flag could go stale across tab jumps/popups; null-close progress rows
now genuinely block the registry dismiss (shared fix); terminal RX
mirror, fullscreen title, wallpaper caption, storage-error guidance
widened to M9; accent/@-mention pickers suppressed (dead chrome on a
touchless board); kb-backlight cache only latches ACKed duties (0xFF
sentinel == duty 255 skipped the first write every boot); deep sleep
actually drops the rails now (display refcount, LEDC pin re-route,
RTC/digital holds) and powers off radio+GPS; TCXO fallback no longer
codifies the disproven 0.0f; RadioLib old-FW patch fail-closes at
link; ENV_SKIP_GPS_DETECT + CORE_DEBUG_LEVEL=0 added to the env.

Full round log in M9_PORT.md 'Audit pass 2 (2026-08-20)'. All four
touch envs (M9, T-Deck, V4-R8, pager) compile clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 08:07:37 -04:00

1.9 KiB

1# Heltec ThinkNode M9 firmware — custom partition table.
2#
3# 16 MB layout with TWO EQUAL OTA app slots so the firmware can self-update
4# (HTTP OTA via the meshcomod proxy). The app region (app0+app1) is split
5# evenly at 3.875 MB each — the firmware is ~2.99 MB (2026-08 builds), leaving
6# ~0.88 MB of growth headroom per slot. Re-check that number at release time:
7# the slots CANNOT grow later without moving the tiles/spiffs offsets, which
8# the next paragraph forbids. The tiles + spiffs offsets are UNCHANGED from the
9# previous (single-big-app0) layout, so an OTA — or a one-time USB re-flash to
10# install this table — keeps the map tile cache and all user data (prefs /
11# contacts / channels / chat history) intact.
12# - app0 3.875 MB (ota_0) ┐ equal A/B slots; OTA ping-pongs between them
13# - app1 3.875 MB (ota_1) ┘
14# slippy-tile pack
15# - spiffs 3.375 MB for user data (/new_prefs, /contacts3, /channels2, chat
16# history)
17#
18# Layout (16 MB total):
19# 0x000000–0x009000 bootloader + partition table
20# 0x009000–0x00E000 nvs (20 KB)
21# 0x00E000–0x010000 otadata (8 KB)
22# 0x010000–0x3F0000 app0 (3.875 MB, ota_0)
23# 0x3F0000–0x7D0000 app1 (3.875 MB, ota_1)
24# 0x7D0000–0xC90000 tiles (4.75 MB, LittleFS, type 0x83) [unchanged]
25# 0xC90000–0xFF0000 spiffs (3.375 MB) [unchanged]
26# 0xFF0000–0x1000000 coredump (64 KB)
27# Name, Type, SubType, Offset, Size, Flags
28nvs, data, nvs, 0x9000, 0x5000,
29otadata, data, ota, 0xe000, 0x2000,
30app0, app, ota_0, 0x10000, 0x3E0000,
31app1, app, ota_1, 0x3F0000, 0x3E0000,
32tiles, data, 0x83, 0x7D0000, 0x4C0000,
33spiffs, data, spiffs, 0xC90000, 0x360000,
34coredump, data, coredump, 0xFF0000, 0x10000,