Cairn 124 raises the node list to 510 on the ESP32 touch and key boards and syncs with the phone faster over Bluetooth. On the device you can now remove several nodes at once, back up your contacts to the card, and choose which heard nodes get saved. The Heltec T096 now takes a click or a hold and nothing else, so each click acts at once. Apart from the T096's button, none of it has run on hardware yet: see "Not yet checked" below.
Highlights:
- 510 nodes (L2 Pro, Heltec V4 touch, Heltec V4 Kit V1, ThinkNode M9, T-Deck; any app): the node list holds 510, up from 350. That is the most the companion protocol can report. The L1 family, the T096 and the T-Display SF32 stay at 350.
- Faster Bluetooth sync (L2 Pro, Heltec V4 kits, M9, T-Deck; any app): frames to the phone used to go out 60 ms apart, so a 350-node list took about 22 s. Now they go as fast as Bluetooth takes them, and a frame the link refuses is sent again instead of lost.
- Remove several nodes at once (L2 Pro, Heltec V4 kits, M9, T-Deck): Contacts › Show › Select…, tap the nodes (or All), then Remove. A linked app removes them too.
- Contacts backup on the card (L2 Pro, Heltec V4 touch, M9, T-Deck): Settings › Storage › Back up saves your contacts to the card. Restore adds back the ones the device doesn't have, after a reset or a reflash. It never changes or removes one.
- Auto-add on the device (L2 Pro, Heltec V4 kits, M9, T-Deck): Settings › LoRa › Contacts picks which nodes heard on the mesh are saved: all, selected types, or none. It is the same setting as the Cairn app's Settings › Nodes › Auto-Add, so the two always agree.
- T096: click and hold only. A click moves on at once, with no wait for a double-click. The pages are Home, Nodes, Spectrum, GPS, Menu, and a hold opens what the page offers. Hibernate is now Power off. Checked on a T096.
- Fixes (key and touch boards): Settings › Buttons works on the M9 (Space is its button). Up and Down scroll a long list of choices with the keys. The lock screen's message matches its count when a channel is muted. On the M9 and T-Deck, the sidebar's counts are no longer hidden under the focus ring.
- Security fix from MeshCore (every companion): an empty node slot could be matched as a peer, so a packet could be decrypted as if it came from it. Empty slots are now skipped.
Not yet checked on a device: apart from the T096's new button handling, nothing new in 124 has run on hardware here. Every board built cleanly and the 1,848 native unit tests pass, but that is all. In particular: the 510-node list and the faster Bluetooth sync (not measured yet), Select and Remove, the card backup and Restore, Auto-add on the device, the M9's Space button and the sidebar counts. The Heltec V4 Expansion Kit V1 build is still an untested preview.
Update
- On Cairn 108 to 123 (L2 Pro, Heltec V4 touch, Heltec V4 Kit V1, ThinkNode M9, T-Deck, T-Display SF32): Settings › System › Firmware update: Check, Download, Install. The new build starts on trial and goes back to the old one by itself if it fails to start. On the T-Display SF32, dock the core on the keyboard board first (it carries the Wi-Fi chip).
- T-Deck started from an SD-card launcher: don't use Update on 121 or earlier (122 and later are fine). Their updater is the one that crashes under a launcher. Instead, copy
MeshCore-TDeckPlus-Cairn124-2026-10-29-update.binto the card and install it from the launcher, as you installed Cairn. From 122 on, the device says "Started by a launcher: update from its SD card" instead of crashing. If you'd rather update over Wi-Fi, write the-full.binat0x0over USB once. This removes the launcher and erases the device, so export your key and contacts first. - Over USB on an ESP32 board: the
-full.bingoes at0x0, after Erase Flash, and erases everything. The-update.bingoes at0x10000and keeps your data. If the board last updated over Wi-Fi, it may be running from its second slot and keep starting the old build: clear the boot selector first, as in the ESP32 install guide. - Wio Tracker L1 Pro, DV1, L1 e-ink, the room server and the T096: double-tap Reset and copy the board's
.uf2onto the drive that appears (UF2 guide). Updating keeps your identity, contacts, channels and settings. - Compact repeaters: write the
-repeater-update.binat0x10000, or copy the-repeater.uf2. They don't update over Wi-Fi. - Going back to 123: 124 saves the same files as 123. One exception: on the ESP32 boards, a node list over 350 doesn't fit 123. It loads the first 350 and drops the rest the next time it saves the list. Back up to the card first (Settings › Storage › Back up) if you want them back on 124 later. Going back to 121 or earlier still loses the messages waiting on the radio for the app, as in 122's notes.
- A board without Cairn: write the board's
-full.bin(ESP32 install guide), copy the.uf2(UF2 guide), or run the SF32 installer (SF32 install guide).
Downloads
| Board | File | Use |
|---|---|---|
| Seeed Wio Tracker L2 Pro | MeshCore-WioL2Pro-Cairn124-2026-10-29-full.bin
| first install or recovery over USB, at 0x0 (erases everything)
|
MeshCore-WioL2Pro-Cairn124-2026-10-29-update.bin
| update over Wi-Fi, or over USB at 0x10000
| |
| Heltec V4-R8 + Expansion Kit V2 (touch) | MeshCore-HeltecV4Touch-Cairn124-2026-10-29-full.bin
| first install or recovery over USB, at 0x0 (erases everything)
|
MeshCore-HeltecV4Touch-Cairn124-2026-10-29-update.bin
| update over Wi-Fi, or over USB at 0x10000
| |
| Heltec V4 + Expansion Kit V1 (touch), untested preview | MeshCore-HeltecV4KitV1-Cairn124-2026-10-29-full.bin
| first install or recovery over USB, at 0x0 (erases everything)
|
MeshCore-HeltecV4KitV1-Cairn124-2026-10-29-update.bin
| update over Wi-Fi, or over USB at 0x10000
| |
| Elecrow ThinkNode M9 | MeshCore-ThinkNodeM9-Cairn124-2026-10-29-full.bin
| first install or recovery over USB, at 0x0 (erases everything)
|
MeshCore-ThinkNodeM9-Cairn124-2026-10-29-update.bin
| update over Wi-Fi, or over USB at 0x10000
| |
| LilyGO T-Deck / T-Deck Plus | MeshCore-TDeckPlus-Cairn124-2026-10-29-full.bin
| first install or recovery over USB, at 0x0 (erases everything, and removes a launcher)
|
MeshCore-TDeckPlus-Cairn124-2026-10-29-update.bin
| update over Wi-Fi, over USB at 0x10000, or from a launcher's SD card
| |
| LilyGO T-Display SF32 + keypad | MeshCore-TDisplaySF32-Cairn124-2026-10-29-install.zip
| install over USB, with the included installer |
MeshCore-TDisplaySF32-Cairn124-2026-10-29-update.bin
| the app image (and its .sha256)
| |
| Seeed Wio Tracker L1 Pro | MeshCore-WioL1Pro-Cairn124-2026-10-29.uf2
| companion, SH1106 OLED |
MeshCore-DV1-Cairn124-2026-10-29.uf2
| companion, 2.42" SSD1309 OLED on the Grove port | |
MeshCore-WioL1Eink-Cairn124-2026-10-29.uf2
| companion, 2.13" e-ink | |
MeshCore-WioL1RoomServer-Cairn124-2026-10-29.uf2
| room server | |
| Heltec Mesh Node T096 | MeshCore-HeltecT096-Cairn124-2026-10-29-ble.uf2
| companion (phone app over Bluetooth) |
MeshCore-HeltecT096-Cairn124-2026-10-29-usb.uf2
| companion (app over USB serial) |
The compact repeater files (-repeater in the name) are rebuilt from the same tree: Heltec T096 and T114 (.uf2), and the Heltec Wireless Tracker, Tracker V2, V2, V3, V4 and V4-R8 (-repeater-full.bin and -repeater-update.bin). Cairn 124 runs on MeshCore 1.18.0, as 118 to 123 did. SHA256SUMS.txt covers every file: shasum -a 256 -c SHA256SUMS.txt.
Not in this release: the LilyGO T-LoRa Pager and the SenseCAP MeshPager X2 have their own experimental pre-releases (what experimental builds are). The 🧪 preview boards (RAK, XIAO, T-Beam and others) are in Cairn 107 preview.
Added
- Remove several nodes at once (L2 Pro, Heltec V4 touch and Kit V1, ThinkNode M9, T-Deck): in Contacts, Show › Select…, tap the nodes (or All), then Remove N and confirm. The removal runs in the background at the linked app's pace, so the app drops each one too. The title counts down, and a message says when it is done.
- Contacts backup on the card (L2 Pro, Heltec V4 touch, ThinkNode M9, T-Deck: the boards with a card slot): Settings › Storage › Back up saves the contacts as
/Backup/contacts.bin. The last backup is replaced only once the new one is complete. Restore asks first, then adds the backup's contacts that the device doesn't have. It never changes or removes a contact, and stops when the list is full. A changed or cut-off file is refused. The live list stays in the device's flash. - Settings › LoRa › Contacts (L2 Pro, Heltec V4 kits, M9, T-Deck): which nodes heard on the mesh are saved as contacts, as the Cairn app's Settings › Nodes › Auto-Add. Auto-add is All nodes, Selected types (Contacts, Repeaters, Rooms) or Manual. When full replaces the oldest non-favorite or stops saving. These are the same settings the app writes, so both always agree, and each change is saved at once. To make room, Auto retry moved onto the Quick replies page, now the Messages card.
Changed
- 510 nodes (L2 Pro, Heltec V4 touch and Kit V1, ThinkNode M9, T-Deck), up from 350: the most the companion protocol can report. The list sits in the PSRAM, so the boards' internal RAM is unchanged. The L1 family, the T096 and the T-Display SF32 stay at 350.
- Faster Bluetooth sync (the ESP32 boards): frames to the app went out a fixed 60 ms apart, about 16 a second. A 350-node list took about 22 s, and every message, channel and reply waited its turn. Now they go as fast as the Bluetooth stack takes them, at least 12 ms apart. A frame the stack refuses on a congested link stays first in line and goes again 15 ms later, where before it was lost. One refused for 2 s is dropped, as before. The L1 family and the T096 already sent at the link's pace. Not yet measured on hardware.
- T096: click and hold only. A click moves on at once: the button no longer waits to see whether a double-click follows. The pages go Home → Nodes (was Recent) → Spectrum → GPS → Menu. The radio line (frequency, SF, BW) moved under the Spectrum graph. A hold opens the messages on Home, the next nodes on Nodes, and the list on the Menu. Spectrum and GPS ignore a hold.
- Menu: Send advert, Flood advert, Bluetooth, GPS, Settings ›, Reboot, Power off (was Hibernate), Back.
- Settings ›: Theme, Screen, Brightness, Keep on USB, Msg wake, Share pos, LNA, Boost RX, Back.
- Checked on a T096.
- RadioLib 7.8.1 (every board), up from a pre-7.8.0 snapshot. It fixes how the SX126x status byte is read.
Fixed
- Settings › Buttons did nothing on the ThinkNode M9: its actions follow the User button, which the M9 doesn't have. Space is now that button outside a text field, as on the T-Deck: click and double-click.
- Scrolling a list of choices with the keys (M9, T-Deck): in a list taller than the screen (the Buttons actions, a sound list), Up and Down stopped at the last item in view. It now scrolls, as a long page does.
- Sidebar counts under the focus ring (M9, T-Deck): the ring around a focused sidebar cell covered part of the next cell's count (the Chats count under a focused Home). The counts are now drawn over the ring and always read whole.
- Lock screen with a muted channel (touch and key boards, T-Display SF32): the count left out the muted channel, but the message shown beside it was the newest of any conversation. With Public muted, the lock screen could read "2 new messages" over a Public message. The lock screen, the screensaver and the new-message preview now show the newest message the count includes.
- Empty node slots matched as a peer (every companion; from MeshCore): an unused slot has an all-zero key, and a key exchange with it gives an all-zero secret. A packet with source hash 0x00 could be decrypted as if from that "peer". Lookups now skip empty slots.
set dutycycle nan(every board with the command line; from MeshCore) was accepted and broke the airtime limit.set afandset dutycyclenow refuse anything that isn't a number.