MeshCore to otwartoźródłowy system do szyfrowanej komunikacji off-grid, oparty na LoRa. Każdy użytkownik łączy aplikację z własnym węzłem typu companion, a zasięg sieci zwiększają repeatery (przekaźniki) ustawiane w wysokich miejscach. Trzeci typ urządzenia to room server, czyli serwer, na którym publikuje się wpisy.
Od kwietnia do sierpnia 2026 roku ukazały się cztery wydania firmware. Poniżej ich przegląd: prostym językiem dla początkujących oraz z nazwami komend, numerami zmian i wartościami domyślnymi dla doświadczonych. Na końcu jest lista rzeczy do sprawdzenia po aktualizacji. Materiał oparto na oficjalnych notach wydań i dokumentacji CLI, czyli wiersza poleceń, którym konfiguruje się repeatery i room servery.
| Wersja | Data | Noty wydania |
|---|---|---|
| 1.15.0 | 19 kwietnia 2026 | blog.meshcore.io |
| 1.16.0 | 6 czerwca 2026 | blog.meshcore.io |
| 1.17.0 | 9 sierpnia 2026 | blog.meshcore.io |
| 1.17.1 | 14 sierpnia 2026 | blog.meshcore.io |
Na stronie wydań projektu wersja 1.17.1 jest oznaczona jako najnowsza. Każde wydanie występuje w trzech wariantach: companion, repeater i room server.
Dlaczego warto aktualizować regularnie
O jakości sieci decydują wszystkie węzły w torze pakietu, nie tylko własny. Dokumentacja ostrzega, że firmware 1.13.0 i starsze odrzuca pakiety z wielobajtowymi identyfikatorami ścieżki, więc adverty (pakiety, którymi węzeł ogłasza swoją obecność) z takimi identyfikatorami mogą się słabo rozchodzić, dopóki większość repeaterów nie zostanie zaktualizowana. Podobnie rozszerzone potwierdzenia ACK z wersji 1.16 wymagają, według autorów, żeby najpierw zaktualizować repeatery. Do tego dochodzą poprawki sprzętowe, np. naprawiony brak transmisji w Heltec T096. Wiele zmian dotyczy zachowania całej sieci, więc każdy zaktualizowany repeater pomaga sąsiadom.
Limity w UE: 10% czasu nadawania i 500 mW ERP
Domyślne parametry radia w dokumentacji CLI (get radio) to 869,525 MHz, pasmo 250 kHz, SF11 i CR5. Ten kanał leży w podpaśmie P (869,4–869,65 MHz). Według ETSI EN 300 220, opisanego m.in. w dokumentacji The Things Network, obowiązuje tam limit 10% czasu nadawania oraz moc maksymalna 500 mW ERP (ok. 27 dBm). Sąsiednie podpasma mają ostrzejsze limity: 25 mW ERP i 0,1% lub 1% czasu nadawania.
Duty cycle to według decyzji Komisji 2006/771/WE odsetek czasu w ciągu godziny, w którym urządzenie aktywnie nadaje. Limit 10% oznacza więc najwyżej 6 minut nadawania na godzinę. Według dokumentacji firmware domyślnie dopuszcza 50%, dlatego w UE trzeba to ustawić samodzielnie:
get dutycycle
set dutycycle 10
Poprzednik tej komendy, set af (współczynnik airtime), jest od wersji 1.15.0 oznaczony jako przestarzały. Wartość af 9 odpowiadała w przybliżeniu 10% czasu nadawania.
Z mocą jest podobnie. Komenda set tx ustawia moc samego układu LoRa (1–22 dBm), a płytki z dodatkowym wzmacniaczem dodają swoje. Do tego dochodzą zysk anteny i straty w kablu, więc limit 500 mW ERP dotyczy mocy wypromieniowanej przez cały tor, a nie liczby w firmware. Dokumentacja ostrzega, że zbyt wysoka wartość może naruszać prawo, a przy sterowaniu wzmocnieniem nadawania na Station G3 zaleca dobrać poziom zgodnie z lokalnymi limitami. Państwa UE mogą dopuszczać mniej restrykcyjne warunki niż decyzja unijna, więc warto sprawdzić przepisy krajowe.
Wersja 1.15.0 (19 kwietnia 2026)
Domyślny zakres (default scope)
Regiony (zakresy) pozwalają ograniczać, dokąd rozchodzą się pakiety typu flood, czyli te, które repeatery przekazują dalej wszystkim w zasięgu. Od wersji 1.12.0 dało się ograniczać zakresem wiadomości kanałów grupowych. Sieci, które chciały całkiem wyłączyć ruch bez zakresu (region denyf *), np. w Niemczech, nie mogły jednak używać zakresów dla wiadomości prywatnych, logowań czy zapytań. Wersja 1.15.0 wprowadza domyślny zakres, który obejmuje wszystkie takie pakiety.
- Companion: ustawienie w aplikacji (wersja 1.43.0, ekran ustawień eksperymentalnych) obejmuje wszystkie pakiety flood wysyłane z węzła, m.in. adverty oraz wiadomości i logowania, gdy ścieżka jest nieznana. Zakres ustawiony dla kanału grupowego ma pierwszeństwo.
- Repeater i room server: komenda
region default {nazwa | <null>}ustawia lub czyści domyślny zakres. Region jest tworzony automatycznie, jeśli go nie ma, a zapis (region save) wykonuje się sam. Zakres dotyczy tylko pakietów, które pochodzą z tego węzła: adverty repeatera oraz adverty i wpisy room servera. - Odpowiedzi na żądania: jeśli zakres żądania da się rozpoznać, odpowiedź idzie w tym samym zakresie, w przeciwnym razie bez zakresu. Autorzy wybrali tę zasadę jako bezpieczniejszą w okresie przejściowym, żeby administrator nie odciął sobie dostępu do własnego repeatera.
- Wskazówka: dla repeatera warto wybrać duży region, np. miasto, a dla użytkownika taki, który obejmuje zarówno jego, jak i rozmówców. Twórcy regionalnych kompilacji mogą ustawić nazwę domyślnego zakresu flagą
-D DEFAULT_FLOOD_SCOPE_NAME. - Drobiazg:
region putdomyślnie zezwala teraz na flood, więc nie trzeba już dopisywaćregion allowf.
Radio i limity nadawania
Wersja 1.15.0 dodała komendę get|set dutycycle (opisaną wyżej), a wzmocnienie odbioru układu radiowego (radio.rxgain) jest teraz domyślnie włączone (#2124). Dokumentacja zaznacza, że po aktualizacji ze starszej wersji do 1.14.1 bez czyszczenia pamięci flash to ustawienie może być wyłączone z powodu błędu #2118, więc warto je sprawdzić komendą get radio.rxgain. Zakres częstotliwości obsługiwany przez firmware rozszerzono w dół do 150 MHz (#2126). Użytkownik odpowiada za zgodność wybranej częstotliwości z przepisami.
Pozostałe zmiany
- nowy typ pakietów binarnych GROUP_DATA dla kanałów grupowych (#1928, #2130), którego format opisano w dokumentacji,
- aktualizacje OTA (bez kabla) w companionach na nRF (#2323) oraz companion dla Heltec Wireless Paper,
- nowy sprzęt: Heltec V4.3, Heltec T096 (nRF Tracker), GAT562 Mesh EVB Pro (repeater i room server), Muzi Works R1 Neo, GAT562 Watch,
- poprawki: zapamiętywanie ustawień GPS, inicjalizacja czujnika BME680, pętla restartów na Xiao C3, odczyt baterii w Heltec Wireless Paper, komunikacja WiFi w companionach Heltec V4 i T-Beam 1W, RXEN na Waveshare RP2040.
Wersja 1.16.0 (6 czerwca 2026)
Mniej zbędnego ruchu w sieci
flood.max.advert(#2702) ogranicza liczbę przeskoków, jakie może wykonać advert. Wartość domyślna to 8.flood.max.unscoped(#2661) robi to samo dla pakietów bez zakresu. Domyślnie 64, czyli w praktyce bez ograniczenia. Dokumentacja podaje jako alternatywę dlaregion denyf *wartość niższą, np. 3, która pozwala na lokalny ruch bez zakresu i chroni region przed hałaśliwymi sąsiadami.- domyślny interwał wysyłania flood advertów wynosi według not wydania 47 godzin (wcześniej 12), co zmniejsza obciążenie kanału.
Lepszy odbiór na niskich SF i nowe potwierdzenia
Przy niskich współczynnikach rozproszenia (SF) radio ma mniej czasu, by „złapać” początek pakietu. Preambuła, czyli wstęp ramki LoRa, jest więc dłuższa: 32 symbole dla SF ≤ 8 i 16 dla SF > 8 (#1954). Firmware obsługuje też rozszerzone ACK o długości 6 bajtów zamiast 4. Dodatkowe bajty zawierają rozszerzony numer próby i losowy bajt. To przygotowanie pod funkcję aplikacji, która pozwoli na znacznie więcej niż 4 próby wysłania wiadomości bezpośredniej (#2594).
Nowe możliwości companiona i aplikacji
- zapytania anon_req/response do węzłów spoza kontaktów (#2672) ułatwiają odkrywanie repeaterów i regionów bez dodawania ich do kontaktów,
- aplikacja może składać i wysyłać surowe pakiety z nagłówkiem, ścieżką i ładunkiem (#2543), a rozmiar ramki protokołu companiona wzrósł do 176 bajtów (#2022),
- companion może jawnie zignorować domyślny zakres i wysłać pakiet bez zakresu (#2492),
- automatyczne wyłączanie companiona, nieaktywne przy zasilaniu zewnętrznym, z ostrzeżeniem na wyświetlaczu (#2663).
Komenda region def
Definiowanie regionów przez CLI było rozwlekłe, zwłaszcza przy głębokim zagnieżdżeniu. region def (#2540) pozwala opisać hierarchię w jednej linii. Kursor zaczyna od *, a każda nazwa tworzy region potomny bieżącego, przy czym zapis nazwa|skok przenosi kursor do wskazanego regionu. Przykład z dokumentacji:
region def a b c d|b e f
region save
Odpowiada on serii region put a, region put b a, region put c b, region put d c, region put e b i region put f e. Repeater przyjmuje w jednej linii do 160 znaków, a przed region save warto sprawdzić wynikowe drzewo.
Energia, sprzęt i poprawki
- lepsze oszczędzanie energii we wszystkich repeaterach na ESP (#1687) i companionach na nRF (#2286). Dla repeaterów dokumentacja opisuje też flagę
powersaving, domyślnie wyłączoną, - zmiana częstotliwości trybu client repeat (off-grid) w UE z 869,0 na 869,495 MHz (#2604),
- walidacja wartości
rxdelay,txdelayidirect.txdelayw CLI (#2443), - naprawa błędu, przez który wykrywanie sąsiadów w repeaterze nie działało przy
path.hash.moderóżnym od 0, - nowy sprzęt: LilyGo T-Echo Card i T-Impulse Plus, Station G3, Heltec Mesh Node T1, warianty Xiao S3, repeater dla Heltec V4 z zestawem rozszerzającym,
- widok „pod maską”: przeprojektowany menedżer czujników, mniejsze zużycie RAM na starszych płytkach, poprawki trybu modemu KISS, nowe ekrany startowe, nowy fork biblioteki BLE dla nRF zapobiegający zawieszeniom przy szybkim łączeniu i rozłączaniu.
Wersja 1.17.0 (9 sierpnia 2026)
Mniej kolizji pakietów
Największa zmiana dotyczy mechanizmu listen-before-talk, czyli sprawdzania, czy kanał jest wolny, zanim węzeł zacznie nadawać. Zespół poprawił obsługę sytuacji, w których flagi przerwań radia LoRa „zawieszają się” (#3036), oraz dodał właściwe wykrywanie preambuły i obsługę limitu czasu przerwań nagłówka (#2977). Według autorów nowy schemat działa porównywalnie z sprzętowym CAD (wykrywaniem aktywności kanału), ale bez jego 4-sekundowych zawieszeń, i może być najważniejszą poprawą wydajności dla wszystkich sieci. Sprzętowe CAD pozostaje domyślnie wyłączone. Doszła komenda set cad on|off (#1727), a w companionach sprzętowe CAD wyłączono na stałe (#3121).
Konfiguracja w formacie JSON
Konfiguracja węzła jest teraz przechowywana w JSON we wszystkich firmware (#2982). Powinna się zmigrować automatycznie po aktualizacji do 1.17.0. Stary blok binarny zostaje nietknięty, więc powrót do starszego firmware jest możliwy.
Nowe komendy i funkcje
room.postw room serverze, do wpisów publikowanych przez sam serwer (#2688),get pwrmgt.bootreasonna celach ESP (#2765), pokazujące przyczynę restartu i wyłączenia,get|set radio.fem.rxgainna wybranych płytkach Heltec (#2140), czyli sterowanie wzmacniaczem odbioru w zewnętrznym module FEM, osobne odradio.rxgain,- wyłączanie repeatera długim przyciskiem (#2883) oraz temperatura procesora w telemetrii companiona (#2987),
- wzmocnienie odbioru
rx boosted gainw room serverze (#3023) i naprawa go w LR1110 (#2844).
Wydajność, energia, sprzęt
- urządzenia na nRF52 używają sprzętowej kryptografii CC310 (#2824), a poprawki hibernacji i wyłączania zmniejszają pobór prądu (#2895),
- nowy, szybszy sterownik wyświetlacza ST7735 (Heltec T096, Wireless Tracker) i nowa, bardziej responsywna kolorystyka interfejsu companiona,
- wsparcie dla radia LR2021 (#3115) oraz nowych urządzeń: Meshnology W12, Sensecap MeshTracker X1, Elecrow Thinknode M7 i M9, Heltec RC32, Heltec V4 R8, Heltec Tower V2, Nibble Zero Connect i moduły Ethernet RAK,
- przygotowanie „uniwersalnego companiona”: obsługa do 4 interfejsów szeregowych naraz, np. BLE i USB. Oficjalnych kompilacji wielointerfejsowych jeszcze nie ma.
Poprawki stabilności i bezpieczeństwa
Naprawiono ponowne łączenie BLE po sparowaniu i synchronizację kolejki odbiorczej na ESP32 (#3005, #3007), zawieszanie modemu KISS przy obciążeniu USB (#2819) oraz zatrzymywanie synchronizacji czasu z GPS na węzłach z długim czasem pracy (#2937). Firmware odrzuca teraz błędne wartości path_len w pakietach PATH i ANON_REQ, a odpowiedzi ANON_REQ mają sprawdzanie długości ścieżki (#3107). Poprawiono też regulatory DC-DC w T-Echo Lite i Heltec T114 oraz dodano zewnętrzny watchdog w Heltec Tower V2.
Wersja 1.17.1 (14 sierpnia 2026)
To szybka poprawka do 1.17.0. Najważniejsze zmiany:
- FEM rxgain: ustawienie
radio.fem.rxgainnie było poprawnie zapamiętywane w 1.17.0. Po aktualizacji administratorzy repeaterów powinni sprawdzićradio.fem.rxgainiradio.rxgain. Companion nie ma jeszcze możliwości ich konfiguracji, więc używa wartości domyślnych (#3203). - Nowe komendy:
get|set radio.fem.rxgainiradio.fem.txgain(ta druga tylko dla Station G3, #3137). - Logowanie bezpośrednie: odpowiedź na login nie jest już wysyłana jako flood przy logowaniu bezpośrednim, a poprawiono logowanie przez flood bez zakresu (#3106), co ogranicza zbędny ruch.
- Wzmocnienie odbioru:
rx boosted gainnie wraca do wartości z kompilacji po resecie AGC (#3158). - Heltec T096: błąd nadawania wynikał z odczytu poza zakresem tablicy pinów:
PIN_SPI1_MISOmiał wartość -1 i wyłączał pin sterujący nadawaniem w module FEM (#3188). Podobne nieużywane piny poprawiono w innych płytkach nRF52. - Pozostałe: napięcie TCXO 3,0 V w T-Echo Lite i T-Echo Card, generator liczb losowych na nRF łączący entropię z radia i CC310 (#3206), lepsza obsługa PREAMBLE_DETECTED w LR2021, poprawki wyświetlacza T-Beam Supreme S3 oraz role radia KISS.
Ściągawka: komendy z wydań 1.15–1.17.1
| Komenda | Od wersji | Co robi |
|---|---|---|
get|set dutycycle |
1.15.0 | limit czasu nadawania w % (1–100), domyślnie 50; w UE ustaw 10 lub mniej |
region default |
1.15.0 | domyślny zakres pakietów pochodzących z węzła |
region def |
1.16.0 | skrócony zapis hierarchii regionów w jednej linii |
set flood.max.advert |
1.16.0 | limit przeskoków adverta, domyślnie 8 |
set flood.max.unscoped |
1.16.0 | limit przeskoków pakietów bez zakresu, domyślnie 64 |
set cad on|off |
1.17.0 | sprzętowy CAD, domyślnie wyłączony |
get pwrmgt.bootreason |
1.17.0 | przyczyna restartu i wyłączenia (ESP) |
get|set radio.fem.rxgain |
1.17.0, poprawka w 1.17.1 | wzmocnienie odbioru w module FEM na wybranych płytkach |
get|set radio.fem.txgain |
1.17.1 | wzmocnienie nadawania w module FEM, tylko Station G3 |
get radio.rxgain |
domyślnie włączone od 1.15.0 | wzmocnienie odbioru układu radiowego (SX12xx, LR1110) |
Co sprawdzić po aktualizacji
- Zaktualizuj repeatery i room servery jako pierwsze, bo od nich zależy rozchodzenie się pakietów i, według autorów, obsługa rozszerzonych ACK.
- Ustaw limit czasu nadawania zgodny z przepisami (
set dutycycle 10w UE) i sprawdź, czy moc wypromieniowana przez cały tor nie przekracza 500 mW ERP. - Sprawdź
get radio.rxgainoraz, na płytkach z modułem FEM,get radio.fem.rxgain. - Zajrzyj do
get flood.max.adverti rozważflood.max.unscopedtam, gdzie sąsiednie sieci generują dużo ruchu bez zakresu. - Ustaw domyślny zakres (
region default) w repeaterze, a w aplikacji companiona pole domyślnego zakresu w ustawieniach eksperymentalnych. - Nie włączaj sprzętowego CAD, jeśli nie masz konkretnego powodu. Nowe wykrywanie preambuły działa bez niego.
Firmware pobierzesz i wgrasz przez flasher.meshcore.io. Węzły na nRF obsługują też aktualizację OTA (bez kabla), a przed dłuższymi zmianami warto zajrzeć do pełnych not wydań:
