Releases: meshtastic/firmware
Meshtastic Firmware 2.7.26.54e0d8d Beta
Warning
If you encounter touch screen accuracy issues on a T-Deck, please run the screen calibration in MUI tools.
🐛 Bug fixes and maintenance
- Lora led rx by @jp-bennett in #10674
- Additional RAK missing values for 6421 / 13300 13302 modules + Zebra/Nebra Hat Configs by @Littleaton in #10644
- Use standard GPS enable pin, for smarter power control on M3 by @jp-bennett in #10671
- Meshtasticd: Add configs for B&Q Station G3 by @vidplace7 in #10673
- Beta fixes by @jp-bennett in #10728
- Set the time from GPS every 30 minutes by @jp-bennett in #10737
- Fix(esp32): skip RTC timer wake on user shutdown; TAP V2 OCV and partition by @Ethan-chen1234-zy in #10739
- T-Deck (Plus) touch driver fix by @mverch67 in #10740
- Enable Adafruit SHTC3 library on native by @jp-bennett in #10747
- Fix(phone-api): skip manifest scan for node-info-only config requests by @jeremiah-k in #10754
- Fix(FSCommon): add nRF52 LittleFS empty-name guard to getFiles() by @app/copilot-swe-agent in #10757
⚙️ Dependencies
- Update Sensirion I2C SCD30 to v1.1.1 by @app/renovate in #10294
- Update alpine Docker tag to v3.24 by @app/renovate in #10668
- Update actions/github-script action to v9 by @app/renovate in #10691
- Update meshtastic/device-ui digest to 4ec010c by @app/renovate in #10732
- Update meshtastic/device-ui digest to 6cadf54 by @app/renovate in #10743
- Update actions/checkout action to v7 by @app/renovate in #10744
- Update meshtastic/device-ui digest to 1c45ebc by @app/renovate in #10749
- Update platform-native digest to 61067ac by @app/renovate in #10750
Full Changelog: v2.7.25.104df5f...v2.7.26.54e0d8d
Meshtastic Firmware 2.7.25.104df5f Alpha
🚀 Enhancements
- Noise floor by @RCGV1 in #9347
- Compass improvements/refactoring by @HarukiToreda in #10166
- Update Thinknode m7 pins by @jp-bennett in #10635
- Enhance RTC handling with unit test support for system time fallback by @thebentern in #10642
🐛 Bug fixes and maintenance
- Add Heltec mesh node t1 by @Quency-D in #10416
- Fix SHT2x detection for INA219 addresses by @balya in #10482
- Missing module config in rak6421 / 13300 + 13302 module config files. by @Littleaton in #10496
- Add Lilygo T-Impulse-Plus by @vidplace7 in #10497
- Preserve forwarded position payload precision by @h3lix1 in #10554
- Fix mini-epaper-s3 build: resolve SensorLib
isBitSetmacro conflict with SparkFun MMC5983MA by @app/copilot-swe-agent in #10584 - Debian: Correctly build without signing (for forks) by @vidplace7 in #10605
- Add Module configuration for RAK6421 Slot 2 yamls by @pdxlocations in #10632
⚙️ Dependencies
- Update platformio/ststm32 to v19.6.0 by @app/renovate in #10329
- Update libpax digest to 1730234 by @app/renovate in #10507
- Update ESP32-CH390 to v1.1.0 by @vidplace7 in #10528
- Update actions/stale action to v10.3.0 by @app/renovate in #10532
- Update meshtastic/device-ui digest to 34e96d2 by @app/renovate in #10537
- Update meshtastic-esp8266-oled-ssd1306 digest to 2e26010 by @app/renovate in #10562
- Update Adafruit SSD1306 to v2.5.17 by @app/renovate in #10581
- Update SparkFun MMC5983MA Magnetometer to v1.1.5 by @app/renovate in #10599
- Update meshtastic/device-ui digest to 502ba30 by @app/renovate in #10629
Full Changelog: v2.7.24.472b14c...v2.7.25.104df5f
Meshtastic Firmware 2.7.24.472b14c Alpha
🚀 Enhancements
- ThinkNode M7 by @caveman99 in #8077
- Implement rotating JSONL recorder for persistent logging by @thebentern in #10428
- Make power status logging less chatty and track battery presence transitions by @thebentern in #10453
- Add variantDefaultConfig and set eth_enabled to default true by @jp-bennett in #10454
- VSCode: Prepare for pioarduino transition by @vidplace7 in #10471
- Refactor virtual keyboard cell height for layout consistency by @Bjk8kds in #10501
- Refactor position precision handling to honor explicit channel settings and prevent location leaks by @thebentern in #10513
🐛 Bug fixes and maintenance
- T-Echo-Card support by @caveman99 in #10267
- Clamp direct position packets to channel precision (fixes #8640) by @Jord-JD in #10383
- Give ThinkNode-m4 a heartbeat by @jp-bennett in #10408
- Make heartbeat LED play nice with other LEDs by @jp-bennett in #10423
- Fix screen geometry update for SH1107 display by @Bjk8kds in #10444
- Add initial support for Station G3 variant by @thebentern in #10457
- Fix WiFi TCP/HTTP services not starting without USB serial connected by @tanrax in #10460
- Enabled SX_LNA_EN by default by @RikerZhu in #10469
- Add more support for small fonts in screen resolution determination by @thebentern in #10480
- Update Clock Scaling for Display_Force_Small_Fonts by @Xaositek in #10516
- First set pinMode, then write to pin by @kpmy in #10520
- Actions: Fix tagging upon release. by @vidplace7 in #10521
⚙️ Dependencies
- Update NeoPixel to v1.15.5 by @app/renovate in #10466
- Update libch341-spi-userspace digest to 2e5ff75 by @app/renovate in #10485
Full Changelog: v2.7.23.b246bcd...v2.7.24.472b14c
Meshtastic Firmware 2.7.23.b246bcd Alpha
🚀 Enhancements
- Reduce key duplication by enabling hardware RNG by @Komzpa in #8803
- Test PR to remove LED_BUILTIN by @jp-bennett in #10179
- No longer need undefines, thanks to #10179 by @jp-bennett in #10180
- Add MCP server for interacting with meshtastic devices and testing framework / TUI by @thebentern in #10194
- Add authoring guide for native unit tests in README.md by @NomDeTom in #10201
- Add USB camera and uhubctl support for new test suite. Also included some bug fixes by @thebentern in #10204
- Add encryption overview to agent instructions in AGENTS.md by @thebentern in #10207
- Improve options to align to names of UI options by @Xaositek in #10240
- Finish evil merge cleanup by @jp-bennett in #10253
- We have HardwareRNG, let's use it! by @jp-bennett in #10274
- Add search duration check for exceeding 15 minutes by @jp-bennett in #10293
- Native MacOS hello world by @thebentern in #10309
- MacOS: enable CH341 LoRa-hardware path (fix serial truncation, document setup) by @thebentern in #10320
- Add clamping logic for milliseconds conversion and unit tests by @thebentern in #10326
- Add TCP support for Meshtastic MCP interface / tests and update docs by @thebentern in #10355
- Docker: Install grpcio-tools from distro by @vidplace7 in #10358
- MacOS: Correct pkg-config name
opensslfor ulfius. by @vidplace7 in #10369 - Smart pointers and memory management cleanup by @thebentern in #10400
- Enhance GPS search failure handling backoff logic by @thebentern in #10404
🐛 Bug fixes and maintenance
- Fix(native): implement BinarySemaphorePosix with proper pthread synchronization by @iannucci in #9895
- Meshtasticd: Add configs for ebyte-ecb41-pge (mPWRD-OS) by @vidplace7 in #10086
- Meshtasticd: Add configs for forlinx-ok3506-s12 (mPWRD-OS) by @vidplace7 in #10087
- Fix Linux Input enable logic by @jp-bennett in #10093
- PPA: Use SFTP method for uploads by @vidplace7 in #10138
- Switch PlatformIO deps from PIO Registry to tagged GitHub zips by @vidplace7 in #10142
- Fix display method to use const qualifier for previousBuffer pointer by @vidplace7 in #10146
- Fix last cppcheck issue by @caveman99 in #10154
- Fix heap blowout on TBeams by @thebentern in #10155
- Add PortduinoSetOptions to overwrite the realhardware bool by @jp-bennett in #10157
- Support for Spreading Factors 5 and 6 on compatible radios by @derpyspike in #10160
- Add meshtasticd config for Luckfox Pico Max Waveshare Pico LoRa HAT by @Ruledo in #10175
- Prompt markdownlint md040 fix for new prompts. by @h3lix1 in #10199
- Feat(t5s3-epaper): add InkHUD port for LilyGo T5 E-Paper S3 Pro by @giannoug in #10211
- SX126x: re-apply 0x8B5 register in resetAGC() to preserve RX sensitivity by @nightjoker7 in #10219
- Detach power interrupts for sleep by @jp-bennett in #10230
- T watch pinfix by @jp-bennett in #10231
- Add heltec-v4-r8 board by @Quency-D in #10268
- Remove incorrect LED_STATE_ON definition for t-beam-s3 by @jp-bennett in #10280
- Fix(Router): localize p_encrypted to prevent recursive-overwrite leak by @nightjoker7 in #10311
- Actions: Build MacOS binary by @vidplace7 in #10319
- Debian: Correctly fail upon failure by @vidplace7 in #10341
- Do not FACTORY_INSTALL on ARCH_PORTDUINO by @vidplace7 in #10343
- Docker: Build for riscv64 by @vidplace7 in #10345
- Docker-Alpine: Align version between build/main stages by @vidplace7 in #10347
- Fix MAC_from_string to use input parameter instead of global config for MAC address parsing by @thebentern in #10356
- Add ulfius webserver support to macos native target by @thebentern in #10366
- Update PhoneAPI.cpp to reduce chattiness by @Xaositek in #10367
- Use OBS instead of flaky launchpad by @thebentern in #10375
- Add informSearchFailed method to update GPS power state handling by @thebentern in #10394
- Fix GPS initialization logic for Portduino configuration by @jessm33 in #10395
⚙️ Dependencies
- Update meshtastic-esp32_https_server digest to 0c71f38 by @app/renovate in #10081
- Update meshtastic-st7789 digest to 222554e by @app/renovate in #10121
- Update actions/github-script action to v9 by @app/renovate in #10122
- Update meshtastic-st7789 digest to 7228c49 by @app/renovate in #10131
- Update pnpm/action-setup action to v6 by @app/renovate in #10132
- Update meshtastic-st7789 digest to 4d957e7 by @app/renovate in #10134
- Update meshtastic-st7789 digest to a787bee by @app/renovate in #10147
- Update softprops/action-gh-release action to v3 by @app/renovate in #10150
- Update platform-native digest to 71ed55b by @app/renovate in #10165
- Update meshtastic-st7789 digest to 92bae2e by @app/renovate in #10182
- Update meshtastic/device-ui digest to 5305670 by @app/renovate in #10183
- Update meshtastic/device-ui digest to 56e1da4 by @app/renovate in #10195
- Update GxEPD2 to v1.6.9 by @app/renovate in #10212
- Update LovyanGFX to v1.2.20 by @app/renovate in #10232
- Update meshtastic-esp8266-oled-ssd1306 digest to 6bfd1f1 by @app/renovate in #10277
- Update platform-native digest to 135b91e by @app/renovate in #10300
- Update meshtastic/device-ui digest to 7289329 by @app/renovate in #10313
- Update platform-native digest to 4ea5e09 by @app/renovate in #10314
- Update meshtastic/device-ui digest to 1ddcc9d by @app/renovate in #10328
- Update meshtastic/device-ui digest to 4bf593a by @app/renovate in #10346
- Update platform-native digest to cab4b21 by @app/renovate in #10372
- Update LovyanGFX to v1.2.21 by @app/renovate in #10373
- Update libpax digest to df42474 by @app/renovate in #10406
Full Changelog: v2.7.21.1370b23...v2.7.23.b246bcd
Meshtastic Firmware 2.7.22.96dd647 Alpha
🐛 Bug fixes and maintenance
- Fix(native): implement BinarySemaphorePosix with proper pthread synchronization by @iannucci in #9895
- Meshtasticd: Add configs for ebyte-ecb41-pge (mPWRD-OS) by @vidplace7 in #10086
- Meshtasticd: Add configs for forlinx-ok3506-s12 (mPWRD-OS) by @vidplace7 in #10087
- Fix Linux Input enable logic by @jp-bennett in #10093
- PPA: Use SFTP method for uploads by @vidplace7 in #10138
- Switch PlatformIO deps from PIO Registry to tagged GitHub zips by @vidplace7 in #10142
- Fix display method to use const qualifier for previousBuffer pointer by @vidplace7 in #10146
- Fix last cppcheck issue by @caveman99 in #10154
- Fix heap blowout on TBeams by @thebentern in #10155
⚙️ Dependencies
- Update meshtastic-esp32_https_server digest to 0c71f38 by @app/renovate in #10081
- Update meshtastic-st7789 digest to 222554e by @app/renovate in #10121
- Update actions/github-script action to v9 by @app/renovate in #10122
- Update meshtastic-st7789 digest to 7228c49 by @app/renovate in #10131
- Update pnpm/action-setup action to v6 by @app/renovate in #10132
- Update meshtastic-st7789 digest to 4d957e7 by @app/renovate in #10134
- Update meshtastic-st7789 digest to a787bee by @app/renovate in #10147
- Update softprops/action-gh-release action to v3 by @app/renovate in #10150
Full Changelog: v2.7.21.1370b23...v2.7.22.96dd647
Meshtastic Firmware 2.7.21.1370b23 Alpha
Warning
Due to resource constraints, the HTTP server is deprecated on original-generation ESP32 devices and should not be relied on going forward.
Support continues on ESP32-S3 and other newer ESP32 generations.
🚀 Enhancements
- Add T5-4.7-S3 Epaper Pro support. #6625
- Apply Thailand NBTC 920-925 MHz limits (27 dBm, 10% duty cycle). #9827
- Switch nRF52840 builds to C++17. #9874
- Clean up SEN5X warnings. #9884
- Refactor BaseUI emotes. #9896
- Add spoof detection in
UdpMulticastHandler. #9905 - Enable LNA by default on Heltec v4.3. #9906
- Rotate MUI for the Heltec V4 + TFT expansion kit. #9938
- Make
hexDump()take aconstbuffer. #9944 - Add
meshtasticdconfig metadata. #10001 - Add
MESHTASTIC_EXCLUDE_ACCELEROMETER. #10004 - Adapt MUI WiFi map tile downloads for Heltec V4. #10011
- Fix Mesh-tab WiFi map and exclude-screen behavior. #10038
- Include Thinknode M5 minor fixes. #10049
🐛 Bug fixes and maintenance
- Remove GPS baudrate locking on the Seeed Xiao S3 kit. #9374
- Fix RAK4631 Ethernet gateway API connection loss after W5100S brownouts. #9754
- Fix W5100S socket exhaustion blocking MQTT and additional TCP clients. #9770
- Fix traceroute over MQTT when the uplink node is encrypted. #9798
- Extend Debian sourcedeb cache expiration. #9858
- Fix T-LoRA Pager SPI bus sharing between SX1262 and the SD card. #9870
- Update
ESP8266Audioto the Meshtastic fork for compatibility. #9872 - Fix
rak_wismeshtaglow-voltage reboot hangs after app configuration. #9897 - Preserve
pki_encryptedandpublic_keywhen relaying UDP multicast packets to radio. #9916 - Add the new RAK 13302 power curve. #9929
- Fix MQTT settings not persisting when the broker is unreachable. #9934
- Fix BMP detection by not returning early during BME address scans. #9935
- Enforce infrastructure-role minimums even when scaling is disabled. #9937
- Fix traceroute hop rendering for
ffff/ unknown-dB hops. #9945 - Fix NodeInfo suppression so it only applies to external requests. #9947
- Enable touch-to-backlight on T-Echo, not just T-Echo Plus. #9953
- Prevent licensed users from rebroadcasting packets to or from unlicensed users. #9958
- Add the
heltec_mesh_node_t096board. #9960 - Add Cardputer-Adv I2S audio support. #9963
- Fix the Cyrillic OLED double-space issue. #9971
- Add
LED_BUILTINfortlora_v1. #9973 - Add a timeout for PPA uploads. #9989
- Exclude the web server, Paxcounter, and a few other components on original ESP32 boards to avoid IRAM overflow. #10005
- Rework External Notifications logic. #10006
- Improve STM32WL support. #10015
- Configure NFC pins as GPIO for older bootloaders. #10016
- Fix
TransmitHistoryepoch handling. #10017 - Inherit
build_unflagsforwio-sdk-wm1110. #10034 - Remove PSRAM from
tbeamboards to reclaim IRAM. #10036 - Move
t5s3_epaper_inkhudtoextra. #10037
⚙️ Dependencies
- Update
meshtastic-esp32_https_serverto digestb78f12c. #9851 - Update
meshtastic/device-uithrough digests622b034,f36d2a9,7b1485b, and1897dd1. #9864 #9940 #10023 #10044 #10050 - Update
GxEPD2tov1.6.8. #9918 - Update
pnpm/action-setuptov5. #9926 - Update
dorny/test-reportertov3. #9981 - Clean up LewisHe library references and dependency matching, and tighten Renovate scheduling. #10007 #10008 #10039
- Update
Adafruit_BME680tov2.0.6. #10009
Full Changelog: v2.7.20.6658ec2...v2.7.21.1370b23
Meshtastic Firmware 2.7.20.6658ec2 Alpha
🚀 Enhancements
- Xiao NRF - define suitable i2c pins for the sub-variants by @NomDeTom in #8866
- Fix(MQTT): Send first MapReport as soon as possible by @ndoo in #8872
- Feat/add sfa30 by @oscgonfer in #9372
- Improved Periodic class by @harry-iii-lord in #9501
- InkHUD: Allow non-system applets to subscribe to input events by @Vortetty in #9514
- Cardputer Kit by @caveman99 in #9540
- Skip header items when enabling the InkHUD menu cursor by @zeropt in #9552
- ExternalNotification and StatusLED now call AmbientLighting to update… by @jp-bennett in #9554
- BaseUI: Favorite Screen Signal Quality improvement by @HarukiToreda in #9566
- Add battery curve for T-Beam 1 watt by @jp-bennett in #9585
- Add sdl libs for native builds by @jp-bennett in #9595
- Log
rxBadPacketHeaders with more info (id,relay_node) likeprintPacketby @compumike in #9614 - Develop to master by @thebentern in #9618
- Fix a lot of low level cppcheck warnings by @caveman99 in #9623
- Convert
GPS*global and some new in gps.cpp tounique_ptr<GPS>by @Jorropo in #9628 - Replace delete in RedirectablePrint.cpp with std::unique_ptr by @Jorropo in #9642
- Replace delete in EInkDynamicDisplay.{cpp,h} with std::unique_ptr by @Jorropo in #9643
- Replace delete in RadioInterface.cpp with std::unique_ptr by @Jorropo in #9645
- Replace delete in CryptoEngine.{cpp,h} with std::unique_ptr by @Jorropo in #9649
- Replace delete in AudioThread.h with std::unique_ptr by @Jorropo in #9651
- Scaling tweaks by @NomDeTom in #9653
- InkHUD: Favorite Map Applet by @HarukiToreda in #9654
- Fake IAQ values on Non-BSEC2 platforms like Platformio and the original ESP32 by @caveman99 in #9663
- #9623 resolved a local shadow of next_key by converting it to int. by @caveman99 in #9665
- Zip a few gitrefs down by @caveman99 in #9672
- Limit http connections and add free heap check before allocating for SSL by @thebentern in #9693
- Split module includes for AQ module by @oscgonfer in #9711
- Align telemetry broadcast want_response behavior with traceroute by @thebentern in #9717
- InkHUD: Nodelist cleanup by @HarukiToreda in #9737
- Add GPIO_DETECT_PA portduino config, and support 13302 detection with it by @jp-bennett in #9741
- Remove unused global rIf that shadows locals and fails cppcheck by @weebl2000 in #9743
- Add Transmit history persistence for respecting traffic intervals between reboots by @thebentern in #9748
- Unlock 0x8B5 register macro guard for SX162 by @thebentern in #9777
- Enhancement(mesh): remove late packets from tx queue when full by @m1nl in #9779
- Add json file rotation option by @jp-bennett in #9783
- PPA: Remove Ubuntu 25.04, Add 26.04 by @vidplace7 in #9789
- Deb: Handle offline builds more gracefully by @vidplace7 in #9791
- Remove "x" permission bits from some source files by @ldoolitt in #9794
- Add some lora parameter clamping logic to coalesce to defaults and enforce some bounds by @thebentern in #9808
- Add back FEM LNA mode configuration for LoRa by @thebentern in #9809
- More RAK6421 work by @jp-bennett in #9813
- Add ROUTER_LATE and TAK_TRACKER to congestion scaling exemption by @h3lix1 in #9818
- Add ROUTER_LATE to telemetry impolite role check by @h3lix1 in #9819
- Add ROUTER_LATE to infrastructure init and config preservation by @h3lix1 in #9820
- Update Heltec Tracker v2 to version KCT8103L. by @Quency-D in #9822
- Add APIPort to native config by @pdxlocations in #9840
🐛 Bug fixes and maintenance
- Add agc reset attempt by @jp-bennett in #8163
- Support mini ePaper S3 Kit by @mverch67 in #9335
- Fix heltec v4 tft dependency by @Quency-D in #9507
- Apply SX1262 register 0x8B5 patch for improved GC1109 RX sensitivity by @weebl2000 in #9571
- Hold GC1109 FEM power during deep sleep for LNA RX wake by @weebl2000 in #9572
- Fix some random compiler warnings by @caveman99 in #9596
- Add missing openocd_target to custom nrf52 boards by @Stary2001 in #9603
- Fixes on SCD4X admin comands by @oscgonfer in #9607
- Feat/add scd30 by @oscgonfer in #9609
- Zero entire public key array instead of only first byte by @weebl2000 in #9619
- Respect DontMqttMeBro flag regardless of channel PSK by @weebl2000 in #9626
- Undefine LED_BUILTIN for Heltec v2 variant by @ericbarch in #9647
- Fix typo in PIN_GPS_SWITCH by @Jorropo in #9648
- Workaround NCP5623 and LP5562 I2C builds by @Jorropo in #9652
- RadioLib edge-triggered interrupts robustness by @compumike in #9658
- Add USB_MODE=1 for Station G2 - Solving all my serial issues. by @h3lix1 in #9660
- Fix detection of SCD30 by checking if the size of the return from a 2 byte register read is correct by @caveman99 in #9664
- Fix/rak3401 button by @LN4CY in #9668
- Undefine LED_BUILTIN for 9m2ibr_aprs_lora_tracker by @mrekin in #9685
- BLE Pairing fix by @HarukiToreda in #9701
- Implement 'agc' reset for SX126x & LR11x0 chip families by @weebl2000 in #9705
- Add explicit dependency on mklittlefs. by @cpatulea in #9708
- Platform: nrf52: Fix typo in BLEDfuSecure filename by @KokoSoft in #9709
- Meshtasticd: Add Luckfox Lyra Hat pinmaps by @vidplace7 in #9730
- Fix WisMesh Tap V2 env mess by @thebentern in #9734
- Hopefully fix remaining cppcheck issues by @caveman99 in #9745
- Add heltec-v4.3 board by @Quency-D in #9753
- Fix Bluetooth on RAK Ethernet Gateway by removing MESHTASTIC_EXCLUDE_… by @thebentern in #9755
- Increase PSRAM malloc threshold from 256 bytes to 2048 bytes by @thebentern in #9758
- Don't launch canned message when waking screen or silencing notification by @jp-bennett in #9762
- Fix nRF52 AsyncUDP multicast TX/RX race on W5100S by @PhilipLykov in #9765
- Avoid memory leak when possibly malformed packet is received by @m1nl in #9781
- Add ADS1115 ADC to recognition as used on RAK6421 Hat by @caveman99 in #9790
- Improve resource cleanup on connection close (and make server API a unique pointer) by @thebentern in #9799
- Spelling fixes by @ldoolitt in #9801
- Spelling fixes in .md files by @ldoolitt in #9810
- Treat ROUTER_LATE like ROUTER for power management and defaults by @h3lix1 in #9815
- Add ROUTER_LATE use the same rebroadcast rules as ROUTER by @h3lix1 in #9816
- Prevent router-like roles from auto-favoriting DM peers by @h3lix1 in #9821
- Fix(t1000e): reclassify P0.04 as sensor ...
Meshtastic Firmware 2.7.19.bb3d6d5 Alpha
🚀 Enhancements
- Feat/add sen5x by @oscgonfer in #7245
- Add initial Nix shell by @agustinmista in #8530
- InkHUD Menu improvements by @HarukiToreda in #8975
- Cut NRF52 bluetooth power usage by @phaseloop in #8992
- Feat(GPS): Support Softsleep with WAKE-UP pin on PA1010D by @ndoo in #9078
- NRF52 - power management improvements by @phaseloop in #9211
- Change canned message recipient's previous page to send page by @scobert969 in #9227
- Make BLE TX power configurable for nRF52 variants by @teizz in #9232
- Add interrupt for external charge detection by @jp-bennett in #9332
- Add a watchdog module to meshsolar. by @Quency-D in #9337
- Add StatusMessage module and config overrides by @jp-bennett in #9351
- Implement graduated scaling for NodeInfo send timeout based on active mesh size by @thebentern in #9364
- BaseUI: Bubbles for messages by @HarukiToreda in #9365
- Enable long interleaving mode for LR11x0 and SX128x by @Jorropo in #9399
- Add portduino_status, assign hardware device IDs... by @jp-bennett in #9441
- Add support for Hackaday Communicator function keys by @jp-bennett in #9444
- Add on-screen keyboard to InkHUD by @scobert969 in #9445
- Move more code out of main-nrf52 into variant.cpp by @jp-bennett in #9450
- BaseUI Message Bubble Improvements by @Xaositek in #9452
- Support fully direct request/responses by @esev in #9455
- Add reply bot module with DM-only responses and rate limiting by @mattatat25 in #9456
- Add model workflows by @thebentern in #9462
- Add custom ringtone definition for RAK4631 and enable buzzer pin by @thebentern in #9481
- Remove unused hmx variable by @EricSesterhennX41 in #9529
- Make LED_POWER blip even in critical battery by @jp-bennett in #9545
- Added toggable config and default for larger screens to enable / hide bubbles on chat messages by @thebentern in #9560
- Add Slash Key to VirtualKeyboard by @Xaositek in #9563
- Add support for CW2015 LiPo battery fuel gauge by @jp-bennett in #9564
🐛 Bug fixes and maintenance
- Add agc reset attempt by @jp-bennett in #8163
- Just set LED_BUILTIN universally to -1, as we don't use it. by @jp-bennett in #8830
- Device-install: Consistently use write-flash by @tyll in #8868
- Added Minimesh variant by @uguraltinsoy in #9289
- Fix uMesh RF POWER configuration error by @linser233 in #9326
- Delete unused code by @EricSesterhennX41 in #9350
- Feat(stm32): Add Milesight GS301 Bathroom Odor Detector by @ndoo in #9359
- To fix the gps power rail issue on RAK 19007 when RAK12023+RAK12035 is installed by @Justin-Mann in #9409
- Consolidate LoRa params / preset logic and fix display of preset values by @thebentern in #9413
- Fix logic for rak12035 sensor default config and improve messaging by @Justin-Mann in #9414
- Add pin sense to wake M6 on Solar Charge by @jp-bennett in #9416
- Move Lora Init code into LoraInit.cpp/h by @jp-bennett in #9435
- Replace strcpy with strncpy and null termination in
MQTT::publishfor JSON payloads by @k3an3 in #9436 - Move device code from main.cpp to earlyInitVariant by @jp-bennett in #9438
- Trackball revamp by @jp-bennett in #9440
- Remove the unused OCV_ARRAYs and move one to a variant.h by @jp-bennett in #9442
- Fix StoreForwardModule retry_delay multiplier always evaluating to 2x by @rcd in #9443
- Add error handling for SPI command failures in LR11x0, RF95, and SX128x interfaces by @thebentern in #9447
- Add Thinknode M4 variant_shutdown() by @jp-bennett in #9449
- External Notification - handleReceived Rewrite by @Xaositek in #9454
- Move input init to an init function in InputBroker by @jp-bennett in #9463
- Initial serialModule cleanup by @jp-bennett in #9465
- Avoid short-circuit evaluation issues in Telemetry by @oscgonfer in #9467
- Add support for the hardware buttons on Retia.io's Bluetooth Nugget device by @treysis in #9468
- Remove stale variant.h defines by @jp-bennett in #9470
- More variant.h cleanup. LED_NOTIFICATION, remove dead code, etc by @jp-bennett in #9477
- Refuse to send legacy DMs simply because the remote public key is unknown by @jp-bennett in #9485
- Fix esp32 ota bin name in scripts by @thebentern in #9488
- You get an RTC, and you get an RTC! (delete HAS_RTC as it wasn't actually doing much) by @jp-bennett in #9493
- Don't ever define PIN_LED or BLE_LED_INVERTED by @jp-bennett in #9494
- Missed in reviews - fixing send bubble by @Xaositek in #9505
- Power off control pin on Thinknode m5 during deepsleep and add RTC by @jp-bennett in #9510
- Prefer EXT_PWR_DETECT pin over chargingVolt to detect power unplugged by @jp-bennett in #9511
- Rename LED_PIN to LED_POWER, move handling out of main to dedicated module by @jp-bennett in #9512
- Inkhud battery icon improvements. by @Vortetty in #9513
- Make sure we always return a value in NodeDB::restorePreferences() by @EricSesterhennX41 in #9516
- Fix config.display.use_long_node_name not saving by @Xaositek in #9522
- Implement UDP multicast handler start/stop to ensure proper lifecycle by @thebentern in #9524
- Undefine LED_BUILTIN for
tlora-v2-1-1_6-tcxoby @mrekin in #9531 - HotFix for ReplyBot (PR #9456) by @Xaositek in #9532
- Fix hop_limit upgrade detection by @rcd in #9550
- Meshtasticd: Fix install on Fedora 43 by @vidplace7 in #9556
- RPM: Include meshtasticd-start.sh by @vidplace7 in #9561
- Fix embedded null byte truncation in ATAK strings by @niccellular in #9570
⚙️ Dependencies
- Update XPowersLib to v0.3.3 by @app/renovate in #9354
- Update meshtastic/device-ui digest to 613c095 by @app/renovate in #9383
- Update meshtastic-esp32_https_server digest to b0f3960 by @app/renovate in #9393
- Update lewisxhe-SensorLib to v0.3.4 by @app/renovate in #9395
- Update SensorLib to v0.3.4 by @app/renovate in #9396
- Update pschatzmann_arduino-audio-driver to v0.2.1 by @app/renovate in #9398
- Update meshtastic/device-ui digest to 37ad715 by @app/renovate in #9403
- Update LovyanGFX to v1.2.19 by @app/renovate in #9405
- Update GxEPD2 to v1.6.6 by @app/renovate in #9412
- Update meshtastic/device-ui digest to 69739b8 by @app/renovate in #9448
- Update libch341-spi-userspace digest to af9bc27 by @app/renovate in #9472
- Update meshtastic/device-ui digest to 63967a4 by @app/renovate in #9475
- Update Adafruit MPU6050 to v2.2.7 by @app/renovate in https://github.com/meshtast...
Meshtastic Firmware 2.7.18.fb3bf78 Alpha
🚀 Enhancements
- Move PMSA003I to separate class and update AQ telemetry by @oscgonfer in #7190
- Multi message storage by @HarukiToreda in #8182
- Add support for setting API port from the config file by @tedwardd in #8435
- PIN_PWR_DELAY_MS --> PERIPHERAL_WARMUP_MS by @fifieldt in #8467
- CLIENT_BASE: Act like ROUTER_LATE for fav'd nodes, instead of like ROUTER by @korbinianbauer in #8567
- Rak3112 support by @ford-jones in #8591
- Add systemd wrapper by @tedwardd in #8676
- Adding support for InkHUD joystick navigation for the Seeed Wio Tracker L1 E-ink by @zeropt in #8678
- Gr language specific font by @apo-mak in #8808
- Detect if NTP is active on native by @jp-bennett in #8962
- Add Rebooting to DFU mode notification as a simple pop-up by @Xaositek in #8970
- PIO: Fix ESP32 sub-variant inheritance by @vidplace7 in #8983
- Prep work for better Store and Forward by @jp-bennett in #8999
- Additional Emoji by @Ixitxachitl in #9020
- Add Russell, an STM32WL balloon-optimized node by @ndoo in #9079
- Add menus for Smart Position, Broadcast Interval and Position Interval by @Xaositek in #9080
- Improve sanitizeString function for Node Names by @Xaositek in #9086
- Add Temporary Mute to Home frame and unbury Notification Options by @Xaositek in #9097
- Add a welcome message for new contributors by @fifieldt in #9119
- Calculate hops correctly even when hop_start==0 by @esev in #9120
- Add STORE_FORWARD_PLUSPLUS_APP to core portnum checks by @jp-bennett in #9127
- Faster rotary encoder events by @brad112358 in #9146
- Add support for LilyGo T-Echo Plus by @thebentern in #9149
- Refactored some of the system menus to the new DRY method (Redux) by @Xaositek in #9152
- Add a .clang-format file by @Jorropo in #9154
- Add custom coding rate configuration for LoRa by @jp-bennett in #9155
- Add list of text message packet IDs, and check for dupes by @jp-bennett in #9180
- Add option to Mute/Unmute Channel to BaseUI by @Xaositek in #9194
- Mute: Nodes by @ford-jones in #9209
- Screenless Devices want to mute too! by @Xaositek in #9210
- Migrate all of the Meshtastic API attributes into the ini as a source of truth by @thebentern in #9214
- Pioarduino preparation by @MartinEmrich in #9223
- Meshtastic unified OTA by @thebentern in #9231
- Fix TFT_MESH settings across setting and recalling by @Xaositek in #9234
- Add release notes generation and publishing workflow by @thebentern in #9255
- Unified ESP32 OTA firmware by @vidplace7 in #9258
- Add support for uMesh Modules by @linser233 in #9259
- Extra pins by @jp-bennett in #9260
- BaseUI: Autosave Messages by @HarukiToreda in #9269
- Node Actions Menu Overhaul by @Xaositek in #9287
- Added I2C scanner a check for the QMC6310N. by @lewisxhe in #9305
- Allow ICM20948 IMU to sleep by @HarukiToreda in #9324
- Meshtastic OTA (moar) by @thebentern in #9327
- Add sqlite depdendency (Cherry-picks from sfpp) by @fifieldt in #9328
- Add interrupt for external charge detection by @jp-bennett in #9332
- Improve BaseUI Preset Change Flow by @Xaositek in #9343
- Implement graduated scaling for NodeInfo send timeout based on active mesh size by @thebentern in #9364
🐛 Bug fixes and maintenance
- RTC: PCF85063 support, port to SensorLib 0.3.1 by @WillyJL in #8061
- Added tcxo definition to mesh-tab by @valzzu in #8604
- Preliminary Thinknode M4 Support by @caveman99 in #8754
- Actions: Compact manifest job output summary by @vidplace7 in #8957
- PlatformIO: Restructure networking_base for re-use by @vidplace7 in #8964
- Add LilyGO T-Beam 1W support by @santosvivos in #8967
- PIO: Remove useless inheritence (references extends env) by @vidplace7 in #8987
- Macro guard heap_caps_malloc_extmem_enable from SENSECAP_INDICATOR by @Xaositek in #9007
- Add Rak 6421 autoconf by @jp-bennett in #9010
- Implement basic github action comment reporting target diffs by @Jorropo in #9022
- In protobuf update, allow develop branch to auto-update by @jp-bennett in #9027
- 🔧 Fix LNA/PA power control for Heltec v4, wireless tracker v2 by @weebl2000 in #9029
- Shame do not complain about missing targets by @Jorropo in #9032
- Action: skip trying to comment binary size change results if it is not a PR by @Jorropo in #9033
- Fix gps pin defs for various NRF variants. by @NomDeTom in #9034
- Fix Rotary enc long press by @brad112358 in #9039
- Add needed support bits for the Meshstick by @jp-bennett in #9042
- In statusLEDModule, also detect isCharging by @jp-bennett in #9050
- PlatformIO: Re-Org ESP32 family shared props by @vidplace7 in #9060
- Cleanup: Remove icarus custom framework-arduinoespressif32 by @vidplace7 in #9064
- M6 shutdown and LEDs work by @jp-bennett in #9065
- Implement HAS_PHYSICAL_KEYBOARD for devices with physical keyboards by @Xaositek in #9071
- KZ_863 is not wide lora by @fifieldt in #9075
- In autoconf, don't probe Wire unless i2c device is set by @jp-bennett in #9081
- Correctly set type for event_mode max() position threshold by @vidplace7 in #9083
- Fix PR#8061 SensorLib nRF ThinkNode M-series by @vidplace7 in #9084
- Pioarduino .gitignore by @vidplace7 in #9085
- Pass GH_TOKEN to shame's gh run download step by @Jorropo in #9087
- GPS Menu Validation Fix - Missed in Reviews by @Xaositek in #9093
- Noop "download" portion of #shame by @vidplace7 in #9114
- Syntax fix for first timer welcome bot. by @fifieldt in #9144
- Fix link formatting in welcome message by @fifieldt in #9163
- Fixed shouldFilterReceived function to check prev relay according to the function definition by @strngr in #9168
- Add EByte EoRa-Hub by @vidplace7 in #9169
- Fix zero in sp02 and Heart Rate on screen by @sergeygalkin in #9174
- RadioInterface::getRetransmissionMsec now handles encrypted packets c… by @rbreesems in #9184
- Added support for the new SSD1306 control panel. by @lewisxhe in #9192
- Fix Function + M in code by @Xaositek in #9200
- Fix TSL2591 detection by adding command bit to register read by @heathdutton in #9215
- Fix screen not sleeping due to power status updates by @heathdutton in #9216
- Fix rotary regression and tighten up playBeep by @thebentern in #9221
- Use correct name...
Meshtastic Firmware 2.7.17.9058cce Alpha
Warning
If you experience immediate boot-loops after updating, this likely indicates that you need perform a full erase and flash. If you installed the previously revoked 2.7.17 release with the NimBLE 2 upgrade and paired the device with bluetooth, this will occur.
🚀 What's Changed
- Support overriding GPS serial pins on all architectures by @Stary2001 in #8486
- Swap GPS pins for GPS TX/RX only for T114/T-Echo by @Xaositek in #8751
- Remove native from the build, and remove the required permissions by @NomDeTom in #8685
- Swap the GPS serial port pins. by @Quency-D in #8756
- More GPS pin flips for devices by @Xaositek in #8760
- Remove screen activation in powerExit function by @jp-bennett in #8779
- Add LOG_POWERFSM and LOG_INPUT debug macros by @jp-bennett in #8791
- Fix ifdef statement after ST7796 merge to resolve screen color issues by @Xaositek in #8796
- Update dorny/test-reporter action to v2.3.0 by @renovate[bot] in #8809
- InkHUD: Replace assert in UTF8 decoder to prevent unexpected reboot by @HarukiToreda in #8807
- Update meshtastic/device-ui digest to 3bf3322 by @renovate[bot] in #8814
- tryfix screen.cpp ifdefs by @jp-bennett in #8816
- Add WiFi Toggle to System frame to re-enable by @Xaositek in #8802
- #if defined conditions for WiFi by @jp-bennett in #8815
- Add initial support for Hackaday Communicator by @jp-bennett in #8771
- M5Stack UnitC6L - Enabled MQTT and WEBSERVER by default by @RikerZhu in #8679
- Initial Chatter 2.0 fix for baseUI by @HarukiToreda in #8615
- Make GPS_TX_PIN the serial TX and GPS_RX_PIN the serial RX for all NRF variants by @Stary2001 in #8772
- Update XPowersLib to v0.3.2 by @renovate[bot] in #8823
- RPM: Fix broken builds (bad backmerge) by @vidplace7 in #8787
- Flags and scripts for size reduction on NRF52 -> Currently targeting … by @thebentern in #8825
- Plain RAK4631 should not compile EInk and TFT display code by @thebentern in #8811
- Fix for high power drain after shutdown on Heltec T114. by @rbomze in #8800
- Bump release version by @github-actions[bot] in #8786
- Move everything from /arch to /variant by @jp-bennett in #8831
- Move device specific OCV curves to their respective device.h by @jp-bennett in #8834
- Add 'cleanup' to required PR labels by @jp-bennett in #8835
- Don't scale up the frequency of telemetry sending by @RCGV1 in #8664
- Update actions/stale action to v10.1.1 by @renovate[bot] in #8848
- Update alpine Docker tag to v3.23 by @renovate[bot] in #8853
- Promicro documentation update by @NomDeTom in #8864
- Optimization flags for all NRF52 targets to reduce code size by @Donix212 in #8854
- Update meshtastic/device-ui digest to 4fb5f24 by @renovate[bot] in #8862
- Update protobufs and classes by @github-actions[bot] in #8871
- promicro doesn't need limiting by @NomDeTom in #8873
- Enable USB_MODE to acknowledge RTS/DTR reset signal from esptool for heltec-v4 by @h3lix1 in #8881
- Fix #8883 (lora-Pager fter playing the notification, voltage does not disappear from the speaker) by @polarikus in #8884
- Resolve #8887 (T-LoRaPager Vibration on New Message Delivery) by @polarikus in #8888
- OnScreenKeyboard Improvement with Joystick and UpDown Encoder by @whywilson in #8379
- [T-LoraPager]Disable vibration if needed by @polarikus in #8895
- Tryfix: T3S3 ePaper eInk updates by @mverch67 in #8898
- Improved R1 Neo & muzi-base buzzer beeps for GPS on/off by @simon-muzi in #8870
- Meshtastic build manifest by @vidplace7 in #8248
- Fix backwards buttons on Thinknode-M1 by @jp-bennett in #8901
- Update protobuf name of FRIED_CHICKEN by @jp-bennett in #8903
- Guard 2M PHY mode for NimBLE by @thebentern in #8890
- Renovate: fix BH1750_WE by @vidplace7 in #8767
- Fixed the issue where T-Echo did not completely shut down peripherals… by @lewisxhe in #8524
- Fix apply device-install permissions by @vidplace7 in #8911
- Update platformio/espressif32 to v6.12.0 by @vidplace7 in #7697
- Fix #8915 [Bug]: Exception Decoder does not recognize the backtrace by @polarikus in #8917
- Actions: Fix release manifest formating by @vidplace7 in #8918
- ARCtastic runners by @vidplace7 in #8904
- Update peter-evans/create-pull-request action to v8 by @renovate[bot] in #8919
- PIO: Fix closedcube lib reference by @vidplace7 in #8920
- Use PSRAM to reduce heap usage percentage on ESP32 with PSRAM by @samm-git in #8891
- Create new screen colors for BaseUI by @Xaositek in #8921
- Enable Muzi-base LED notification by @jp-bennett in #8925
- Update System Frame for improved rendering on devices by @Xaositek in #8923
- Add I2C device check for seesaw device on native by @jp-bennett in #8927
- Use truncated position for smart position by @RCGV1 in #8906
- Properly turn off power pins at shutdown for m3 by @jp-bennett in #8935
- Update meshtastic/device-ui digest to 2746a1c by @renovate[bot] in #8936
- Use 'gh-action-runner' action for "Check" jobs. by @vidplace7 in #8938
- Optimize builds to reduce duplicate dependency checks by @vidplace7 in #8943
- Update actions/cache action to v5 by @renovate[bot] in #8944
- Fix #8899 [Bug]: [TloraPager] RotaryEncoder crash by @polarikus in #8933
- Mark implicit ACK for MQTT as MQTT transport by @GUVWAF in #8939
- Fix GPS Buffer full issue on NRF52480 (Seeed T1000E) by @fifieldt in #8956
- Actions: Compact manifest job output summary by @vidplace7 in #8957
- Add JSON packet recording option to native by @jp-bennett in #8930
- Implement Long Turbo preset by @thebentern in #8985
- Be more judicious about responding to want_response in existing meshes by @thebentern in #9014
- First position send validation by @thebentern in #9023
- Calculate hops correctly even when hop_start==0 by @esev in #9120
- Revert NimBLE 2.X upgrade by @thebentern in #9125
New Contributors
- @RikerZhu made their first contribution in #8679
- @rbomze made their first contribution in #8800
- @Donix212 made their first contribution in #8854
- @polarikus made their first contribution in #8884
- @phaseloop made their first contribution in #8858
- @samm-git made their first contribution in #8891
Full Changelog: v2.7.16.a597230...v2.7.17.9058cce