This is v0.9.13 from 23.07.2026
Sorry, that it took kinda long to release a new version - but here it is.
A Firmware for LilyGO T-Display P4 will be released, as soon as i will have a useable Version :).
Please have a look at the filename, to download the correct variant for your device!
Important for SenseCap Indicator: You need to install the latest RP2040 Image from the Releases
NO ONLINE UPDATE available right now - it would only download outdated image!
[v0.9.13]
What's new
- Serial Logging: Activated Serial Console Logging for extended debugging. If you know how to deal with Serial Logging, and you want to report more details when you experience bugs, send me the output from serial. Try to shorten it to the magic moment :)
- MeshCore update: Firmware is now based on upstream MeshCore v1.16.0.
- Unscoped flood: You can turn unscoped flood on or off from Mgmt → Channels and in the WebUI (advanced mesh option).
- WebUI: More device settings match the on-screen menus (multi-ACKs, RX delay, RX boost, auto-add contacts). About screen shows base v1.16.0.
- LilyGo T-Display P4: Larger, sharper UI (clearer 2× text); SDIO WiFi/BLE module and SD card support; improved boot and touch in portrait mode (including screen edges); serial debug over USB; SDIO WiFi/BLE reconnect and SD mount fixes.
- Clock sync: Mgmt → Date/Time uses Sync Prio 1 / 2 / 3 (each: Off, NTP, GPS, or Message). Set all three to Disabled to stop automatic clock updates; manual set and GPS sync still work. NTP Sync every chooses 1h–48h or one-shot. Clock Status shows which source is active. WebUI matches.
- Contacts search: Find contacts by name or public key (8+ hex digits). Pull down from the top or tap the search row; list stays visible above the keyboard while contacts scroll underneath.
- Keyboard: Starts in lowercase; ^ = shift, Sym = symbol pages.
- Compose: First letter is capitalized by default when you start typing a DM, channel, or room message.
- Discovered contacts: Swipe left on Contacts (or long-press the tab ~1s) for unsaved adverts; swipe right to return.
- New installs: Auto Add Contacts and all Auto Add Types are on by default.
- Coprocessor info: CrowPanel 7 shows ESP32-C6 versions and update status; SenseCAP Indicator shows RP2040 link and sensor/SD role.
Fixes and improvements
- WebUI ping / connection: During large Contacts/Messages sync, map tile sends, and Storage loads, a busy socket no longer forces a disconnect; ping recovers when the link has room; faster dead-socket detect and reconnect. On T-Deck Plus, large transfers no longer stall ping while the screen is redrawing.
- T-Deck Plus boot: Fixed a crash right after boot caused by reading touch from a background task; touch and keyboard stay on the main UI loop.
- Repeater admin: Re-login after logout uses the correct route again (Flood when the repeater is multi-hop); login status shows Flood / Direct / hop count.
- SD-primary concurrency: Large contact saves no longer corrupt the SD card or crash while channels/prefs also write.
- Companion WiFi sync: Large contact sync no longer overruns the WiFi queue; prefs/channels saves wait while the phone link is busy.
- Companion BLE (hosted C6): Large BLE updates send in smaller chunks instead of dropping mid-transfer.
- Companion offline queue: Offline BLE/WiFi sync depth is the same across ui-modern boards (larger shared queue).
- WebUI contacts/messages: Large contact tables and the Messages tab load in pages so they no longer crash or truncate under memory pressure; route badges and hash labels match the device.
- WebUI Mgmt → Storage: Opening Storage no longer kills WiFi ping or falsely reports "failed to load" (paced loads, capped folder listings); Mgmt prev/next wraps last→first and first→last consistently.
- Map network-only tiles: Fixed MAP tab hang when local tiles are off and network tiles are on (tiles no longer stuck as permanent misses while downloads are still running).
- Map progressive load: Pending tiles keep the map visible while more load in (including Heltec V4); a full queue waits instead of showing a false “miss” after ~12s.
- Map tab re-entry: Returning to MAP after another tab repaints cached tiles immediately instead of leaving blank map holes.
- Map tab leave: Leaving MAP clears only the map content area so the next tab paints faster.
- WebUI map tiles: Tile requests no longer block the network task (ping stays responsive while the map loads); network tile fetches no longer freeze the map UI for the whole transfer.
- Message detail: Radio info uses a clearer two-column layout; Path (Direct / Flood / hop count) is shown in the grid instead of a separate line.
- Channel privacy: Lock icon rules are shared between device UI and WebUI — public channels (
#tag, default Public, hashtag-joined plain names) no longer show a lock. - Mgmt: Horizontal page swipe on the overview and sub-pages is more reliable.
- Companion WiFi hardiness: Bad or oversized companion frames no longer freeze the device; sends continue with partial progress and a short timeout.
- Companion BLE hardiness: BLE sync backs off when the queue is full; hosted BLE recovers the link without a full device reboot.
- Long-uptime timers (ui-modern): Ping, telemetry, room/repeater timeouts, map frame budget, and similar timers keep working after ~49 days of continuous uptime.
- WebUI + device UI together: Browser commands no longer race the on-device UI when both are used at once (fewer freezes/crashes during WebUI use).
- WebUI firmware upload: A stalled device loop during upload aborts cleanly within ~10s instead of tripping a network watchdog.
- Backup state machine: Backup/restore/delete/repair use one clear operation state; work finishes even if you leave the screen (no endless "Working…"), Back recovers from a stuck Working screen, and local-SD backups list newest-first like remote-SD.
- Device/WebUI parity: Hop-count decoding, RX-log payload type labels, battery voltage formatting (two decimals + charging
+), and map tiles folder normalization now use the same logic on the device screen and in the WebUI. - Repeater credentials: "Save cred." stores repeater login credentials (and mirrors them to SD when SD is primary); saving no longer blocks the UI — primary mirror writes are deferred and flushed in the background.
- Room/repeater login state parity: Starting a new room or repeater login fully clears the previous session’s permissions/roles so a failed re-login cannot show leftover access levels (device UI and WebUI).
- WebUI map updates while loading: New map markers arriving while the marker list is still paging in are kept instead of dropped.
- Map info-box tap accuracy: Taps on the selected-contact info box match the visible box again (hit area had drifted from the painted size).
- Map "ME" button parity: Jump-to-me appears in both tile and points map modes; without a GPS fix it shows "No GPS fix".
- Shared map/route math: Distance, hop-count, and reply-timeout rules are consistent across map, contact detail, and related screens.
- T-Display P4 touch/I2C recovery: After a stuck I2C bus (touch/LoRa control/battery), the device recovers touch and related sensors automatically without endless error spam.
- WebUI live sync: New and deleted messages update the list in place when possible; reconnect can skip re-downloading unchanged Contacts/Messages/Channels; gaps recover from recent updates first and fall back to a full refresh only when required.
- Identity/contacts (SD-primary): Boot recovers identity/contacts from SD, internal copy, mirror, or latest backup before creating a new identity; node identity is no longer silently replaced by an old key from prefs (#304).
- Mgmt channel scopes: Scope popups dismiss cleanly; scope/channel changes no longer stall touch handling and are flushed so they survive reboot (#280 / #279).
- Reboot latency: Faster reboot when contacts were not dirty (skips a full rewrite).
- Transport boot responsiveness (Heltec v4 modern): UI comes up sooner; WiFi readiness no longer blocks the whole boot setup.
- Sensor init boot delay (Heltec v4 modern): Faster boot by probing only known sensor addresses (no full I2C bus sweep).
- CrowPanel 3.5 compile hardening: Stable builds across SD/internal storage paths for CrowPanel 3.5.
- Hashtag/channel ingest: Channel text from hashtags stays aligned with MeshCore base behavior.
- Message route parity (DM/channel/WebUI): Channel zero-hop sends show as Flood (not Direct); WebUI matches on-device Flood / Direct / hops.
- WiFi #316: Station and AP SSID fields now keep punctuation such as
!(and other printable characters); only auto-generated AP names from the node name are still simplified. Max length 32 characters on the keyboard. - Clock #311: GPS Time → Sync sets the clock when GPS has a fix but only sends time (common on T-Deck); date can come from the RTC when GPS date is missing. Retries for 30s; clearer errors when sync cannot run.
- Contacts #319: Route on the contact detail screen shows each relay as its own bracket (e.g.
Route: 3 hops [1A71] [213B] [3F0E]) instead of one long hex string; correct hop vs hops wording. Hash width (1B/2B/3B) on the list and map follows the heard/stored route. - Map #303: Tapping overlapping or very close map nodes now cycles through them and shows
(n/x)in the info box. - Messages #303 parity: DM/channel/room sends match companion-app behavior (including flood when the path is unknown); WebUI room send is treated as room traffic.
- Messages capacity + parity: Device UI and WebUI share the same composer limits; older DM threads drop least-recent first; Mgmt/WebUI show when message rings are full.
- Sound #320 (T-Deck Plus): Fixed false "New DM" alerts by stopping DM tone/haptic on contact-discovery adverts, and removed duplicate channel-message notify calls that could trigger repeated sounds.
- Sound #305 (T-Deck Plus): Fixed intermittent partial/missing sound by correcting buzzer playback buffering; tones play cleanly without ticks or gaps.
- Backup #321 (all SD targets): Hardened backup finalize so backup metadata completes reliably on both remote-SD and local-SD.
- WiFi #312: After wipe/reinstall, WiFi profiles save again (corrupt profile storage is rebuilt automatically).
- BLE #313: Tapping BLE in the status bar turns Bluetooth off again (same idea as the WiFi badge). Mgmt → BLE has Restart and Radio Off where supported.
- WebUI: Debug/clock JSON page works again (build fix).
- Build cleanup: Board-guard cleanup and various build fixes for Heltec V4, Xiao, and non–ui-modern companion targets; removed leftover unreachable UI pieces from earlier refactors (no user-visible behavior change).
- Clock #283: Sync from Msg updates the RTC from channel and DM timestamps when enabled (with sane limits for bad or very old senders).
- CrowPanel 7: BLE/WiFi switch without reboot; fixed boot loop when a phone connects over BLE; ESP32-C6 OTA uses the bundled coprocessor image (update offered when the bundle is stale).
- CrowPanel 7 map: Less tile flicker; smoother loading over WiFi while panning or downloading tiles; cache writes no longer blank the screen.
- WebUI (CrowPanel 7): Login page loads reliably; hosted WiFi checks no longer block the page for minutes.
- WebUI (SenseCAP): Map tiles and contact list work with normal memory; page loads much faster.
- SenseCAP contacts: Less list flicker during saves; WiFi moved off the UI core to reduce tearing.
- Lock screen: Waking the display no longer shows a black background after timeout.
- T-Deck map: Switching tabs is not blocked by long tile cache writes on internal storage.
- Adverts: Repeat adverts from known contacts cause less UI lag.
- Discovered #296: Del removes an entry; tapping the row alone no longer drops it.
- WebUI #289 / #291: Contact route badges and Send DM behave like on the device.
- Messages #293: Copy/paste no longer cuts off at 127 characters.
- Msgs: Swipe anywhere in the list to switch Msgs / DMs / Rooms.
- Mgmt WiFi #285: Touch targets align with scrolled WiFi rows.