Hamlib je open-source projekt poskytující programátorům konzistentní Application Programming Interface (API) pro ovládání radioamatérských transceiverů, rotátorů a zesilovačů. Projekt vznikl v roce 2000 a zakladateli jsou Frank Singleton, VK3FCS/KM5WS, a Stéphane Fillod, F8CFE. Hamlib není hotová uživatelská aplikace, ale softwarová vrstva – knihovna – určená v ývojářům logovacích programů, softwaru pro digitální módy, vzdálené ovládání a jiné řídicí aplikace. Díky tomu mohou autoři softwaru soustředit úsilí na funkci programu a logiku rozhraní, nikoli na implementaci CAT příkazů pro každé rádio zvlášť.
V článku se dočtete
K čemu slouží Hamlib a proč je důležitý
Většina moderních transeiverů umožňuje externí ovládání přes sériové rozhraní. Problém spočí v á v tom, že příkazy nejsou konzistentní ani napříč modely jednoho v ýrobce, ani mezi v ýrobci navzájem. Hamlib tento problém řeší tím, že aplikacím prezentuje „virtuální rádio“ s jednotným API – abstrakcí, kde nastavení frekvence, módu, VFO nebo PTT funguje rovněž bez ohledu na to, zda je na sériovém portu připojen Yaesu FT-991A, Icom IC-7300, Kenwood TS-590SG nebo jakýkoli jiný podporovaný transceiver.

Bez Hamlibu by každý program musel implementovat ovládání každého rádia samostatně. S Hamlib stačí, aby měl v ývojář podporu pouze pro Hamlib API – a okamžitě zícsá přístup ke v šem zařízením, která Hamlib podporuje. Když Hamlib přidá nový backend, v šechny aplikace na něm postavené získají podporu daného rádia bez zásahu do vlastního kódu.
Hamlib poskytuje jazykové vazby (bindings) pro C, C++, Perl, Python 2 a 3, Lua a TCL. Stabilní verze v době psaní tohoto článku je Hamlib 4.7. 1. Denní snapshoty z master branch i ze stabilní v ětve Hamlib-4.7 jsou dostupné pro Linux (zdrojové tarbally) i Windows 32/64 bit.
Podporovaná zařízení

Hamlib Wiki rozděluje podporovaná zařízení do tří kategorií: radioamatérské transceivery a přijímače (Supported Radios), rotátory antén (Supported Rotators) a lineární zesilovače (Supported Amplifiers). Seznam podporovaných rádií se neustále rozrůstá a zahrnuje zařízení od v ýrobců jako Yaesu, Icom, Kenwood, Elecraft, FlexRadio, TenTec, Alinco, Aor, Drake, JRC, Lowe, Skanti, Uniden, Vertex a mnoha dalších. Pro rotátory jsou podporovány mimo jiné Yaesu G-série, Hy-Gain, SPID, M2 Orion a další. Výpis v šech dostupných modelů zobrazí příkaz Rigctl --list resp. rotctl --list.
Knižnica sa zameriava na zariadenia s portom a príkazovým protokolom (CAT, CI-V a pod.) pro nastavenie frekvencie, módu, VFO, PTT a ďalších parametrov. Zariadenia, ktoré nepodporujú sériové ovládanie a umožňujú len klonovanie pamäte ( v äčšina VHF/UHF FM transcieverov), sú mimo rozsahu Hamlib – pre ne odporúč a projekt CHIRP .
FAQ: nejčastější dotazy
Co je Hamlib ve zkratce?
Hamlib je v jádru C knihovna – linkable subroutine library – vyvíjená primárně nástroji GNU na Linuxu, ale kompilovaná a funkční také na Windows a macOS. Cílem je poskytovat rig-independent API, které umožňuje autorům aplikací psát software nezávislý na konkrétním modelu rádia.
Pro koho je Hamlib určen?
Primární pro programátory píšící aplikace pro Rig control , logování a jiné radioamatérské programy. Běžní uživatelé Hamlib neinstalují přímo – obvykle ho dostávají jako závislost logovacího programu nebo WSJT-X , Fldigi , CQRLog a podobných aplikací.
Mohu používat Hamlib na dvou programech současně?
Sériový port může v dané době přistupovat jen jeden program. Řešením je rigctld – síťový démon, který přistupuje k rádií a komunikuje s klienty přes TCP protokol. Spustí se příkazem rigctld -m 210 -r /dev/ttyS1 & a následně se k němu libovolný program připojuje jako k modelu 2 (NET rigctl).
Co když se vyskytuje timeout na sériovém portu?
Problém může být způsoben CAT rozhraním napájeným z RTS/CTS/DTR linek, kde při spuštění příkazu jedním krokem nejsou elektrolytické kondenzátory rozhraní ještě nabité. Řešením je přepínač -C rts_state=ON, který vynutí zapnutí RTS a napájení rozhraní ještě před odesláním prvního příkazu.
Jak navázat na Hamlib vlastní program?
Hamlib použí v á pkg-config. Kompilace probíhá např. příkazem gcc -o myprog `pkg-config --cflags --libs hamlib` myprog.c. Pro autoconf/automake projekty existuje makro PKG_CHECK_MODULES(HAMLIB, hamlib, ...).
Hamlib utility: přehled nástrojů příkazového řádku
| Utilita | Popis | Výchozí TCP port |
|---|---|---|
| rigctl | Interaktivní nebo skriptové ovládání transceiveru z příkazového řádku. Otevírá sériový/USB port přímo – jen jeden program může port používat současně. | – |
| rigctld | TCP démon pro transceivery. Otevírá sériový port a vystavuje řízení přes TCP socket. Umožňuje v ícenásobné současné připojení klientů. Sdílený rig control pro WSJT-X, Fldigi, CQRlog a další. | 4532 |
| rotctl | Interaktivní nebo skriptové ovládání rotátoru antény z příkazového řádku. | – |
| rotctld | TCP démon pro rotátory. Stejný princip jako rigctld pro transceivery. | 4533 |
| ampctl | Ovládání lineárního zesilovače z příkazové řádky. | – |
| ampctld | TCP démon pro lineární zesilovače. | 4534 |
| rigctlcom | Emulace COM portu pro programy, které nejsou schopny připojit se k TCP socket rigctld, ale požadují nativní sériový port. | – |
| rigswr | Měření SWR pomocí rádia; skenuje frekvenční rozsah, transceiver vysílá a zaznamená v á hodnoty SWR. | – |
| rigsmtr | Měření úrovně signálu (S-metru) pomocí rádia; skenuje frekvenční rozsah a zapisuje naměřené hodnoty. | – |
| rigmem | Zálohování, obnova a manipulace s obsahem paměťových kanálů transceiveru. | – |
Příkazy pro rigctl a rigctld jsou sdíleny – velké písmeno obvykle označuje set příkaz (např. F pro set_freq), malé písmeno get příkaz (např. f pro get_freq). Přiřazování modelu rádia probíhá přepínačem -m ID, sériový port se zadá v á přepínačem -r /dev/ttyUSBx (Linux) nebo -r COMx (Windows).
Hamlib Network Device Control přes TCP
Síťové ovládání je nedílnou součástí Hamlib. TCP démony rigctld a rotctld používají jednoduchý textový protokol – příkazy jsou odesílány jako ASCII řetězce, odpovědi na get příkazy jsou vraceny jako hodnoty po řádcích, chybové stavy jako RPRT x kde x je záporné číslo chybového kódu. Démony umožňují současné připojení v íce klientů.
Praktický postup: spuštění démona pro Kenwood K3 na prvním USB-sériovém adaptéru:
rigctld -m 229 -r /dev/ttyUSB0 &
Následně se libovolný Hamlib-kompatibilní program konfiguruje na Net rigctl (model 2) s adresou localhost:4532. Takto mohou WSJT-X, Fldigi a CQRlog sdílet jedno fyzické rádio bez konfliktu sériového portu. Kromě standardního protokolu podporuje rigctld i rozšířený Extended Response Protocol, který zpětně odesílá přijatý příkaz jako hlavičku a hodnoty jako páry klíč: hodnota – vhodné pro klienty, kteří přistupují k démonu přímo přes TCP socket bez Hamlib knihovny.
Pro programátory: aplikace psané na Hamlib C/C++ API mohou přistupovat k démonům přes backendové modely NET rigctl a NET rotctl (model 2 pro oba typy zařízení). Nastavení ze strany aplikace sestá v á z v ýběru modelu 2, zadání hostname:port jako zařízení a nastavení baud rate a stop bits při spouštění démona.
Videa
Následující video (WA4EFS) demonstruje GUI klienta, který se připojuje k TCP listeneru rigctld a umožňuje interaktivní testování a využití CAT rozhraní transceiveru:
Video od AG7GN (Western Washington DX Club) pokrý v á integraci Hamlib, Fldigi a FLrig – v četně nastavení rigctld jako společného rig control backendu pro v íce aplikací současně:
Video ukazuje instalaci Hamlib 4. 1 ze zdrojů na Raspberry Pi – postup relevantní pro v šechny, kteří chtějí mít nejnovější backend dříve, než je dostupný v distribučním repozitáři:
Nové v Hamlib – vybrané změny z posledních verzí
Verze 4. 6.4 (vydaná 18. července 2025, 25. v ýročí projektu Hamlib) opravila zpracování netisknutelných znaků v Kenwood.c, což způsobovalo nefunkčnost TM-D710 a TM-V71 používajících EOM_TH (\r) jako terminátor příkazu. Opravila memory leak v rigctl_parse.ca zavedla unikátní oddělovací znak pro každé rigctld spojení. Vydání bylo v ěnováno památce Michaela Blacka, W9MDB (SK), dlouholetého přispěvatele a vedoucího v ývoje projektu v letech 2020 a ž 2025.
Z novějších změn v master branch (ve směru verze 4.7) jsou relevantní tyto novinky podle NEWS souboru:
Hamlib spouští multicast server, který odesílá informace o stavu rádia (příjem příkazů zatím není implementován). Přidána je podpora --bind-all (-b) pro rigctld k navázání na v šechna dostupná síťová rozhraní – opravuje duplicitní instance rigctld na Windows. Yaesu transceivery mohou přes send_Morse odesílat zprávy klíčovače 1–5 nebo CW zprávu do 50 znaků. Příkaz rig set level METER přijímá argumenty SWR, COMP, ALC , IC/ID, DB, PO, VDD, TEMP pro v ýběr zobrazovaného metru. Přidán je přístup k GPIO1–4 na CM108 zařízeních přes get/set_GPIO v rigctl/rigctld. Funkce rigctld umožňuje volitelně startovat s autopower_on=0, což předchází timeoutem při spuštění, když je transceiver vypnutý. Přidána je volitelná ochrana heslem pro rigctld přes přepínač -A, kde se klient ověří příkazem \password.
Kde stáhnout a jak přispět
Aktuální stabilní verze Hamlib 4.7. 1 je dostupná na GitHub a SourceForge. Balíky pro Windows 32 a 64 bit jsou dostupné jako ZIP nebo self-extracting EXE. Denní snapshoty z master i stabilní v ětve jsou na hamlib.sourceforge.net/snapshots/. Diskuse a technická podpora probíhá na mailing listu hamlib-developer (SourceForge) a IRC kanálu #hamlib na irc.oftc.net. Opravy se předkládají přes GitHub pull request nebo patch na mailing list.
