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 alebo PTT funguje rovnako bez ohľadu na to, či je na sériovom porte pripojený 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íská 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.
Knihovna se zaměřuje na zařízení s portem a příkazovým protokolem (CAT, CI-V apod.) pro nastavení frekvence, módu, VFO, PTT a dalších parametrů. Zařízení, která nepodporují sériové ovládání a umožňují pouze klonování paměti (většina VHF/UHF FM transcieverů), jsou mimo rozsah Hamlib – pro ně doporučuje 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, logovanie a iné rádioamatérske programy. Bežní používatelia Hamlib neinštalujú priamo – zvyčajne ho dostávajú ako závislosť logovacieho programu alebo 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 príkaz (napr. F pro set_freq), malé písmeno get príkaz (napr. 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 pre oba typy zariadení). Nastavenie zo strany aplikácie pozostáva z výberu modelu 2, zadania 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 správu do 50 znakov. Príkaz rig set level METER přijímá argumenty SWR, COMP, ALC, IC/ID, DB, PO, VDD, TEMP pre výber zobrazovaného metra. Pridaný je prístup k GPIO1–4 na CM108 zariadeniach cez 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.
