Hamlib è un progetto open-source che fornisce ai programmatori un'interfaccia di programmazione delle applicazioni (API) coerente per il controllo di ricetrasmettitori, rotatori e amplificatori radioamatoriali. Il progetto è stato fondato nel 2000 da Frank Singleton, VK3FCS/KM5WS, e Stéphane Fillod, F8CFE. Hamlib non è un'applicazione utente preconfezionata, ma un livello software – una libreria – pensato per gli sviluppatori di programmi di registrazione, software per modalità digitali, controllo remoto e altre applicazioni di controllo. Ciò consente agli autori di software di concentrare i propri sforzi sulla funzionalità del programma e sulla logica di interfaccia, piuttosto che sull'implementazione di comandi CAT per ogni singola radio.
Nell'articolo leggerete
A cosa serve Hamlib e perché è importante?
La maggior parte dei ricetrasmettitori moderni consente il controllo esterno tramite un'interfaccia seriale. Il problema è che i comandi non sono coerenti tra i modelli di un produttore o tra produttori diversi. Hamlib risolve questo problema presentando alle applicazioni una "radio virtuale" con un'API unificata, un'astrazione in cui impostazione della frequenza, modalità, 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 o qualsiasi altro ricetrasmettitore supportato.

Senza Hamlib, ogni programma dovrebbe implementare il controllo di ciascuna radio separatamente. Con Hamlib, uno sviluppatore ha solo bisogno di supportare l'API di Hamlib e ottiene immediatamente l'accesso a tutti i dispositivi supportati da Hamlib. Quando Hamlib aggiunge un nuovo backend, tutte le applicazioni create su di esso ottengono il supporto per quella radio senza dover modificare il proprio codice.
Hamlib fornisce binding per i linguaggi C, C++, Perl, Python 2 e 3, Lua e TCL. La versione stabile al momento della stesura di questo testo è Hamlib 4.7.1. Sono disponibili snapshot giornalieri sia del ramo master che del ramo stabile Hamlib-4.7 per Linux (archivi sorgente) e Windows a 32/64 bit.
Dispositivi supportati

Hamlib Wiki divide i dispositivi supportati in tre categorie: ricetrasmettitori e ricevitori radioamatoriali (Radio supportate), rotatori d'antenna (Rotatori supportati) e amplificatori lineari (Amplificatori supportati). L'elenco delle radio supportate è in costante crescita e include dispositivi di produttori come Yaesu, Icom, Kenwood, Elecraft, FlexRadio, TenTec, Alinco, Aor, Drake, JRC, Lowe, Skanti, Uniden, Vertex e molti altri. Per i rotatori, quelli supportati includono Yaesu serie G, Hy-Gain, SPID, M2 Orion e altri. Un elenco di tutti i modelli disponibili viene visualizzato dal comando rigoctl --list rispettivamente. rotctl --list.
La libreria è destinata a dispositivi dotati di porta e protocollo di comando (CAT, CI-V, ecc.) per l'impostazione di frequenza, modalità, VFO, PTT e altri parametri. I dispositivi che non supportano il controllo seriale e consentono solo la clonazione della memoria (la maggior parte dei ricetrasmettitori FM VHF/UHF) non rientrano nell'ambito di Hamlib; per questi dispositivi si consiglia il progetto CHIRP.
FAQ: domande frequenti
Cos'è Hamlib in breve?
Hamlib è una libreria di subroutine collegabili basata su C, sviluppata principalmente con strumenti GNU su Linux, ma compilabile e funzionante anche su Windows e macOS. L'obiettivo è fornire un'API indipendente dal ricetrasmettitore che consenta agli sviluppatori di applicazioni di scrivere software indipendentemente da uno specifico modello di radio.
A chi è destinato Hamlib?
Principalmente per programmatori che scrivono applicazioni per 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 e applicazioni simili.
Posso utilizzare Hamlib su due programmi contemporaneamente?
Solo un programma può accedere alla porta seriale alla volta. La soluzione è rigoctld – un demone di rete che accede alla radio e comunica con i client tramite il protocollo TCP. Viene avviato con il comando rigoctld -m 210 -r /dev/ttyS1 & e poi qualsiasi programma si connette ad esso come nel modello 2 (NET rigctl).
Cosa succede se si verifica un timeout sulla porta seriale?
Il problema potrebbe essere causato da un'interfaccia CAT alimentata da linee RTS/CTS/DTR, dove quando viene eseguito un comando a singolo passo, i condensatori elettrolitici dell'interfaccia non sono ancora caricati. La soluzione è un interruttore -C rts_state=ON, che impone l'attivazione di RTS e l'accensione dell'interfaccia prima dell'invio del primo comando.
Come collegare il proprio programma a Hamlib?
Hamlib usa pkg-configLa compilazione viene effettuata, ad esempio, tramite il comando gcc -o myprog `pkg-config --cflags --libs Frazione` myprog.cPer i progetti autoconf/automake c'è una macro PKG_CHECK_MODULES(Frazione, Frazione, ...).
Utilità di Hamlib: una panoramica degli strumenti da riga di comando
| Utilità | Descrizione | Porta TCP predefinita |
|---|---|---|
| Rigctl | Controllo interattivo o tramite script del ricetrasmettitore dalla riga di comando. Apre direttamente la porta seriale/USB: solo un programma alla volta può utilizzare la porta. | – |
| rigoctld | Demone TCP per ricetrasmettitori. Apre una porta seriale ed espone il controllo su un socket TCP. Consente più connessioni client simultanee. Controllo condiviso della radio per WSJT-X, Fldigi, CQRlog e altro. | 4532 |
| rotctl | Controllo interattivo o tramite script del rotatore dell'antenna dalla riga di comando. | – |
| rotctld | Demone TCP per i rotatori. Stesso principio di rigctld per i ricetrasmettitori. | 4533 |
| ampctl | Controllo di un amplificatore lineare tramite riga di comando. | – |
| ampctld | Demone TCP per amplificatori lineari. | 4534 |
| rigctlcom | Emulazione della porta COM per i programmi che non riescono a connettersi al socket TCP di rigctld ma necessitano di una porta seriale nativa. | – |
| rigswr | Misurazione del ROS tramite radio; si esegue una scansione della gamma di frequenza, il ricetrasmettitore trasmette e registra i valori di ROS. | – |
| rigsmtr | Misurazione del livello del segnale (S-meter) tramite radio; esegue una scansione della gamma di frequenza e registra i valori misurati. | – |
| rigma | Eseguire il backup, il ripristino e la manipolazione del contenuto dei canali di memoria del ricetrasmettitore. | – |
Comandi per Rigctl E rigoctld sono condivisi – una lettera maiuscola di solito indica set príkaz (napr. F per set_freq), minuscolo get príkaz (napr. f per get_freq). L'assegnazione del modello radio viene effettuata tramite un interruttore ID -m, la porta seriale è specificata dall'interruttore -r /dev/ttyUSBx (Linux) o -r COMx (Windows).
Controllo dei dispositivi di rete Hamlib tramite TCP
Il controllo della rete è parte integrante di Hamlib. Demoni TCP rigoctld E rotctld utilizzano un semplice protocollo di testo: i comandi vengono inviati come stringhe ASCII, le risposte ai comandi get vengono restituite come valori riga per riga, le condizioni di errore come RPRT x kde x è un codice di errore negativo. I daemon consentono a più client di connettersi simultaneamente.
Procedura pratica: avviare il demone per Kenwood K3 sul primo adattatore USB-seriale:
rigoctld -m 229 -r /dev/ttyUSB0 &
Successivamente, qualsiasi programma compatibile con Hamlib viene configurato per Net rigctl (model 2) s adresou localhost:4532In questo modo, WSJT-X, Fldigi e CQRlog possono condividere una radio fisica senza conflitti di porta seriale. Oltre al protocollo standard, supporta rigoctld È presente anche la versione estesa dell'Extended Response Protocol, che restituisce il comando ricevuto come intestazione e i valori come coppie chiave:valore, adatta ai client che accedono al demone direttamente tramite un socket TCP senza la libreria Hamlib.
Per i programmatori: le applicazioni scritte sull'API Hamlib C/C++ possono accedere ai daemon tramite modelli di backend. NET rigctl a NET rotctl (model 2 pre oba typy zariadení). Nastavenie zo strany aplikácie pozostáva z výberu modelu 2, zadania nome host:porta come ad esempio le impostazioni relative ai dispositivi, alla velocità di trasmissione e ai bit di stop all'avvio del demone.
Video
Il seguente video (WA4EFS) mostra un client GUI che si connette al listener TCP rigctld e consente di testare e utilizzare in modo interattivo l'interfaccia CAT del ricetrasmettitore:
Un video di AG7GN (Western Washington DX Club) illustra l'integrazione di Hamlib, Fldigi e FLrig, inclusa la configurazione di rigctld come backend di controllo comune per più applicazioni contemporaneamente:
Il video mostra l'installazione di Hamlib 4.1 dai sorgenti su un Raspberry Pi: una procedura utile a chiunque voglia avere l'ultima versione del backend prima che sia disponibile nel repository di distribuzione.
Novità in Hamlib: modifiche selezionate dalle versioni recenti
La versione 4.6.4 (rilasciata il 18 luglio 2025, in occasione del 25° anniversario del progetto Hamlib) ha corretto la gestione dei caratteri non stampabili in Kenwood.c, che causava il malfunzionamento di TM-D710 e TM-V71 che utilizzavano EOM_TH (\r) come terminatore di comando. È stata corretta una perdita di memoria in rigctl_parse.ca ed è stato introdotto un carattere separatore univoco per ogni connessione rigctld. La versione è stata dedicata alla memoria di Michael Black, W9MDB (SK), collaboratore di lunga data e responsabile del progetto dal 2020 al 2025.
Tra le recenti modifiche apportate al ramo master (verso la versione 4.7), le seguenti novità sono rilevanti secondo il file NEWS:
Hamlib esegue un server multicast che invia informazioni sullo stato della radio (la ricezione dei comandi non è ancora implementata). Il supporto è stato aggiunto --bind-all -B) per rigoctld per collegarsi a tutte le interfacce di rete disponibili – risolve le istanze duplicate rigoctld su Windows. I ricetrasmettitori Yaesu possono essere invia_Morse inviare i messaggi del keyer 1–5 o CW správu do 50 znakov. Príkaz livello di impostazione del rig MISURATORE accetta argomenti 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 ottenere/impostare_GPIO In Rigctl/rigoctldFunzione rigoctld ti consente di iniziare facoltativamente con autopower_on=0, che impedisce i timeout all'avvio quando il ricetrasmettitore è spento. È stata aggiunta la protezione con password opzionale per rigoctld tramite interruttore - E , dove il client si autentica con il comando \password.
Dove scaricare e come contribuire
La versione stabile corrente di Hamlib 4.7.1 è disponibile all'indirizzo GitHub e SourceForge. I pacchetti per Windows a 32 e 64 bit sono disponibili in formato ZIP o come file EXE autoestraenti. Gli snapshot giornalieri dei rami master e stable sono disponibili su hamlib.sourceforge.net/snapshots/. Per discussioni e supporto tecnico, è possibile consultare la mailing list hamlib-developer (SourceForge) e il canale IRC #hamlib su irc.oftc.net. Le correzioni vengono inviate tramite pull request su GitHub o patch alla mailing list.
