Alternatywny firmware: Monster i Berndt
Z jakim firmware ATS Mini działa ta aplikacja, dlaczego czasem prosi o potwierdzenie firmware’u i co zmienia się na ekranie po wgraniu forka Monster albo firmware’u H. J. Berndta.
Większość użytkowników korzysta z oficjalnego firmware’u i nigdy nie potrzebuje tej strony. Jest dla pozostałych: aplikacja rozpoznaje też forka Monster i osobny firmware napisany przez H. J. Berndta (hjberndt.de). Te trzy na tyle różnią się sposobem rozmowy przez kabel, że aplikacja zmienia to, co ci pokazuje — a w jednym przypadku najpierw pyta o zgodę. Oto co obsługuje, o co pyta i co znika z ekranu.
Trzy firmware
| Oficjalny | Fork Monster | Berndt | |
|---|---|---|---|
| Czym jest | Firmware projektu, esp32-si4732/ats-mini | Fork oficjalnego, dokładający funkcje na jego bazie | Osobny projekt, nie fork — w ogóle nie używa protokołu oficjalnego firmware’u |
| Rozpoznawany samodzielnie | Tak, po cichu | Tak, po cichu | Nie — aplikacja zawsze najpierw pyta |
| Odczyty statusu | Pełne | Zadeklarowane jako pełne, z kilkoma dodatkowymi polami w linii statusu; nigdy nie widziane na sprawnym radiu | Brak. Ten firmware nie wysyła ramki statusu |
| Elementy sterowania w aplikacji | Wszystkie | Wszystkie plus dwa szybsze polecenia, które ma tylko ten fork | Cztery i nic więcej |
| Sprawdzony na prawdziwym radiu | Tak, dwie wersje | Nie — patrz niżej | Częściowo |
Czy muszę powiedzieć aplikacji, jaki mam firmware?
Zwykle nie. Oficjalny firmware i fork Monster same się przedstawiają w danych statusu, które radio nadaje, więc aplikacja włącza właściwy profil w chwili, gdy pierwsza ramka da się odczytać: bez banera, bez pytania, bez ustawiania czegokolwiek. Potwierdzono to tutaj na oficjalnym firmware 2.38 i 2.33.
Panel połączenia wyraźnie rozdziela domysł od ustalenia. Nazywa firmware dopiero wtedy, gdy tożsamość jest naprawdę ustalona; wcześniej pisze Firmware jeszcze nierozpoznany, bo dopóki wykrywanie się nie skończy, aktywny profil jest ustawieniem domyślnym, a nie wnioskiem.
Wyjątkiem jest firmware Berndta. Aplikacja nigdy nie przełącza się na niego sama — każda droga do tego profilu prowadzi przez potwierdzenie, które klikasz, albo przez to, które już wcześniej dałeś dla tego samego radia.
Dlaczego aplikacja prosi o potwierdzenie firmware’u i czy można się zgodzić?
Jeśli odpowiedzi radia wyglądają na Berndta, pojawia się baner To wygląda na firmware H.J. Berndta z przyciskiem Przełącz na firmware Berndta. W praktyce radio, które tu sprawdzano, pokazało zamiast tego baner Brak odpowiedzi z radia — radio, które tu sprawdzano, nie odpowiedziało nic na sondę aplikacji — więc drogą, którą pójdzie większość posiadaczy, będzie przycisk To jednak firmware Berndta na tamtym banerze. Aplikacja pyta, zamiast przełączyć się sama, bo ten firmware używa kilku tych samych znaków co oficjalny, a co one tam robią, w większości nie zostało ustalone. Jeden z nich udało się przeczytać w kodzie jednej z wersji Berndta od początku do końca i jest to ten najbardziej niepokojący: znak, którym aplikacja wysyła w prawo, wpisuje surowe kroki enkodera obrotowego. Błędny domysł nie skończyłby się przy tym głośnym błędem — ten firmware nie wysyła żadnego potwierdzenia, a na nierozpoznane dane nie odpowiada w ogóle, więc nic by o tym nie powiedziało.
Zgodzić się więc można bez obaw: potwierdzenie sprawia, że aplikacja staje się ostrożniejsza, a nie odważniejsza. Na profilu Berndta wysyła cztery polecenia i nic poza nimi, pojedynczo, i odmawia wszystkiego, co wymagałoby ich serii. Bardziej ryzykowny jest ten stan, w którym aplikacja wciąż uważa, że rozmawia z oficjalnym firmware.
Pytanie pada raz na radio, a nie raz na sesję czy kartę: odpowiedź zostaje zapamiętana dla tego konkretnego urządzenia. Potwierdziłeś przez pomyłkę? To nie ten firmware? w panelu połączenia czyści zapisany wybór, a przy następnym połączeniu wykrywanie zaczyna się od nowa.
Kiedy aplikacja nie potrafi rozpoznać firmware’u
Brak odpowiedzi z radia znaczy, że nie przyszło nic. Zwykle powodem jest wyłączone zdalne sterowanie w oficjalnym firmware, więc baner kieruje cię do Settings → USB Port → Ad hoc w odbiorniku. Aplikacja świadomie nie czyta ciszy jako egzotycznego firmware’u: powiedzieć posiadaczowi fabrycznego oprogramowania, że ma niemiecki firmware niszowego autora, to gorsza z dwóch pomyłek.
Nierozpoznane odpowiedzi radia znaczą, że coś odpowiedziało, ale nic nie pasuje. Żaden firmware nie zostaje wtedy wybrany ani przyjęty z góry. Baner pokazuje dokładnie te linie, które przysłało radio, żeby ktoś, kto rozpoznaje własny firmware, mógł z tym coś zrobić. W tym czasie wszystko, co wysyłasz, idzie pojedynczo, co około pięć sekund — to najwolniejsze tempo, jakiego wymaga którykolwiek z obsługiwanych firmware — a aplikacja nie wysyła nic z własnej inicjatywy.
Oba te banery mają dyskretny przycisk To jednak firmware Berndta właśnie dla takiego czytelnika. A jeśli radio potwierdzone wcześniej jako oficjalne zacznie odpowiadać tak, jak odpowiada Berndt, aplikacja zapyta ponownie, zamiast przełączyć się po cichu — USB identyfikuje rewizję płytki, a nie konkretny egzemplarz, więc bez tego pytania jedna odpowiedź przeszłaby na następne radio tej samej rewizji.
Dlaczego po wgraniu innego firmware’u zniknęła część elementów sterowania?
Bo w firmware Berndta nie są obsługiwane, a aplikacja je usuwa, zamiast wyszarzać. Na radiu potwierdzonym jako Berndt nie ma na stronie: panelu pamięci, edytora motywu, kalibracji, uśpienia, skanera widma ani własnego panelu wyszukiwania stacji. Sprawdzono to na prawdziwym radiu.
Usunięcie jest wyborem celowym. Wyszarzony przycisk nadal przekazywałby swoje przypisanie polecenia do obsługi klawiatury i do każdego innego miejsca w aplikacji, więc naciśnięcie klawisza mogłoby wysłać znak, którego sam przycisk odmawia. Usunięcie elementu w całości zamyka jednym ruchem przycisk, skrót klawiaturowy i ścieżkę automatyzacji — dlatego lista skrótów w panelu pomocy też się skraca.
Pole częstotliwości w panelu strojenia znika z tego samego powodu: nie ustalono polecenia, które wysyła ten firmware na konkretną częstotliwość, więc aplikacja nie ma czego wysłać. Odczyty, których firmware nie podaje, pokazują —, a nie 0, żeby pustego pola nie dało się pomylić z pomiarem zerowym.
Dlaczego ten firmware tak wolno przyjmuje kliknięcia?
To firmware, nie aplikacja. Konsola Berndta przyjmuje mniej więcej jedno polecenie na pięć sekund: jego własny kod bierze polecenie tylko wtedy, gdy połączenie milczało tyle czasu, a drugie wysłane w tym okienku zostaje pochłonięte bez odpowiedzi i bez błędu. Dlatego aplikacja rozsuwa każdy zapis, żeby się w to wpisać.
Na ekranie masz o tym notkę i odliczanie na żywo — Następne polecenie za 4 s…. Przyciski zostają klikalne, bo kliknięcie trafia do kolejki, a nie w pustkę. Czekać mogą najwyżej dwa polecenia; trzecie zostaje odrzucone komunikatem, zamiast dopisać się do kolejki. A zmiana, która wymagałaby serii — podniesienie głośności o kilkadziesiąt kroków albo przejechanie widma — jest odrzucana od razu, z podaniem kosztu, bo przy pięciu sekundach na krok trwałaby minutami i nie dałoby się jej odróżnić od zawieszenia.
Pięć sekund odczytano z kodu samego firmware’u, a aplikacja zostawia sobie na to niewielki zapas. To nie pomiar stoperem na radiu i jest to pierwsza liczba, która się zmieni, jeśli testy na sprzęcie pokażą, że da się ją skrócić.
Wgrałem forka Monster i radio zachowuje się dziwnie
Prawie na pewno chodzi o wariant pamięci. ATS Mini bywa z dwoma rodzajami kości PSRAM — quad (QSPI) i octal (OSPI) — a Monster publikuje tylko wersję octal, więc na płytkę quad nie ma opublikowanego obrazu. Nie kończy się to czystą odmową. Na jedynym radiu, na którym ten projekt widział ten firmware w działaniu, nie udało się zainicjować pamięci PSRAM: radio wypisało na porcie szeregowym błąd, nie przysłało ani jednej ramki statusu i nie dało aplikacji niczego do sterowania. Najbardziej prawdopodobne wyjaśnienie to płytka quad z obrazem octal, bo tylko taki jest publikowany — ale rodzaj pamięci tamtej konkretnej płytki nigdy nie został ustalony. Tak czy inaczej da się to zobaczyć: ta linia błędu pojawia się w terminalu aplikacji jako zwykły odebrany tekst.
Rozwiązania nie ma w tej aplikacji. Żeby uruchomić Monstera na płytce z pamięcią quad, trzeba zbudować firmware ze źródeł z włączonym ustawieniem quad.
I właśnie dlatego ta strona nie obieca ci, że Monster działa. Aplikacja ma pełny profil Monstera — szerszą linię statusu, dodatkowe polecenia przywołania komórki pamięci i ustawienia parametru, 99 zapisywalnych komórek — ale napisano go z dokumentacji forka, a opublikowana wersja binarna nie uruchomiła się na dostępnym tutaj radiu. Nic z tego nie zostało sprawdzone na działającym radiu z Monsterem. Jedyne dane od Monstera, jakie ten projekt kiedykolwiek przechwycił, to lista opcji — i przyszła z tego radia, w którym kość pamięci już nie działała.
Czy nadal mogę korzystać z pamięci, edytora motywu i skanera widma?
| Oficjalny | Fork Monster | Berndt | |
|---|---|---|---|
| Komórki pamięci | 99, odczyt i zapis — sprawdzone w obie strony na radiu | Zadeklarowane te same 99 i zapisywalne; niesprawdzone | Nie. Aplikacja może poprosić radio o wypisanie pamięci, ale nie potrafi zapisać komórki |
| Edytor motywu | Tak | Zadeklarowany; niesprawdzony | Niedostępny |
| Skaner widma | Tak | Zadeklarowany; niesprawdzony | Niedostępny — nawet przejechanie 50 punktów szłoby ponad cztery minuty przy jednym poleceniu na pięć sekund |
| Zrzut ekranu | Tak — na tutejszym radiu około czterech sekund przez USB | Zadeklarowany; niesprawdzony | Tak — przychodzi jako surowy obraz, na tutejszym radiu w około sześć sekund |
| Wyszukiwanie stacji, strojenie z EiBi | Tak | Zadeklarowane; niesprawdzone | Niedostępne: oba wymagają polecenia strojenia, którego temu firmware nie udało się wykazać |
| Dziennik odbiorów | Tak | Zadeklarowany; niesprawdzony | Jest, ale wpis zrobiony na tym firmware nie niesie częstotliwości, trybu ani pasma — tylko te fragmenty danych o sygnale, które radio akurat wysłało: dziennik wypełnia się z ramki statusu, a ten firmware jej nie wysyła |
Wiersz o pamięci Berndta zasługuje na szczegóły, bo o to posiadacze pytają najpierw. Polecenie wypisujące pamięć i układ pojedynczego wiersza odtworzono z kodu samego firmware’u, instrukcja po instrukcji, i aplikacja potrafi na tej podstawie zdekodować wiersz. Ale żadne radio z Berndtem nigdy takiego wiersza nie wypisało. Każda próba kończyła się tutaj nagłówkiem wypisu i niczym więcej — również po zapisaniu dwóch stacji z własnego menu radia, czego nadal nie udało się wyjaśnić. Zapis jest zablokowany dodatkowo: tryb wsadowego wysyłania, który oferuje ten firmware, wymaga czasów, w które pięciosekundowe tempo aplikacji się nie wpisuje, a przerwane w połowie wysyłanie zostawiłoby pamięć radia częściowo nadpisaną. Ścieżki zapisu więc nie ma i nie będzie, dopóki nie zostanie to rozstrzygnięte na radiu, którego zawartości nie żal.
Berndt: uczciwa reszta listy
- Cztery elementy sterowania i żaden z nich nie używa znaku, którego użyłby oficjalny firmware: zrzut ekranu, wypis pamięci, wypis listy stacji i przełącznik wysyłania danych. Wszystkie cztery odczytano z kodu samego firmware’u; dwa z nich odpowiedziały też na prawdziwym radiu.
- Oba wypisy przychodzą jako surowy tekst w panelu Terminal, który jest domyślnie zwinięty — rozwiń go, żeby przeczytać odpowiedź.
- Przełącznik wysyłania danych to zawsze tylko przycisk, który naciskasz ty. Aplikacja nigdy nie wysyła go sama, bo to polecenie przestawia własny strumień danych radia, a błędny domysł uciszyłby radio.
- Zostaw prędkość połączenia na 115200. Firmware Berndta w ogóle nie ma ustawienia prędkości. Tutejsze radio odpowiedziało natychmiast przy 115200, a przy 9600 było i głuche, i nieme. Liczba 9600, która krąży, pochodzi z dokumentacji samego autora firmware’u, nie z radia. Niższe prędkości zostają na liście w aplikacji, bo płytka podłączona przez układ mostka USB-szeregowy, a nie przez USB samego procesora, może zachować się inaczej.
- Sterowanie po BLE na firmware Berndta jest niepotwierdzone. Parowanie, sesja i rozłączanie działają, a aplikacja trzyma odpowiedź dla BLE osobno od tej dla USB, żeby potwierdzenie nie przeciekło między połączeniami. Ale przez całą sesję BLE nie wrócił z radia ani jeden bajt, więc zdalnego sterowania po Bluetooth na tym firmware ta strona nie będzie obiecywać.
Na oficjalnym firmware różnice, które wynikają z numeru wersji, a nie z samego firmware’u — szybkie strojenie, Bluetooth, zakres pasma CB — opisują Wersje firmware. O samym połączeniu mówi Podłączanie ATS Mini, a o znaczeniu odczytów panel statusu.
Wgranie któregokolwiek z tych trzech do radia opisujemy osobno, bo zdobywa się je na trzy zupełnie różne sposoby: Wgrywanie firmware dla oficjalnych wydań i instalatora na tej stronie, Wgrywanie forka Monster dla projektu, który nie publikuje żadnych wydań, i Wgrywanie firmware H. J. Berndta dla tego, który przychodzi jako jeden obraz ze strony autora. Przed każdym z nich zrób kopię zapasową — Kopia zapasowa i odzyskiwanie firmware.
Polecane akcesoria
Najczęściej zadawane pytania
- Z jakim firmware działa ATS Mini Controller?
- Z trzema: z oficjalnym firmware esp32-si4732/ats-mini, z forkiem Monster i z osobnym firmware H. J. Berndta. Oficjalny firmware i fork Monster są rozpoznawane automatycznie z danych statusu, które nadaje radio. Firmware Berndta nigdy nie zostaje wybrany bez twojego potwierdzenia.
- Czy muszę powiedzieć aplikacji, jaki firmware ma moje ATS Mini?
- Nie. Aplikacja rozpoznaje to po tym, co przysyła radio. Jedynym wyjątkiem jest firmware Berndta, o który aplikacja pyta, zamiast przyjmować go sama — i pamięta twoją odpowiedź dla tego radia, więc pyta raz na radio, a nie raz na sesję.
- Czy potwierdzenie firmware Berndta jest bezpieczne?
- Tak. Potwierdzenie sprawia, że aplikacja staje się ostrożniejsza: na tym profilu wysyła tylko cztery polecenia, pojedynczo, i odmawia wszystkiego, co wymagałoby ich serii. Pyta najpierw, bo firmware Berndta używa części tych samych znaków co oficjalny, a co one tam robią, nie zostało ustalone — i bo ten firmware nigdy nie odpowiada, czy polecenie zostało przyjęte.
- Dlaczego po wgraniu innego firmware zniknęły elementy sterowania?
- Bo aplikacja usuwa elementy, których nie potrafi obsłużyć, zamiast je wyszarzać. Na firmware Berndta nie ma na stronie panelu pamięci, edytora motywu, kalibracji, uśpienia, skanera widma ani panelu wyszukiwania stacji, razem z ich skrótami klawiaturowymi. Własne przyciski radia nadal robią to wszystko.
- Dlaczego aplikacja czeka około pięciu sekund między poleceniami na firmware Berndta?
- Ten firmware przyjmuje mniej więcej jedno polecenie na pięć sekund i po cichu ignoruje wszystko wysłane w tym okienku, więc aplikacja rozsuwa swoje zapisy i pokazuje odliczanie. To nie usterka aplikacji ani połączenia.
- Czy fork Monster działa na każdym ATS Mini?
- Nie. Monster publikuje tylko wersję dla pamięci octal PSRAM, więc na płytkę z pamięcią quad nie ma opublikowanego obrazu, a rozwiązaniem jest tam zbudowanie firmware ze źródeł z włączoną pamięcią quad. Na jedynym radiu, na którym ten projekt widział ten firmware w działaniu, nie udało się zainicjować pamięci PSRAM: radio wypisało błąd przez port szeregowy i nie wysyłało danych statusu, więc zdalne sterowanie nie działało.
- Czy aplikacja może zapisać stację w komórce pamięci na firmware Berndta?
- Nie. Nie ma ścieżki zapisu. Aplikacja może poprosić radio o wypisanie pamięci i zna układ wiersza z kodu firmware’u, ale tryb wsadowego wysyłania, który oferuje ten firmware, wymaga czasów, w które tempo aplikacji się nie wpisuje, a przerwane wysyłanie nadpisałoby zapisane pamięci.
- Jakiej prędkości połączenia użyć dla firmware Berndta?
- 115200, czyli tej domyślnej w aplikacji. Ten firmware w ogóle nie ma ustawienia prędkości. Radio, które tu sprawdzano, odpowiadało przy 115200 i milczało przy 9600.