W części 1 oglądaliśmy pamięć Heltec V3 jak mieszkanie z pokojami. Czas na remont. Poniżej cały proces na companionie, czyli węźle, z którym łączy się aplikacja: kopia tożsamości, wymazanie pamięci, wgranie firmware od zera i przywrócenie wszystkiego z pliku. Zrzuty ekranu pochodzą z aplikacji MeshCore 1.50.0 w wersji angielskiej, połączonej przez USB z Heltec V3, oraz z flashera na stronie meshcore.io.

Co znika przy Erase, a co da się uratować

Opcja Erase device we flasherze czyści całą pamięć flash: partycję spiffs, w której leżą tożsamość i ustawienia węzła, a także partycję nvs z zapamiętanymi parowaniami Bluetooth. Tożsamość to para kluczy, publiczny i prywatny, po których inni rozpoznają twój węzeł. Z pliku kopii odzyskasz ją, ale tylko wtedy, gdy zrobisz go przed wymazaniem. Eksport działa, gdy aplikacja potrafi połączyć się z urządzeniem, więc kopię warto robić z wyprzedzeniem, nie dopiero po awarii.

Krok 1: zrób kopię konfiguracji

  1. Połącz companiona z aplikacją i kliknij ikonę koła zębatego (Settings) w prawym górnym rogu.
  2. W sekcji Extra Tools wybierz Export Config.
  3. Zaznacz, co ma trafić do kopii, i zatwierdź ptaszkiem w prawym górnym rogu.
  4. Wskaż miejsce zapisu. Aplikacja podpowiada nazwę pliku: nazwa węzła, słowo meshcore_config, data i godzina.

Lista opcji wygląda tak:

Opcja Co zapisuje
Name nazwę węzła
Private Identity Key klucz prywatny i publiczny, czyli tożsamość
Radio Settings częstotliwość, szerokość pasma, spreading factor, coding rate i moc nadawania
Position Settings współrzędne
Other Settings ręczne dodawanie kontaktów i udostępnianie pozycji w adwertach (ogłoszeniach węzła)
Auto Add Settings reguły automatycznego dodawania kontaktów
Channels kanały
Contacts kontakty
Regions regiony
Ekran Export Config w aplikacji MeshCore: dziewięć grup ustawień, od nazwy i klucza prywatnego po regiony, wszystkie zaznaczone
Ekran Export Config: zaznaczone grupy ustawień trafią do pliku kopii.daniel5120🔫

Zaznacz przynajmniej Private Identity Key, bo bez niego tożsamości nie zachowasz. Warto dodać Radio Settings. Chcesz zachować kontakty i kanały? Zaznacz je też. Najwygodniej kliknąć Select All.

Sprawdź plik

Kopia to zwykły plik tekstowy w formacie JSON, więc otworzysz go w Notatniku.

Plik kopii JSON w edytorze tekstu: pola name, public_key i private_key, a pod nimi ustawienia radia, pozycji i kanały
Plik kopii otwarty w edytorze tekstu. Na zrzucie klucze zastąpiono opisem.daniel5120🔫

Na początku zobaczysz trzy pola: name, public_key i private_key, czyli nazwę węzła i jego tożsamość. Dalej idą ustawienia radia i pozycji, pozostałe ustawienia, reguły automatycznego dodawania kontaktów i kanały.

Ważne: w pliku siedzi klucz prywatny, czyli hasło do twojej tożsamości. Trzymaj go w bezpiecznym miejscu, nie wysyłaj do publicznych grup i nie pokazuj na zrzutach ekranu. Klucz publiczny możesz pokazywać. W pliku są też klucze kanałów (pole secret). Klucz kanału Public jest powszechnie znany, ale klucze kanałów prywatnych są tajne, więc ta sama ostrożność dotyczy całego pliku.

Krok 2: wgraj firmware z opcją Erase device

  1. Otwórz stronę meshcore.io w Chrome albo Edge (flasher potrzebuje obsługi portu szeregowego w przeglądarce, której nie ma Firefox) i wybierz z menu FLASHER.
  2. Wpisz w filtrze nazwę płytki i wybierz ją, w tym przykładzie Heltec v3.
  3. Wybierz rolę. Tu jest to Companion. Do przygotowania zrzutów posłużył wariant Companion USB, czyli radio łączące się z aplikacją tylko kablem. Do połączenia z telefonem potrzebny jest wariant z Bluetooth.
  4. Wybierz wersję firmware (na zrzucie v1.18.0), zaznacz Erase device i kliknij Flash!
Flasher MeshCore: Heltec v3, Companion USB, wersja v1.18.0, zaznaczone pole Erase device i przycisk Flash!
Flasher na stronie meshcore.io z zaznaczoną opcją Erase device.daniel5120🔫
  1. Przeglądarka zapyta o dostęp do portu szeregowego. Wskaż port, do którego podłączony jest Heltec (w tym przykładzie „CP2102 USB to UART Bridge Controller”, port COM6), i kliknij Połącz.
  2. Poczekaj na komunikat Flashing complete! Log kończy się liniami w rodzaju „Wrote 719312 bytes … at 0x0”, „Leaving…” i „Hard resetting via RTS pin…”. Na zrzucie samo wgrywanie trwało niecałe 40 sekund.
Flasher MeshCore po wgraniu: komunikat Flashing complete! i log kończący się zapisem 719312 bajtów od adresu 0x0
Koniec wgrywania: obraz firmware zapisany od adresu 0x0.daniel5120🔫

Adres 0x0 zgadza się z opisem z części 1: pełny obraz firmware (plik merged) zapisuje się od samego początku pamięci. Nie zapomnij o ptaszku przy Erase device. Bez niego flasher wgra nowy firmware, ale stare dane w spiffs zostaną na swoim miejscu, razem z ewentualnym uszkodzeniem.

Nie odłączaj zasilania po wgraniu. Pierwszy start po wymazaniu trwa dłużej, bo urządzenie formatuje system plików. W dyskusji pod poprawką #3314 Liam Cottle, autor aplikacji MeshCore, podaje do półtorej minuty na Heltec V4, który ma ponad dwa razy większą partycję spiffs niż V3. Inny uczestnik tej dyskusji pisze o kilku minutach na Heltec V3 i V4. Daj płytce czas, zanim uznasz, że coś poszło nie tak.

Wybierz też dokładnie swoją płytkę. Firmware dla innego modelu może skończyć restartami w pętli, niedziałającym radiem albo innymi usterkami.

Krok 3: przywróć tożsamość z kopii

  1. Połącz się z urządzeniem. Aplikacja powita cię kreatorem Device Setup. Kliknij Skip Setup, bo nazwę, klucze i radio wczytasz z pliku.
  2. Wejdź w ustawienia (koło zębate), znajdź Import Config i kliknij Select File.
  3. Wskaż na dysku plik JSON z kopią.
  4. Zaznacz elementy do wczytania albo kliknij Select All. Aplikacja ostrzega, że import klucza prywatnego nadpisze bieżącą tożsamość. Tak ma być: nowy firmware ma dostać starą tożsamość.
  5. Zatwierdź ptaszkiem. Na dole pojawi się zielony komunikat Success z dopiskiem Config Imported!
Ustawienia aplikacji MeshCore z kluczem publicznym węzła i zielonym komunikatem Success: Config Imported!
Po imporcie aplikacja pokazuje klucz publiczny z pliku kopii.daniel5120🔫

Sprawdź, czy ustawienia zgadzają się z tym, co zapisałeś. W ustawieniach, w polu Public Key, klucz publiczny powinien być identyczny jak w pliku kopii. Jeśli tak, węzeł ma z powrotem swoją tożsamość.

Po przywróceniu: lista kontrolna

  • Radio. Zajrzyj w ustawienia radia i porównaj je z kopią.
  • Default Path Hash Size. Tego ustawienia nie ma w pliku kopii, więc import go nie przywróci, a po wymazaniu companion wraca do wartości domyślnej: 1 bajt (ustawienie historyczne). Chodzi o długość skrótu, którym oznaczane są repeatery na trasie pakietu. Przy 1 bajcie są tylko 254 identyfikatory, więc w większej sieci dwa repeatery łatwo dostają ten sam skrót. Jeśli przed wymazaniem używałeś 2 albo 3 bajtów, ustaw je ponownie. Repeatery z firmware starszym niż 1.14 odrzucają jednak pakiety z dłuższym skrótem, dlatego FAQ MeshCore radzi zostać przy 1 bajcie, dopóki większość repeaterów w okolicy nie ma wersji 1.14 lub nowszej.
  • Kontakty i kanały. Wróciły tylko wtedy, gdy zaznaczyłeś je przy eksporcie.
  • Bluetooth. Przy wariancie z Bluetooth usuń stare parowanie w ustawieniach Bluetooth telefonu, zanim połączysz się ponownie. Wymazanie skasowało je po stronie płytki, a FAQ MeshCore zaleca ten krok po czyszczeniu urządzenia.

A co z repeaterami?

Repeater trzyma listę dostępu (ACL), czyli klucze publiczne urządzeń z przypisanymi uprawnieniami. Każdy węzeł, który zaloguje się hasłem administratora, trafia na tę listę z uprawnieniami administratora. Przywrócona tożsamość to ten sam klucz publiczny, więc repeater nadal widzi w tobie to samo urządzenie.

Gdy wymazujesz sam repeater, kopię robi się inaczej. Klucz prywatny repeatera wyświetli polecenie get prv.key w konsoli przez USB, a po wgraniu firmware przywrócisz go poleceniem set prv.key z tym kluczem i ponownym uruchomieniem (FAQ MeshCore, punkt 3.5). Pozostałe ustawienia repeatera, w tym listę ACL, trzeba wtedy wpisać od nowa.

Na co uważać

  • Przy eksporcie zaznacz tożsamość (Private Identity Key). Kontakty i kanały zapisują się tylko wtedy, gdy zaznaczysz je osobno.
  • Kopię rób regularnie: tożsamość, kontakty i kanały.
  • Pamiętaj o Erase device.
  • Płytki z procesorem nRF52 (np. RAK4631, Heltec T114) wgrywa się inaczej niż Heltec V3: urządzenie trzeba najpierw przełączyć w tryb DFU, a pamięć czyści osobny przycisk Erase Flash. Ta procedura wykracza poza ten poradnik, więc przed wgraniem firmware sprawdź instrukcję swojego modelu.

Procedurę wykonano na Heltec V3 z firmware 1.18.0 i aplikacją MeshCore 1.50.0. Informacje o liście ACL, skrótach ścieżek i pierwszym starcie po wymazaniu pochodzą z dokumentacji CLI i FAQ MeshCore, wpisu o diagnostyce ścieżek na blogu projektu i dyskusji pod poprawką #3314.