Co to jest KISS Modem
Blog MeshCore informuje, że od wersji 1.16.0 flasher oferuje rolę KISS Radio Modem dla większości płytek. Oprogramowanie i radio pozostają takie same, ale zmienia się sposób komunikacji z urządzeniem. Zamiast aplikacji użytkownik otwiera port szeregowy i posługuje się protokołem KISS — starym i prostym standardem, który modemy pakietowe amatorskie (TNC) wykorzystują od dziesięcioleci.
Radio pozostaje na płytce, ale cała logika decydująca o tym, co wysłać i co zrobić z otrzymanymi danymi, działa na komputerze po drugiej stronie kabla. Rezultatem jest urządzenie bliższe dongle'owi LoRa dla MeshCore niż samodzielny węzeł sieci.
Dla kogo jest przeznaczony
Większość użytkowników nie potrzebuje KISS Modem. Osoby chcące wysyłać wiadomości ze smartfona powinny zacząć od oprogramowania towarzyszącego i aplikacji.
KISS Modem jest dla osób budujących bramy lub usługi na zwykłym komputerze. Przykładem jest OpenHop (dawniej pyMC), który może używać KISS Modem jako swojego radia. Nie musi to być jednak komputer w tradycyjnym sensie — blog opisuje Commodore 64 komunikujący się przez sieć mesh za pośrednictwem KISS Modem na porcie użytkownika z prędkością 600 baudów, czyli tyle, ile mogą obsługiwać standardowe procedury szeregowe KERNAL.
Urządzenie przydaje się też osobom chcącym eksperymentować z pakietami MeshCore z laptopa w dowolnym języku programowania bez konieczności flashowania niestandardowego oprogramowania dla każdego pomysłu.
Jak działa protokół KISS
KISS to skrót od „Keep It Simple, Stupid”. Od lat 80. amatorskie radio pakietowe używa go do komunikacji między komputerem a TNC. MeshCore nie wymyślił tego protokołu — zapożyczył go, ponieważ jest prosty i istnieją dla niego biblioteki w każdym języku programowania.
Protokół działa jak koperta: KISS to ramka, a pakiet MeshCore to list w środku. Struktura składa się z bajtu C0 na każdym końcu, bajtu typu i pakietu pomiędzy nimi. Dlatego każdy klient KISS — taki jak Direwolf czy APRSdroid — może sterować modemem, wysyłając surowe ramki przez radio. Jednak nie trafiają one do sieci mesh, ponieważ klienci mogą otworzyć kopertę, ale zawartość dla nich nic nie znaczy, a sieć mesh nie zrozumie tego, co wysyłają.
Na czystym KISS oprogramowanie dodaje funkcje MeshCore (ustawienia radia, raporty sygnału, bateria, kryptografia) poprzez standardowe polecenie KISS, które zwykli klienci ignorują.
Co robi płytka
Płytka wysyła i odbiera surowe pakiety MeshCore przez LoRa. Otrzymane pakiety trafiają na łącze szeregowe dokładnie takie, jakie przyszły z powietrza, każdy z dołączonym raportem sygnału (RSSI i SNR), a oprogramowanie hosta decyduje, co z nimi zrobić.
Host konfiguruje radio: częstotliwość, szerokość pasma, współczynnik rozprzestrzeniania, szybkość kodowania i moc transmisji. Można też zapytać płytkę o napięcie baterii, poziom szumu, liczniki pakietów i czujniki, które posiada. Płytka potrafi również oszacować, jak długo pakiet byłby transmitowany przy obecnych ustawieniach.
Żadne ustawienia radia nie przetrwają ponownego uruchomienia. Poza parą kluczy płytki nic się nie zapisuje, więc oprogramowanie konfiguruje radio za każdym razem, gdy się łączy. Płytka nasłuchuje przed transmisją, aby nie przerwać innego ruchu, i obsługuje jeden pakiet naraz — informuje, kiedy pakiet został wysłany i odmawia drugiego, dopóki pierwszy nie zostanie wysłany.
Płytka ma własną parę kluczy, wygenerowaną przy pierwszym uruchomieniu i zapisaną w pamięci flash. Klucza prywatnego nie można odczytać, więc jeśli chce się uzyskać tożsamość płytki w sieci, trzeba poprosić płytkę o podpisanie i przeprowadzenie wymiany kluczy. Może też szyfrować, deszyfrować i weryfikować za pomocą kluczy, które jej się przekaże. Można też pominąć całą kryptografię — płytka wysyła dowolne bajty i ich nie sprawdza, więc host, który przechowuje własną parę kluczy, buduje prawidłowe pakiety bez dotykania kryptografii płytki. OpenHop robi to w ten sposób. Commodore 64 idzie w całkowicie innym kierunku — nie ma mocy obliczeniowej do AES, więc przekazuje każdą wiadomość modemowi do szyfrowania lub deszyfrowania.
Płytka nie obsługuje routingu, powtarzania, czatu ani serwera pokojów — wszystko to działa po stronie hosta.
Instalacja i pierwsze kroki
Flashowanie przebiega tak samo jak dla każdej innej roli. Użytkownik wchodzi na flasher.meshcore.io, wybiera swoją płytkę, wybiera rolę KISS Radio Modem i flashuje. Następnie otwiera port szeregowy płytki z prędkością 115200 baudów, 8N1, z oprogramowania obsługującego MeshCore.
Na prawie każdej płytce port szeregowy to ten USB. Istnieje opcja czasu kompilacji (KISS_UART_RX i KISS_UART_TX) do przeniesienia go na gołe piny UART, jeśli chce się podłączyć płytkę bezpośrednio do nagłówka Raspberry Pi, ale wymaga to samodzielnego zbudowania oprogramowania.
Jeśli nie chce się pisać strony szeregowej samemu, OpenHop już ją ma. Jeśli chce się zrobić coś własnego, dokumentacja protokołu KISS Modem obejmuje stronę szeregową, a strona formatu pakietu obejmuje to, co znajduje się wewnątrz ramek.
