Hamlib je open-source projekt poskytujúci programátorom konzistentné Application Programming Interface (API) pre ovládanie rádioamatérskych transceiverov, rotátorov a zosilňovačov. Projekt vznikol v roku 2000 a zakladateľmi sú Frank Singleton, VK3FCS/KM5WS, a Stéphane Fillod, F8CFE. Hamlib nie je hotová užívateľská aplikácia, ale softvérová vrstva – knižnica – určená vývojárom logovacích programov, softvéru pre digitálne módy, vzdialené ovládanie a iné riadiace aplikácie. Vďaka tomu môžu autori softvéru sústrediť úsilie na funkciu programu a logiku rozhrania, nie na implementáciu CAT príkazov pre každé rádio zvlášť.
V článku sa dočítate
Na čo slúži Hamlib a prečo je dôležitý
Väčšina moderných transeiverov umožňuje externé ovládanie cez sériové rozhranie. Problém spočíva v tom, že príkazy nie sú konzistentné ani naprieč modelmi jedného výrobcu, ani medzi výrobcami navzájom. Hamlib tento problém rieši tým, že aplikáciám prezentuje „virtuálne rádio“ s jednotným API – abstrakciou, kde nastavenie frekvencie, 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 alebo akýkoľvek iný podporovaný transceiver.

Bez Hamlib by každý program musel implementovať ovládanie každého rádia samostatne. S Hamlib stačí, aby mal vývojár podporu iba pre Hamlib API – a okamžite získa prístup ku všetkým zariadeniam, ktoré Hamlib podporuje. Keď Hamlib pridá nový backend, všetky aplikácie na ňom postavené získajú podporu daného rádia bez zásahu do vlastného kódu.
Hamlib poskytuje jazykové väzby (bindings) pre C, C++, Perl, Python 2 a 3, Lua a TCL. Stabilná verzia v čase písania tohto článku je Hamlib 4.7.1. Denné snapshoty z master branch aj zo stabilnej vetvy Hamlib-4.7 sú dostupné pre Linux (zdrojové tarbally) aj Windows 32/64 bit.
Podporované zariadenia

Hamlib Wiki rozdeľuje podporované zariadenia do troch kategórií: rádioamatérske transceivery a prijímače (Supported Radios), rotátory antén (Supported Rotators) a lineárne zosilňovače (Supported Amplifiers). Zoznam podporovaných rádií sa neustále rozrastá a zahŕňa zariadenia od výrobcov ako Yaesu, Icom, Kenwood, Elecraft, FlexRadio, TenTec, Alinco, Aor, Drake, JRC, Lowe, Skanti, Uniden, Vertex a mnohých ďalších. Pre rotátory sú podporované okrem iného Yaesu G-série, Hy-Gain, SPID, M2 Orion a ďalšie. Výpis všetkých dostupných modelov zobrazí príkaz Rigctl --list resp. rotctl --list.
Knižnica sa zameriava na zariadenia s portom a príkazovým protokolom (CAT, CI-V a pod.) pre 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: najčastejšie otázky
Čo je Hamlib v skratke?
Hamlib je v jadre C knižnica – linkable subroutine library – vyvíjaná primárne nástrojmi GNU na Linuxe, ale kompilovaná a funkčná aj na Windows a macOS. Cieľom je poskytovať rig-independent API, ktoré umožňuje autorom aplikácií písať software nezávislý od konkrétneho modelu rádia.
Pre koho je Hamlib určený?
Primárne pre programátorov píšucich aplikácie pre 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 aplikácií.
Môžem používať Hamlib na dvoch programoch súčasne?
Sériový port môže v danom čase pristupovať len jeden program. Riešením je rigctld – sieťový démon, ktorý pristupuje k rádiou a komunikuje s klientmi cez TCP protokol. Spustí sa príkazom rigctld -m 210 -r /dev/ttyS1 & a následne sa k nemu ľubovoľný program pripája ako k modelu 2 (NET rigctl).
Čo ak sa vyskytuje timeout na sériovom porte?
Problém môže byť spôsobený CAT rozhraním napájaným z RTS/CTS/DTR liniek, kde pri spustení príkazu jedným krokom nie sú elektrolytické kondenzátory rozhrania ešte nabité. Riešením je prepínač -C rts_state=ON, ktorý vynúti zapnutie RTS a napájaní rozhranie ešte pred odoslaním prvého príkazu.
Ako naviazať na Hamlib vlastný program?
Hamlib používa pkg-config. Kompilácia prebieha napr. príkazom gcc -o myprog `pkg-config --cflags --libs hamlib` myprog.c. Pre autoconf/automake projekty existuje makro PKG_CHECK_MODULES(HAMLIB, hamlib, ...).
Hamlib utility: prehľad nástrojov príkazového riadka
| Utilita | Popis | Predvolený TCP port |
|---|---|---|
| rigctl | Interaktívne alebo skriptové ovládanie transceivera z príkazového riadka. Otvára sériový/USB port priamo – len jeden program môže port používať súčasne. | – |
| rigctld | TCP démon pre transceivery. Otvára sériový port a vystavuje riadenie cez TCP socket. Umožňuje viacnásobné súčasné pripojenie klientov. Zdieľaný rig control pre WSJT-X, Fldigi, CQRlog a ďalšie. | 4532 |
| rotctl | Interaktívne alebo skriptové ovládanie rotátora antény z príkazového riadka. | – |
| rotctld | TCP démon pre rotátory. Rovnaký princíp ako rigctld pre transceivery. | 4533 |
| ampctl | Ovládanie lineárneho zosilňovača z príkazového riadka. | – |
| ampctld | TCP démon pre lineárne zosilňovače. | 4534 |
| rigctlcom | Emulácia COM portu pre programy, ktoré nie sú schopné pripojiť sa na TCP socket rigctld, ale požadujú natívny sériový port. | – |
| rigswr | Meranie SWR pomocou rádia; skenuje frekvenčný rozsah, transceiver vysiela a zaznamenáva hodnoty SWR. | – |
| rigsmtr | Meranie úrovne signálu (S-metra) pomocou rádia; skenuje frekvenčný rozsah a zapisuje namerané hodnoty. | – |
| rigmem | Zálohovanie, obnova a manipulácia s obsahom pamäťových kanálov transceivera. | – |
Príkazy pre rigctl a rigctld sú zdieľané – veľké písmeno obvykle označuje set príkaz (napr. F pre set_freq), malé písmeno get príkaz (napr. f pre get_freq). Priraďovanie modelu rádia prebieha prepínačom -m ID, sériový port sa zadáva prepínačom -r /dev/ttyUSBx (Linux) alebo -r COMx (Windows).
Hamlib Network Device Control cez TCP
Sieťové ovládanie je integrálnou súčasťou Hamlib. TCP démony rigctld a rotctld používajú jednoduchý textový protokol – príkazy sú odosielané ako ASCII reťazce, odpovede na get príkazy sú vracané ako hodnoty po riadkoch, chybové stavy ako RPRT x kde x je záporné číslo chybového kódu. Démony umožňujú súčasné pripojenie viacerých klientov.
Praktický postup: spustenie démona pre Kenwood K3 na prvom USB-sériovom adaptéri:
rigctld -m 229 -r /dev/ttyUSB0 &
Následne sa ľubovoľný Hamlib-kompatibilný program konfiguruje na Net rigctl (model 2) s adresou localhost:4532. Takto môžu WSJT-X, Fldigi a CQRlog zdieľať jedno fyzické rádio bez konfliktu sériového portu. Okrem štandardného protokolu podporuje rigctld aj rozšírený Extended Response Protocol, ktorý spätne odosiela prijatý príkaz ako hlavičku a hodnoty ako páry kľúč:hodnota – vhodné pre klientov, ktorí pristupujú k démonu priamo cez TCP socket bez Hamlib knižnice.
Pre programátorov: aplikácie písané na Hamlib C/C++ API môžu pristupovať k démonom cez 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 ako zariadenia a nastavenia baud rate a stop bits pri spúšťaní démona.
Videá
Nasledujúce video (WA4EFS) demonštruje GUI klienta, ktorý sa pripája k TCP listeneru rigctld a umožňuje interaktívne testovanie a využitie CAT rozhrania transceivera:
Video od AG7GN (Western Washington DX Club) pokrýva integráciu Hamlib, Fldigi a FLrig – vrátane nastavenia rigctld ako spoločného rig control backendu pre viacero aplikácií súčasne:
Video ukazuje inštaláciu Hamlib 4.1 zo zdrojov na Raspberry Pi – postup relevantný pre všetkých, ktorí chcú mať najnovší backend skôr, než je dostupný v distribučnom repozitári:
Nové v Hamlib – vybrané zmeny z posledných verzií
Verzia 4.6.4 (vydaná 18. júla 2025, 25. výročie projektu Hamlib) opravila spracovanie netlačiteľných znakov v Kenwood.c, čo spôsobovalo nefunkčnosť TM-D710 a TM-V71 používajúcich EOM_TH (\r) ako terminátor príkazu. Opravila memory leak v rigctl_parse.c a zaviedla unikátny oddeľovací znak pre každé rigctld spojenie. Vydanie bolo venované pamiatke Michaela Blacka, W9MDB (SK), dlhoročného prispievateľa a vedúceho vývoja projektu v rokoch 2020 až 2025.
Z novších zmien v master branch (v smere verzie 4.7) sú relevantné tieto novinky podľa NEWS súboru:
Hamlib spúšťa multicast server, ktorý odosiela informácie o stave rádia (príjem príkazov zatiaľ nie je implementovaný). Pridaná je podpora --bind-all (-b) pre rigctld na naviazanie na všetky dostupné sieťové rozhrania – opravuje duplicitné inštancie rigctld na Windows. Yaesu transceivery môžu cez send_Morse odosielať správy klúčovača 1–5 alebo CW správu do 50 znakov. Príkaz rig set level METER prijíma 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. Funkcia rigctld umožňuje voliteľne štartovať s autopower_on=0, čo predchádza timeoutom pri spustení, keď je transceiver vypnutý. Pridaná je voliteľná ochrana heslom pre rigctld cez prepínač -A, kde sa klient overí príkazom \password.
Kde stiahnuť a ako prispieť
Aktuálna stabilná verzia Hamlib 4.7.1 je dostupná na GitHub a SourceForge. Balíky pre Windows 32 a 64 bit sú dostupné ako ZIP alebo self-extracting EXE. Denné snapshoty z master aj stabilnej vetvy sú na hamlib.sourceforge.net/snapshots/. Diskusia a technická podpora prebieha na mailing liste hamlib-developer (SourceForge) a IRC kanáli #hamlib na irc.oftc.net. Opravy sa predkladajú cez GitHub pull request alebo patch na mailing list.
