Not1MM je závodní deník pro Linux a macOS, který vyvíjí Mike Bridak, K6GTE. Program je napsán v jazyce Python 3.11+, grafické rozhraní staví na knihovně Qt6 a data ukládá do databáze SQLite. Šíří se pod licencí GPLv3 a podle seznamu na GitHube podporuje více než 60 závodů. Vývoj je velmi aktivní, aktuální verze v době psaní nese označení 26.10.28.
V článku se dočtete
Původ: osobní projekt důchodce
K6GTE netají, že program vznikol predovšetkým pre jeho vlastnú zábavu. Po viac ako 35 rokoch práce v telekomunikáciách (GTE, Verizon, Frontier) odišiel do dôchodku a hľadal náplň voľného času. Ako príležitostný contestman nenašiel pre Linux pretekový softvér, ktorý by mu vyhovoval. Spomína síce Tučňák, který považuje za robustní a vyzrálý, ale nebyl to program pro něj.
Rozhraní se otevřeně inspiruje programem N1MM Logger+. Autor však zdůrazňuje, že Not1MM není N1MM a není určen ke spolupráci s ním. Pakety ve formátu N1MM sice odesílá, ale jen pro výsledkové tabule postavené například na Node-RED. Primární platformou je Linux a macOS, Windows a BSD autor přímo nepodporuje.
„The worlds #1 unfinished contest logger.“ Podle autorovy dcery Coriny.
Video: Not1MM v rozhovoru s autorem
Motivaci i vnitřní fungování programu přibližuje epizoda 507 podcastu Linux in the Ham Shack. Jedná se o rozsáhlý rozhovor přímo s K6GTE. Nahrávka je jen zvuková, takže ji klidně můžete poslouchat při instalaci.
Instalace pomocí uv
Nejjednodušší cestou je instalace jedním příkazem v terminálu: curl -LsSf uvx.sh/not1mm/install.sh | sh. Druhou možností je nejprve nainstalovat správce balíků uv od Astralu a program spouštět příkazem uvx not1mm@latest. Trvalou instalaci nebo aktualizaci zajistí uv tool install not1mm@latest.
uv při prvním spuštění stáhne nejnovější verzi, vytvoří virtuální prostředí Pythonu, doplní potřebné knihovny a vše uloží do cache. První start trvá asi minutu, další jsou rychlé a program při každém spuštění kontroluje aktualizace.
Virtuální prostředí má praktickou výhodu. Na starších distribucích s Pythonem 3.10 není třeba měnit systémový Python, stačí uvx –python 3.14 not1mm@latest. Stejně tak se lze vrátit ke starší verzi, pokud poslední aktualizace obsahuje chybu, například uvx –python 3.11 not1mm==23.5.19. Alternativou je flatpak z GitHub Releases nebo instalace přes pipx.
Před instalací je třeba přes správce balíků distribuce doplnit:
- Python 3.11+ a PyQt6,
- libportaudio2,
- podle distribuce také libxcb-cursor0, libxslt-devel a libxml2-devel.
Databáze SQLite
Při prvním spuštění program vytvoří databázi ham.db. Naleznete ji v adresáři určeném proměnnou XDG_DATA_HOME, jinak v ~/.local/share/not1mm. Konfigurace leží v ~/.config/not1mm.
Jedna databáze obsahuje nastavení stanice a libovolný počet závodních deníků. Autor připouští oba přístupy: jednu databázi na celý život se stovkami závodů nebo novou databázi pro každý závod. Nová se vytváří přes File > New Database, stávající se otevírá přes File > Open Database. Jelikož se jedná o jediný soubor, zálohování je jednoduché.
Nastavení stanice, CTY a MASTER.SCP
Po prvním spuštění nebo po vytvoření nové databáze se otevře dialog Station Settings. Kromě volací značky a operátora obsahuje lokátor (4 až 6 znaků), zónu CQ a ITU, zeměpisné souřadnice, výkon, anténu a její výšku, jakož i adresní údaje pro hlavičku souboru Cabrillo. Později lze změnit přes File > Station Settings.

Pred každými pretekmi sa oplatí aktualizovať súbory CTY a MASTER.SCP přes FILE > Update CTY a FILE > Update MASTER.SCP. Z cty.dat program určuje zemi, vzdálenost a Azimut k protistanici. Vyhľadávanie značiek podporuje QRZ.com (vyžaduje placené předplatné) i HamQTH. Z QRZ.com si program dohledá i přesnější lokátor protistanice.
CAT a CW klíčování
Transceiver program ovládá přes rigctld (standardně 127.0.0.1:4532) nebo flrig (127.0.0.1:12345). README uvádí i podporu protokolu TCI. Stav spojení ukazuje barva malé ikony transceiveru: zelená znamená připojeno, červená nepřipojeno.
Pro CW jsou k dispozici tři cesty:
- cwdaemon na portu 6789, ve verzích pro sériový či paralelní port nebo pro čip K1EL,
- pywinkeyer na portu 8000, autorův klient pro WinKeyer (na macOS SwiftKeyer),
- klíčování přes CAT pomocí rigctld, pokud to rádio podporuje.
V nastaveních se určuje krok změny rychlosti klávesami PgUp/PgDn (1 až 10 WPM), způsob vysílání reportu (5NN, 599 nebo ENN) a zarovnání pořadových čísel. Nechybí ani zkrácené číslice A, N a T namísto 1, 9 a 0. Pozor na starší verze: Hamlib před verzí 4.6.3 měl problémy s vysíláním CW a nastavováním rychlosti.
DX cluster a mapa pásma

V záložce Cluster se nastavuje server AR Cluster, port a filtr spotů. V režimu OPEN přicházejí spoty od spotterů z celého světa. Pro evropskou stanici je rozumnější omezit jejich filtrem, například set/dx/filtr spottercont=eu.
Okno Bandmap třídí spoty a odpracované stanice podle frekvence. Při zapnutém CAT sleduje VFO, které označuje zelený trojúhelník, a modrý pruh ukazuje šířku přijímacího filtru. Klepnutí na spot přeladí rádio a vyplní značku. Odpracované stanice jsou šedé, ikonka za značkou označuje módy a značky [P] a [S] spoty POTA a SOTA.
Starší Python podle manuálu nemusí během rušného závodu stíhat tok dat z clusteru a mapa pásma se rozejde se skutečností. Řešením je spustit program s novějším Pythonem přes uv.
Okna a nástroje Not1MM
Okno Check Partial během psaní značky nabízí shody ze tří zdrojů. Z MASTER.SCP zobrazuje kandidáty s alespoň třemi shodnými znaky od začátku značky, z vlastního deníku az posledních spotů shody libovolné délky. Klepnutím se značka přenese do pole.
Okna DXCC a Zone zobrazují odpracované entity a zóny CQ nebo ITU podle pásem. Při zadání značky se mohou automaticky posunout na příslušný řádek. Okno Rate ukazuje tempo spojení.
Okno rotátoru je zatím ve vývoji. Připojuje se k rotctld na 127.0.0.1:4533 a zobrazuje aktuální azimut antény i směr k zadané stanici. Tlačítko Move otočí anténu na cíl, pravým klikem na dlouhou cestu, k dispozici jsou také Stop, Park a světové strany.
Makra a ESM
Makra na klávesách F1 až F12 se upravují přes File > Edit Macros v systémovém textovém editoru. Každý závod a každý mód (CW, SSB, RTTY) mají vlastní soubor. Změny se projeví po přepnutí mezi Run a S&P. K dispozici jsou proměnné jako {MYCALL}, {HISCALL}, {SNT}, {EXCH}, {LOGIT} nebo {SPOT}, znak # vloží pořadové číslo.
Pro SSB slouží makra {VOICE1} až {VOICE10} pro hlasové paměti rádia přes rigctld nebo soubory WAV, například [cq] pro cq.wav. Přibalené fonetické nahrávky NATO dokážou vyhláskovat značku i report. Výchozí nahrávky však autor doporučuje nahradit vlastním hlasem. Prefixem RI: lze do rádia poslat i přímý CAT/CI-V příkaz.
Funkce ESM (Enter Sends Message) se zapíná v Configuration Settings > Options. Klávesa Enter pošle makro podle toho, co je vyplněno, a mezi poli se přesouvá mezerníkem. V režimu Run pošle CQ, po zadání značky jeho značku s výměnou, při prázdné výměně AGN a nakonec ZDE QRZ se zápisem spojení. V S&P pošle vlastní značku, při chybějící výměně AGN a po jejím zadání vlastní výměnu se zápisem. Funkční klávesy musí mít v obou režimech stejnou úlohu.
Digitální módy v Not1MM
Spojení z WSJT-X program zachycuje přes UDP multicast na adrese 224.0.0.1:2237, což funguje bez dalšího nastavování. Spojení z Fldigi sleduje přes UDP na 127.0.0.1:9876. Klávesy F1 až F12 posílá do fldigi přes rozhraní XMLRPC, které přepne fldigi na vysílání, odešle text a připojí ^r k návratu do příjmu. V fldigu je třeba zapnout XMLRPC, v CONTESTS > General zvolit Generic Contest a nastavit Text Capture Order na CALL Exchange.
Multi-Multi se serverem renfield
Aktuálním těžištěm vývoje je provoz Multi-Multi. Potřebný je doprovodný projekt renfield, odlehčená terminálová aplikace, která běží ideálně na samostatném počítači ve stejné síti, například na Raspberry Pi. Spravuje databázi, přiděluje pořadová čísla, kontroluje duplicity a generuje Cabrillo.
Na závodních počítačích se v záložce Group zvolí připojení k serveru a jedna stanice jako hlavní oznámí serveru, jaký závod běží. Pokud je v nastavení závodu operátor MULTI-OP a kategorie vysílače jiná než ONE nebo SWL, Not1MM si čísla a kontrolu duplicit vyžádá od renfieldu. Renfield může posloužit i sólo operátorovi jako automatická záloha deníku. Autor zároveň otevřeně přiznává, že s Multi-Multem nemá praktické zkušenosti, takže je dobré systém před ostrým nasazením vyzkoušet.
Cabrillo, ADIF a přepočet násobičů
Skóre se aktualizuje průběžně po každém zápisu. Když se však opraví chybně zapsané spojení, může přibýt nebo zaniknout násobič. K tomu slouží funkce Recalculate Mults v menu Misc, po ní je třeba soubory Cabrillo a ADIF vygenerovat znovu.

Výstup pro vyhodnocovatelova vznikne přes File > Generate Cabrillo a File > Generate ADIF. Soubory se uloží do domovského adresáře s názvem ve tvaru značka_závod_datum_čas s příponou .log nebo .adi.
Závěr
Not1MM je pre linuxových contestmanov jednou z mála alternatív k programom viazaným na Windows. Rozhraní připomínající N1MM usnadňuje přechod a funkce jako ESM, Check Partial, mapa pásma či podpora WSJT-X a fldigi pokrývají běžný závodní provoz. Autor s humorem přiznává, že „testuje v produkci“, takže před důležitým závodem se vyplatí program vyzkoušet a mít po ruce příkaz k návratu ke starší verzi. Zdrojový kód, uživatelská příručka v PDF i seznam změn jsou volně dostupné na GitHube projektu mbridak/not1mm.
