Not1MM to dziennik wyścigów dla systemu Linux i macOS opracowany przez Mike'a Bridaka, K6GTE. Program napisany jest w języku Python 3.11+, interfejs graficzny oparty jest na bibliotece Qt6, a dane przechowywane są w bazie danych SQLite. Według listy GitHub jest rozpowszechniany na licencji GPLv3 i obsługuje ponad 60 wyścigów. Rozwój jest bardzo aktywny, aktualna wersja w momencie pisania tego tekstu jest oznaczona jako 26.10.28.
Przeczytasz w artykule
Pochodzenie: osobisty projekt emeryta
K6GTE nie ukrywa, że program powstał przede wszystkim dla własnej rozrywki. Po ponad 35 latach pracy w telekomunikacji (GTE, Verizon, Frontier) przeszedł na emeryturę i szukał wolnego czasu. Jako casual zawodnik nie znalazł oprogramowania wyścigowego dla Linuksa, które by mu odpowiadało. Wspomina jednak Pingwin, który uważa za mocny i dojrzały, ale to nie był program dla niego.
Interfejs jest otwarcie inspirowany programem N1MM Logger+. Autor podkreśla jednak, że Not1MM nie jest N1MM i nie jest przeznaczony do współpracy z nim. Wysyła pakiety w formacie N1MM, ale tylko dla tablic wyników zbudowanych na przykład na Node-RED. Podstawową platformą jest Linux, a macOS, Windows i BSD nie są bezpośrednio obsługiwane przez autora.
„Niedokończony rejestrator zawodów nr 1 na świecie”. Zdaniem córki autora Coriny.
Wideo: Not1MM w wywiadzie z autorem
Odcinek 507 podcastu Linux w Ham Shack przedstawia zarówno motywację, jak i wewnętrzne działanie programu. Oto obszerny wywiad bezpośrednio z K6GTE. Nagranie zawiera tylko dźwięk, więc możesz go odsłuchać podczas instalacji.
Instalacja za pomocą uv
Najłatwiej jest zainstalować za pomocą jednego polecenia w terminalu: curl -LsSf uvx.sh/not1mm/install.sh | cii. Drugą opcją jest najpierw zainstalowanie menedżera pakietów uv z Astral i uruchomienie programu za pomocą polecenia uvx not1mm@latest. Stała instalacja lub aktualizacja zostanie zapewniona za pomocą narzędzia uv install not1mm@latest.
uv pobiera najnowszą wersję przy pierwszym uruchomieniu, tworzy wirtualne środowisko Python, dodaje niezbędne biblioteki i buforuje wszystko. Pierwsze uruchomienie trwa około minuty, pozostałe są szybkie, a program przy każdym uruchomieniu sprawdza dostępność aktualizacji.
Środowisko wirtualne ma praktyczną zaletę. W starszych dystrybucjach z Pythonem 3.10 nie ma potrzeby zmiany systemu Python, wystarczy uvx –python 3.14 not1mm@latest. Można także powrócić do starszej wersji, jeżeli ostatnia aktualizacja zawierała błąd, np. uvx –python 3.11 not1mm==23.5.19. Alternatywą jest flatpak z GitHub Releases lub instalacja przez pipx.
Przed instalacją za pomocą menedżera pakietów dystrybucyjnych należy dodać:
- Python 3.11+ i PyQt6,
- libportaudio2,
- w zależności od dystrybucji, także libxcb-cursor0, libxslt-devel i libxml2-devel.
Baza danych SQLite
Przy pierwszym uruchomieniu program tworzy bazę danych ham.db. Można go znaleźć w katalogu określonym przez zmienną XDG_DATA_HOME, w przeciwnym razie w ~/.local/share/not1mm. Konfiguracja znajduje się w ~/.config/not1mm.
Jedna baza danych zawiera ustawienia stacji i dowolną liczbę logów wyścigowych. Autor dopuszcza oba podejścia: jedną bazę danych na całe życie zawierającą setki wyścigów lub nową bazę danych dla każdego wyścigu. Nowa baza danych jest tworzona poprzez Plik > Nowa baza danych, istniejąca jest otwierana poprzez Plik > Otwórz bazę danych. Ponieważ jest to pojedynczy plik, utworzenie kopii zapasowej jest łatwe.
Ustawianie stacji, CTY i MASTER.SCP
Po pierwszym uruchomieniu lub utworzeniu nowej bazy danych otwiera się okno dialogowe Ustawienia stacji. Oprócz znaku wywoławczego i operatora zawiera lokalizator (4 do 6 znaków), strefę CQ i ITU, współrzędne geograficzne, moc, antenę i wysokość anteny oraz dane adresowe dla nagłówka pliku Cabrillo. Można je później zmienić w menu Plik > Ustawienia stacji.

Pred každými pretekmi sa oplatí aktualizovať súbory CTY a MASTER.SCP poprzez PLIK > Aktualizuj CTY i PLIK > Aktualizuj MASTER.SCP. Z cty.dat program określa kraj, odległość i Azimut k protistanici. Vyhľadávanie značiek podporuje QRZ.com (wymaga płatnej subskrypcji). SzynkaQTH. Z QRZ.com program może również znaleźć dokładniejszy lokalizator stacji licznikowych.
Kluczowanie CAT i CW
Program steruje transiwerem poprzez rigctld (domyślnie 127.0.0.1:4532) lub flrig (127.0.0.1:12345). Plik README wspomina także o obsłudze protokołu TCI. Stan połączenia jest pokazany kolorem małej ikony transceivera: zielony oznacza połączenie, czerwony oznacza brak połączenia.
Dostępne są trzy ścieżki dla CW:
- cwdaemon na porcie 6789, w wersjach dla portu szeregowego, równoległego lub dla układu K1EL,
- pywinkeyer na porcie 8000, autorski klient dla WinKeyer (na macOS SwiftKeyer),
- kluczowanie poprzez CAT przy użyciu rigctld, jeśli radio to obsługuje.
W ustawieniach określa się krok zmiany prędkości za pomocą klawiszy PgUp/PgDn (1 do 10 WPM), sposób wysłania raportu (5NN, 599 lub ENN) oraz wyrównanie numerów sekwencyjnych. Istnieją również cyfry skrócone A, N i T zamiast 1, 9 i 0. Uwaga na starsze wersje: Hamlib przed wersją 4.6.3 miał problemy z transmisją CW i ustawieniem prędkości.
Mapa klastrów i pasm DX

W zakładce Cluster ustawiany jest serwer AR Cluster, port i filtr spot. W trybie OPEN spoty pochodzą od spotterów z całego świata. W przypadku stacji europejskiej bardziej rozsądne jest ograniczenie ich za pomocą filtra, na przykład set/dx/filter spottercont=eu.
Okno Bandmap sortuje spoty i obrobione stacje według częstotliwości. Gdy CAT jest włączony, śledzi VFO, co jest oznaczone zielonym trójkątem, a niebieski pasek pokazuje szerokość filtra odbiorczego. Kliknięcie w miejsce spowoduje ponowne dostrojenie radia i wypełnienie tagu. Obrobione stacje są szare, ikona za znakiem wskazuje tryb, a znaczniki [P] i [S] plamki POTA i SOTA.
Starszy Python zgodnie z instrukcją nie musi nadrabiać zaległości w przepływie danych z klastra podczas ruchliwych wyścigów, a mapa przepustowości odbiega od rzeczywistości. Rozwiązaniem jest uruchomienie programu z nowszym Pythonem poprzez uv.
Nie1MM okien i narzędzi
Podczas wpisywania tagu okno Sprawdź częściowe oferuje dopasowania z trzech źródeł. Z MASTER.SCP wyświetla kandydatów z co najmniej trzema pasującymi znakami z początku znacznika, z własnego dziennika i z ostatnich pasujących miejsc o dowolnej długości. Kliknij, aby przenieść znacznik na pole.
Okna DXCC i Strefy pokazują obrobione jednostki i strefy CQ lub ITU według pasma. Po wprowadzeniu znaku mogą automatycznie przejść do odpowiedniej linii. Okno Szybkość pokazuje szybkość połączenia.
Okno rotatora jest wciąż w fazie rozwoju. Łączy się z rotctld pod adresem 127.0.0.1:4533 i wyświetla aktualny azymut anteny i namiar na określoną stację. Przycisk Przesuń obraca antenę w stronę celu, kliknij prawym przyciskiem myszy, aby przejść długą drogę. Dostępne są również Stop, Park i Strony Świata.
Makra i ESM
Makra na klawiszach F1 do F12 są edytowane poprzez Plik > Edytuj makra w systemowym edytorze tekstu. Każdy wyścig i każdy tryb (CW, SSB, RTTY) ma swój własny plik. Zmiany są odzwierciedlane przy przełączaniu pomiędzy Run i S&P. Dostępne są zmienne takie jak {MYCALL}, {HISCALL}, {SNT}, {EXCH}, {LOGIT} lub {SPOT}, znak # wstawia numer kolejny.
W przypadku SSB makra od {VOICE1} do {VOICE10} służą do pamięci głosu radiowego za pośrednictwem plików rigctld lub WAV, na przykład [cq] dla cq.wav. Załączone nagrania fonetyczne NATO mogą oznaczać zarówno markę, jak i raport. Autor zaleca jednak zastąpienie domyślnych nagrań własnym głosem. Bezpośrednie polecenie CAT/CI-V można również wysłać do radia z prefiksem RI:.
Funkcja ESM (Enter Sends Message) jest włączona w Ustawieniach konfiguracji > Opcje. Klawisz Enter wysyła makro na podstawie tego, co zostało wypełnione, a spacja przesuwa się pomiędzy polami. W trybie Run wyśle CQ, po wpisaniu znacznika z wymianą, w przypadku pustej wymiany AGN i na koniec TU QRZ z zapisem połączenia. W S&P wyśle własną markę, w przypadku braku giełdy AGN, a po wejściu do niej własną giełdę z dopiskiem. Klawisze funkcyjne muszą pełnić tę samą rolę w obu trybach.
Cyfrowa moda w Not1MM
Połączenia z WSJT-X są przechwytywane przez program poprzez multicast UDP pod adresem 224.0.0.1:2237, co działa bez dalszej konfiguracji. Śledzi połączenia z Fldigi przez UDP do 127.0.0.1:9876. Wysyła klawisze F1 do F12 do fldigi poprzez interfejs XMLRPC, który przełącza fldigi w tryb rozgłaszania, wysyła tekst i łączy ^r, aby powrócić do odbioru. W fldigi musi być włączony XMLRPC, w KONKURSY > Ogólne musi być wybrany Konkurs ogólny, a Kolejność przechwytywania tekstu musi być ustawiona na CALL Exchange.
Multi-Multi z serwerem Renfield
Obecnym celem rozwoju jest obsługa Multi-Multi. Potrzebny jest projekt towarzyszący, renfield, lekka aplikacja terminalowa, która w idealnym przypadku działa na oddzielnym komputerze w tej samej sieci, takim jak Raspberry Pi. Zarządza bazą danych, przypisuje numery sekwencyjne, sprawdza duplikaty i generuje Cabrillo.
Na komputerach wyścigowych w zakładce Grupa wybiera się połączenie z serwerem i jedna stacja jako główna informuje serwer o rozgrywanym wyścigu. Jeśli w ustawieniach wyścigu znajduje się operator MULTI-OP i kategoria nadajnika inna niż ONE lub SWL, Not1MM poprosi o numery i sprawdzenie duplikatów od Renfield. Renfield może również służyć jako automatyczna kopia zapasowa logów dla operatora solo. Jednocześnie autor otwarcie przyznaje, że nie ma praktycznego doświadczenia z Multi-Multi, dlatego warto wypróbować system przed gwałtownym wdrożeniem.
Cabrillo, ADIF i konwersja mnożników
Wynik jest stale aktualizowany po każdym wpisie. Jednakże po poprawieniu błędnie wpisanego połączenia mnożnik można dodać lub usunąć. Służy do tego funkcja Recalculate Mults w menu Misc, po czym należy ponownie wygenerować pliki Cabrillo i ADIF.

Dane wyjściowe dla oceniającego są tworzone poprzez Plik > Generuj Cabrillo i Plik > Generuj ADIF. Pliki zapisywane są w katalogu domowym pod nazwą w postaci brand_race_date_time z rozszerzeniem .log lub .adi.
Wniosek
Not1MM je pre linuxových contestmanov jednou z mála alternatív k programom viazaným na Windows. Interfejs podobny do N1MM ułatwia przejście, a funkcje takie jak ESM, Check Partial, mapa pasm lub obsługa WSJT-X i fldigi obejmują typowe operacje wyścigowe. Autor z humorem przyznaje, że „testuje w produkcji”, dlatego przed ważnym wyścigiem warto wypróbować program i mieć pod ręką polecenie wycofania. Kod źródłowy, instrukcja obsługi w formacie PDF i dziennik zmian są swobodnie dostępne pod adresem Projekt GitHub mbridak/not1mm.
