Skip to content

Meshtastic Firmware 2.8.0.7239fe8 Alpha

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Aug 00:52
7239fe8

🚀 Big changes

Warning

New US nodes now default to LongTurbo, not LongFast. Only applies to first-time region selection on the device screen. LongTurbo and LongFast can't hear each other. You will need to switch the preset back to LongFast to join an existing mesh on the prior default. (#11637)

Important

If you hit a bootloop or repeated crashes after upgrading, we recommend a full erase and flash. Export your config first to backup first, if you have any imporant settings you want to save.

There are a number of fundamental changes to 2.8 that require a heads-up. Please review some of these higher profile changes so that you are aware of them before installing:

  • Node numbers (ID) are now derived from the public-key identity of the node instead of hardware mac address
  • XEdDSA based packet signing
  • Reduction of long-name to 25 bytes
  • Precise position no longer allowed on known-keys (public mesh. Please use private channels for this)
  • Telemetry and position are off-by-default and must be opted into
  • Ground-up redesigned NodeDB storage and traffic management
  • Completely new allocation of LoRa Regions and presets, including ham specific carve-outs

Other high-impact changes

Radio & mesh protocol

  • Packet Signing via XEdDSA (#10478) plus a BaseUI signing status UI (#10841), unsigned-packet policy hardening with test coverage (#10858), and runtime-toggleable MESHTASTIC_LOCKDOWN hardening for nRF52 (#10349, opt-in via #10712).
  • Traffic Management Module for packet forwarding — dedup, rate limiting, role-aware policing (#9358 base, #10706 dedup/rate-limit expansion, #10745 next-hop cache overflow store, #9921 congestion-aware position interval/hop-exhaustion tuning).
  • Automatic variable hop limits based on live mesh activity and message-size estimation (#10176).
  • Mesh beacon feature and admin controls (#10618 base implementation, #10839 second pass adding beacon admin/config).
  • Noise floor tracking with a sliding-window estimate (#9347).
  • Hash table index for O(1) packet history lookups — improves routing/dedup performance on busy meshes (#9499).
  • New amateur-radio regions: 70cm (#10627), 1.25m/125cm (#10638), 2m/~144MHz (#10623); EU regions merge plus Narrow/Lite region enablement for EU (#10675, #10120); LoRa region preset map for cleaner per-region defaults (#10736).
  • TinyFast and TinySlow modem presets added to config and menu (#10597).
  • LoRa config changes now apply live without a reboot (#9962); LoRa settings expansion and validation improvements (#9878).
  • Position privacy: direct-send position packets are clamped to channel precision (#10383), and public/known-key position precision is clamped similarly (#10665) and honors explicit channel settings to prevent location leaks (#10513).
  • Licensed operators are now prevented from rebroadcasting packets to/from unlicensed users, for regulatory compliance (#9958).
  • Packets with missing/invalid hop_start (pre-hop firmware) are now deprecated/blocked (#9476).
  • Spoof detection added for UDP multicast packets (#9905).
  • Low-bandwidth conversion support added to MeshRadio (#10595).
  • ATAK Plugin V2 implemented (drops legacy unishox2 compression) (#10105), including TAKTALK voice/text chat message and room data structures.
  • Ethernet HTTP/HTTPS API server ported to RP2350 + W5500 boards (#10573), plus Ethernet OTA support for RP2350/W5500 (#10136).
  • Optional LED_LORA indicator to show LoRa TX activity (#10465), and an LED indicator for LoRa RX (#10674).
  • GPS time sync: device now sets its clock from GPS every 30 minutes (#10737); GPS is skipped at startup if the LoRa region is unset, to save battery (#10386); GPS model/baudrate now cached across reboots to skip a full sweep (#10544).
  • Config: position & telemetry broadcast are now opt-in rather than always-on (#10929).

UI / display — BaseUI

BaseUI is the current default graphical UI (src/graphics/Screen.cpp, draw/UIRenderer, draw/MenuHandler, draw/CompassRenderer, draw/NotificationRenderer, draw/NodeListRenderer).

  • Color support for TFT-equipped nodes (#10233).
  • "Ham Mode" — prompts for new Amateur Radio regions (#10663).
  • Status-message display added to Favorite/NodeList screens (#9504, #10197).
  • Hex picker UI added for entering hex values (#10650).
  • Save/restore of frame visibility state across sessions (#10576).
  • BLE pairing PIN now shown via a proper on-screen banner (#8902).
  • Compass rendering/behavior improvements (#10166).
  • Emote handling refactor (#9896).

UI / display — InkHUD

InkHUD is the e-ink-optimized UI (src/graphics/niche/InkHUD).

  • Offline map tiles with zoom controls (#10785) and general GPS UX improvements (#10846).
  • Full touch support for the T5 E-Paper S3 (#10286) and a full InkHUD port for the LilyGo T5 E-Paper S3 Pro (#10211).
  • "Wipe all messages" option (#10721).
  • T-mini E-Ink S3 support added (#9856).

UI / display — MUI

  • Send message on main Return key in MUI composer (X11/native-tft) by @p0ns (#345)
  • CURLService (portduino map HTTP downloads) by @mverch67 (#353)
  • Enable LODEPNG decoder in lv_conf.h by @mverch67 (#358)
  • Support SD cards behind a co-processor (SenseCAP Indicator) by @caveman99 (#342)
  • Refactor URLService::load() to improve HTTP handling by @mverch67 (#362)
  • SPI lock; revert http flags by @mverch67 (#366)
  • Improve acttime sync by @mverch67 (#368)
  • Async loading of remote map tiles in background task by @mverch67 (#367)
  • Compilation PR10908 (some targets fail) by @mverch67 (#370)
  • Modify lock method in ISpiLock to return false by @mverch67 (#372)
  • Transport driver orientation from config.yaml - default 0 rotation. by @caveman99 (#355)
  • Use external reference instead of duplicate SPI1 by @mverch67 (#373)
  • Update LoRa frequency in JP region by @t-miura (#376)
  • Seeed Wio Tracker L2 by @mverch67 (#335)
  • ToggleDisplay() by @mverch67 (#378)
  • WiFi map-tile download adapted for Heltec V4 (#10011).

UI / display — shared / cross-cutting

Touches the display driver layer or more than one UI system at once.

  • InkHUD and BaseUI message store unified into a shared implementation (#10596).
  • T-mini E-Ink S3 support landed for both InkHUD and BaseUI (#9856).
  • Board-specific TFT driver support and simplified TFT ifdef chains for easier porting (#10827, #10803); faster TFT color conversion (#10814); touchscreen variant flags (VARIANT_TOUCHSCREEN/ENABLE_TOUCH_INT) added for new touch boards (#10815).

Backend / developer-facing features

Memory & stability infrastructure

  • MemClass.h — a central memory-class ladder providing fail-safe-small defaults across constrained platforms (#10901).
  • MemAudit — per-subsystem heap accounting reported in the boot log (#10900).
  • nRF52 heap tiers and SoftDevice RAM reservation right-sized, freeing an extra ~8KB heap arena (#10898, #10903).
  • Native Portduino malloc shim added for more realistic memory behavior in simulation (#10677).
  • Bluetooth memory freed automatically when Wi-Fi is enabled or Bluetooth is disabled (#10398); Bluetooth wait is skipped entirely when disabled (#10571).
  • NodeDB "warm store" — new persistent warm-tier node storage layer (#10705 base, #10746/#10759 right-sizing for constrained platforms, #10809 fixing associated spiLock deadlocks).
  • 2.8 NodeDB shrink/decoupling/restructuring to reduce per-node memory footprint (#10413).
  • Flash hardening, filesystem platform unification, and a write-behind LFS cache for STM32WL/nRF52 — a storage-format break (#10171).

New APIs / module-author infrastructure

  • MCP server added for interacting with Meshtastic devices and driving a testing framework / TUI, later extracted to its own repo (#10194, #10861).
  • Native "sensors" simulation support for Portduino (#10748); PortduinoSetOptions to override the realhardware flag for tests (#10157).
  • Hardfault handler added for STM32, making crashes visibly obvious in logs (#10071).
  • BinarySemaphorePosix implemented with proper pthread synchronization for native builds (#9895).
  • NimBLE parameter overhaul, including a fix attempt for incompatible BLE bond cleanup (#10741).
  • STM32 ADC support added to AnalogBatteryLevel (#9369).
  • JSON library dependency removed from firmware builds while retaining full JSON support in meshtasticd (#10152) — reduces firmware footprint for module authors relying on the JSON path.
  • Improved manual build flow / developer build ergonomics (#8839).- External Notifications module logic fully reworked for more flexible notification rules (#10006).

Full Changelog: v2.7.23.b246bcd...v2.8.0.7239fe8