# Heltec V4 TFT touch firmware — custom partition table. # # 16 MB layout with TWO EQUAL OTA app slots so the touch firmware can # self-update (HTTP OTA via the meshcomod proxy). The app region (app0+app1) # is split evenly at 3.875 MB each — the firmware is ~2.4–2.5 MB, leaving # ~1.3 MB of growth headroom per slot. The tiles + spiffs offsets are UNCHANGED, # so an OTA (or the one-time USB re-flash that installs this table) keeps the # map tile cache and all user data (/new_prefs, /contacts3, /channels2, chat # history) intact. # - app0 3.875 MB (ota_0) ┐ equal A/B slots; OTA ping-pongs between them # - app1 3.875 MB (ota_1) ┘ (was 1.5 MB — too small to hold the image) # - "tiles" 4.75 MB (subtype 0x83 = LittleFS) for the map tab's tile pack # - spiffs 3.375 MB for user data # # Layout (16 MB total): # 0x000000–0x009000 bootloader + partition table # 0x009000–0x00E000 nvs (20 KB, unchanged) # 0x00E000–0x010000 otadata (8 KB, unchanged) # 0x010000–0x3F0000 app0 (3.875 MB, ota_0) # 0x3F0000–0x7D0000 app1 (3.875 MB, ota_1 — grown from 1.5 MB) # 0x7D0000–0xC90000 tiles (4.75 MB, LittleFS, type 0x83) [unchanged] # 0xC90000–0xFF0000 spiffs (3.375 MB) [unchanged] # 0xFF0000–0x1000000 coredump (64 KB, unchanged) # # Subtype 0x83 = ESP-IDF LittleFS subtype. The Arduino LittleFSFS instance # in UITask.cpp mounts this by partition label "tiles". SPIFFS.begin() # matches the first partition with subtype `spiffs` (== our "spiffs" # partition), so the two filesystems don't collide. # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x5000, otadata, data, ota, 0xe000, 0x2000, app0, app, ota_0, 0x10000, 0x3E0000, app1, app, ota_1, 0x3F0000, 0x3E0000, tiles, data, 0x83, 0x7D0000, 0x4C0000, spiffs, data, spiffs, 0xC90000, 0x360000, coredump, data, coredump, 0xFF0000, 0x10000,