Felieton z cyklu „Wojna o SF”, część druga. Pierwsza, „Wojna o SF w MeshCore: misjonarze SF6, wierni SF8 i trochę fizyki”, wyjaśnia, czym jest SF i kto w Polsce i w Europie na czym nadaje. Wszystkie opublikowane części cyklu znajdziesz tutaj.
W pierwszej części pisałem o misjonarzach SF6 i o tym, że spór o spreading factor to w gruncie rzeczy spór o czas. W skrócie: niższy SF skraca pakiety, więc sieć mniej się korkuje, ale każdy stopień w dół kosztuje około 2,5 dB, czyli kawałek zasięgu. Zawsze wybieramy więc między prędkością a zasięgiem. Dziś w Polsce działają obok siebie dwie sieci, które się nie słyszą: krajowa na SF8 i MeshCore Południe na SF6, a za południową granicą Słowacy i Węgrzy nadają już z SF7.
Jeszcze raz podkreślę: nie namawiam do zmiany. Sam używam presetu SF8 i jest mi z nim dobrze. Jeśli jednak polska społeczność kiedyś uzna, że czas na szybszy preset, doświadczenia sąsiadów podpowiadają, jak to zrobić, żeby nie skończyło się to chaosem i kolejnymi podziałami.
Najpierw porządki, potem SF
Holendrzy, zanim zmienili SF, poprosili wszystkich operatorów o porządki: aktualizację firmware do co najmniej 1.15, wydłużenie odstępu między rozgłaszaniem obecności repeaterów (advertami) do co najmniej 50 godzin, wyłączenie botów i ustawienie regionów, które zatrzymują lokalne rozmowy na granicy obszaru. Najostrzejszy krok, czyli odrzucanie pakietów bez regionu, zaplanowali osobno: na 13 czerwca, miesiąc po zmianie presetu.
Aktualny firmware to zresztą podstawa, niezależnie od presetu. Od wersji 1.14 pakiety mogą nieść na ścieżce dłuższe identyfikatory repeaterów: dwu- albo trzybajtowe. Jednobajtowych jest tylko 256, więc w dużej sieci różne repeatery łatwo dostają ten sam i trudno je od siebie odróżnić. Dłuższy identyfikator znacznie zmniejsza to ryzyko. Jego długość wybiera nadawca: dla wiadomości ustawia się ją w aplikacji MeshCore, a polecenie path.hash.mode w repeaterze (0, 1 lub 2, czyli jeden, dwa albo trzy bajty) zmienia ją tylko w jego własnych advertach. Repeatery z firmware 1.13 i starszym po cichu odrzucają jednak pakiety z dłuższymi identyfikatorami, dlatego w aplikacji warto to włączyć dopiero wtedy, gdy zaktualizuje się większość sieci. W repeaterze można od razu: dokumentacja wręcz do tego zachęca, bo łatwiej wtedy policzyć zaktualizowane urządzenia. Dlaczego regularne aktualizacje tak się opłacają, opisuje tekst „MeshCore od 1.15 do 1.17.1: co się zmieniło i co warto włączyć po aktualizacji”.
MeshCore ma dziś więcej narzędzi do porządkowania ruchu: limit przeskoków (flood.max), wykrywanie pętli, a od wersji 1.17 przebudowany mechanizm „słuchaj, zanim nadasz”, który autor zmian nazwał być może najważniejszą poprawą wydajności dla wszystkich sieci. O regionach więcej w cyklu „Regiony w MeshCore”. Może się okazać, że po porządkach SF8 przestanie przeszkadzać.
Jest też krok, który nie dzieli sieci: zmiana CR8 na CR5. CR (coding rate) to zapas danych na korekcję błędów. Mniejszy zapas skraca krótki, 50-bajtowy pakiet z około 0,61 do 0,45 s, czyli mniej więcej o jedną czwartą, kosztem nieco słabszej korekcji, a urządzenia z CR8 dalej go słyszą. Polska strona z presetami wprost dopuszcza ten wariant.
Pomiary zamiast wrażeń
„U nas śmiga” to za mało. Test trzeba przeprowadzić na osobnym kanale, na tych samych parach łączy, przed zmianą i po niej, i spisać wyniki. Repeatery MeshCore mają do tego polecenie, które zmienia ustawienia radia tylko na podaną liczbę minut i nie zapisuje ich, więc po restarcie wracają stare:
tempradio <MHz>,<kHz>,<SF>,<CR>,<minuty>
Na przykład tempradio 869.525,62.5,7,5,60 przestawia repeater na godzinę na SF7 i CR5. Liczby zapisuje się z kropką, bo przecinki rozdzielają parametry. Kanał testowy trzeba ustalić wspólnie. W podpaśmie 869,4–869,65 MHz musi się zmieścić cała szerokość kanału. Przy 62,5 kHz to miejsce na zaledwie cztery kanały: jeden zajmuje sieć krajowa, drugi Czesi. Przy okazji przyda się spis sprzętu: np. kto ma repeater na starszej płytce z układem SX1276, ten przy SF6 na starcie wypada z gry.
Porozumienie, zanim wybije godzina W
Nowi użytkownicy zawsze zaczynają od portali, poradników i filmów. Jeśli meshcorepolska.org, lorameshcore.pl, meshgo.pl, grupy na Facebooku, kanały na YouTube i RadioMesh.pl będą podawać różne ustawienia, każdy nowicjusz stworzy własną sieć. Decyzja musi więc zapaść wspólnie, a wszystkie opiniotwórcze miejsca powinny ją ogłosić jednym głosem.
Do tego dochodzi technika. Presety w aplikacji MeshCore są pobierane z serwera, więc nowy preset „Poland” może się pojawić bez aktualizacji aplikacji. Dokumentacja projektu mówi, że region, który osiągnął porozumienie, zgłasza je twórcom aplikacji na Discordzie, a raz dodany preset raczej nie będzie zmieniany. Firmware po wgraniu nadal startuje jednak z EU/UK Narrow, więc każde nowe urządzenie po wyjęciu z pudełka trafi do sieci SF8, dopóki właściciel nie wybierze nowego presetu.
Jedna data, z dużym wyprzedzeniem
Węgrzy dali sobie tydzień, Holendrom od testu do zmiany minęły dwa miesiące. Polska to jednak duży kraj, a wiele repeaterów stoi na dachach i masztach, do których trudno dotrzeć. Dlatego myślę, że potrzebna byłaby jedna, ogólnopolska data, wyznaczona z wyprzedzeniem 3–6 miesięcy. To czas na kampanię informacyjną: posty w grupach, filmy, artykuły i ogłoszenia na kanałach w samej sieci. Słowacy proszą właścicieli repeaterów o wpisanie urządzeń do wspólnego arkusza, Holendrzy rozpisali zmianę na ponumerowane kroki z godziną: 9 maja 2026 r., 13:00, a potem tydzień na uspokojenie sieci. Spóźnialscy znajdą się zawsze, nawet przy najdłuższej zapowiedzi, więc plan musi to uwzględniać.
Dzień zmiany i siatka bezpieczeństwa
Najpierw przełącza się infrastruktura, najlepiej zdalnie, potem użytkownicy. Dobrym przykładem jest nowozelandzka sieć Meshtastic w regionie Wellington, która w sierpniu 2024 r. przeszła na szybszy preset. Najpierw był dwugodzinny test na kilku kluczowych wzgórzach, potem zapowiedziany dzień testowy w całym regionie, wreszcie zmiana na wszystkich kluczowych stanowiskach jednego dnia. Na starym presecie zostawiono kilka tymczasowych węzłów, które przez tydzień, a w dwóch miejscach przez trzy miesiące, kierowały maruderów do nowej sieci. Dobrze też z góry ustalić, kiedy zmianę uznajemy za nieudaną i jak z niej wracamy.
Mosty? Na razie nie
Repeatery MeshCore można połączyć w most, przewodem albo przez ESP-NOW, a jednym z opisanych zastosowań jest łączenie sieci o różnych ustawieniach radia. Kod mostów jest w głównym repozytorium od września 2025 r., ale oficjalne wydania firmware nie zawierają gotowych plików z tą funkcją, więc firmware z mostem trzeba skompilować samemu. Most między SF6 i SF8 brzmi kusząco, ale wolniejsza strona musiałaby przenosić ruch szybszej, a dwa radia na tej samej częstotliwości przeszkadzałyby sobie nawzajem. Na łatanie podziałów mostami jest moim zdaniem jeszcze za wcześnie.
Czy warto
Za szybszym SF stoją konkretne argumenty: krótsze pakiety, mniej kolizji, większa pojemność kanału i krótsze czekanie na potwierdzenie. To ma sens tam, gdzie repeaterów jest dużo, a sieć się korkuje, czyli w aglomeracjach takich jak Górnośląsko-Zagłębiowska Metropolia. Dane z holenderskiego testu wskazują raczej na SF7 niż na SF6, bo SF6 zaczęło odcinać słabsze łącza, a płytki z układem SX1276 w ogóle odpadają.
Ceną jest zasięg. Na wsi, w górach i na długich trasach między miastami każde 2,5 dB decyduje o tym, czy łącze działa. Tam, gdzie repeaterów jest mało, szybszy preset nie przyspieszy sieci, tylko może ją porwać na kawałki. Pomóc może dobre stanowisko: w Wellington po zmianie działało łącze o długości 254 km między dwoma wysoko położonymi węzłami. Do tego zmiana presetu leczy objawy. Jeśli sieć będzie rosła, a ruch nie zostanie uporządkowany, korki wrócą, tylko przy wyższej prędkości.
Najgorsza byłaby jednak partyzantka, w którą łatwo się wpakować, gdy każdy region idzie swoją drogą. Siła MeshCore polega na tym, że wiadomość może przejść z jednego regionu do drugiego bez internetu. Właśnie z myślą o awarii prądu czy sieci komórkowej wielu z nas stawia repeatery na akumulatorach i panelach słonecznych. Każdy region z własnym SF to jedna wyspa więcej i jedna ścieżka mniej. Zanim ktokolwiek przestawi swój repeater, trzeba się upewnić, że lekarstwo nie okaże się gorsze od choroby.
Moim zdaniem sam wybór między SF6, SF7 a SF8 jest mniej ważny, niż się wydaje misjonarzom. Ważniejsze, żebyśmy wybierali wspólnie i nadawali na jednym presecie. Następnym razem, gdy na kanale pojawi się misjonarz SF6, zamiast go automatycznie ekskomunikować, można go zaprosić na Wielki Sobór, byle ogólnopolski, a nie znowu regionalny.
Przy pisaniu korzystałem z dokumentacji MeshCore oraz ze stron polskich i zagranicznych społeczności MeshCore i Meshtastic.
Komiksowa adaptacja felietonu w formie rozmowy na YouTube (autor: Kocel💣): Część 2/2 — najpierw porozumienie, potem przełączanie.
