Hamlib ist ein Open-Source-Projekt, das Programmierern eine einheitliche Programmierschnittstelle (API) zur Steuerung von Amateurfunkgeräten wie Transceivern, Rotatoren und Verstärkern bietet. Das Projekt wurde im Jahr 2000 von Frank Singleton, VK3FCS/KM5WS, und Stéphane Fillod, F8CFE, gegründet. Hamlib ist keine fertige Anwendung, sondern eine Softwareschicht – eine Bibliothek –, die für Entwickler von Logbuchprogrammen, Software für digitale Betriebsarten, Fernsteuerungs- und anderen Steuerungsanwendungen gedacht ist. Dadurch können sich Softwareentwickler auf die Programmfunktionen und die Schnittstellenlogik konzentrieren, anstatt CAT-Befehle für jedes Funkgerät einzeln zu implementieren.
Im Artikel werden Sie lesen
Wozu dient Hamlib und warum ist es wichtig?
Die meisten modernen Transceiver ermöglichen die externe Steuerung über eine serielle Schnittstelle. Das Problem besteht darin, dass die Befehle weder innerhalb eines Herstellers noch zwischen verschiedenen Herstellern einheitlich sind. Hamlib löst dieses Problem, indem es Anwendungen ein „virtuelles Funkgerät“ mit einer einheitlichen API bereitstellt – einer Abstraktion, über die Frequenzeinstellung, Betriebsart usw. gesteuert werden können. 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 oder ein anderes unterstütztes Funkgerät.

Ohne Hamlib müsste jedes Programm die Steuerung jedes Funkgeräts separat implementieren. Mit Hamlib benötigt ein Entwickler lediglich Unterstützung für die Hamlib-API – und erhält sofort Zugriff auf alle von Hamlib unterstützten Geräte. Sobald Hamlib ein neues Backend hinzufügt, erhalten alle darauf basierenden Anwendungen automatisch Unterstützung für dieses Funkgerät, ohne dass sie ihren eigenen Code ändern müssen.
Hamlib bietet Sprachbindungen für C, C++, Perl, Python 2 und 3, Lua und TCL. Die zum Zeitpunkt der Erstellung dieses Dokuments stabile Version ist Hamlib 4.7.1. Tägliche Snapshots sowohl des Master-Branches als auch des stabilen Branches Hamlib-4.7 sind für Linux (Quellcode-Archive) und Windows (32/64 Bit) verfügbar.
Unterstützte Geräte

Das Hamlib Wiki unterteilt die unterstützten Geräte in drei Kategorien: Amateurfunkgeräte (Unterstützte Funkgeräte), Antennenrotatoren (Unterstützte Rotatoren) und Linearverstärker (Unterstützte Verstärker). Die Liste der unterstützten Funkgeräte wird ständig erweitert und umfasst Geräte von Herstellern wie Yaesu, Icom, Kenwood, Elecraft, FlexRadio, TenTec, Alinco, Aor, Drake, JRC, Lowe, Skanti, Uniden, Vertex und vielen anderen. Zu den unterstützten Rotatoren gehören unter anderem die Yaesu G-Serie, Hy-Gain, SPID und M2 Orion. Eine Liste aller verfügbaren Modelle wird mit dem Befehl angezeigt. rigctl --list jeweils. rotctl --list.
Die Bibliothek ist für Geräte mit einem Port und einem Befehlsprotokoll (CAT, CI-V usw.) zur Einstellung von Frequenz, Betriebsart, VFO, PTT und anderen Parametern vorgesehen. Geräte, die keine serielle Steuerung unterstützen und nur das Klonen von Speicherdaten ermöglichen (die meisten VHF/UHF-FM-Transceiver), fallen nicht unter den Anwendungsbereich von Hamlib – für diese Geräte wird das CHIRP-Projekt empfohlen.
FAQ: Häufig gestellte Fragen
Was ist Hamlib in Kürze?
Hamlib ist eine in C geschriebene, verlinkbare Subroutinenbibliothek, die primär mit GNU-Tools unter Linux entwickelt wurde, aber auch unter Windows und macOS kompiliert und lauffähig ist. Ziel ist es, eine geräteunabhängige API bereitzustellen, die es Anwendungsentwicklern ermöglicht, Software unabhängig von einem bestimmten Funkgerätmodell zu schreiben.
Für wen ist Hamlib gedacht?
Vor allem für Programmierer, die Anwendungen schreiben für 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 und ähnliche Anwendungen.
Kann ich Hamlib gleichzeitig in zwei Programmen verwenden?
Es kann immer nur ein Programm gleichzeitig auf die serielle Schnittstelle zugreifen. Die Lösung lautet: rigctld – ein Netzwerk-Daemon, der auf das Funkmodul zugreift und über das TCP-Protokoll mit Clients kommuniziert. Er wird mit dem Befehl gestartet. rigctld -m 210 -r /dev/ttyS1 & und dann verbindet sich jedes Programm damit wie mit Modell 2 (NET rigctl).
Was passiert, wenn es zu einem Timeout am seriellen Port kommt?
Das Problem kann durch eine CAT-Schnittstelle verursacht werden, die über RTS/CTS/DTR-Leitungen versorgt wird. Bei Ausführung eines Einzelschrittbefehls sind die Elektrolytkondensatoren der Schnittstelle noch nicht geladen. Die Lösung ist ein Schalter. -C rts_state=ON, wodurch RTS aktiviert und die Schnittstelle eingeschaltet werden muss, bevor der erste Befehl gesendet wird.
Wie kann ich mein eigenes Programm mit Hamlib verknüpfen?
Hamlib verwendet pkg-configDie Kompilierung erfolgt beispielsweise durch den Befehl gcc -o myprog `pkg-config --cflags --libs Weiler` myprog.cFür Autoconf/Automake-Projekte gibt es ein Makro. PKG_CHECK_MODULES(Weiler, Weiler, ...).
Hamlib-Dienstprogramme: Ein Überblick über die Kommandozeilenwerkzeuge
| Dienstprogramm | Beschreibung | Standard-TCP-Port |
|---|---|---|
| Rigctl | Interaktive oder skriptgesteuerte Steuerung des Transceivers über die Kommandozeile. Öffnet den seriellen/USB-Anschluss direkt – es kann jeweils nur ein Programm den Anschluss nutzen. | – |
| rigctld | TCP-Daemon für Transceiver. Öffnet einen seriellen Port und ermöglicht die Steuerung eines TCP-Sockets. Unterstützt mehrere gleichzeitige Client-Verbindungen. Gemeinsame Steuerung für WSJT-X, Fldigi, CQRlog und weitere Geräte. | 4532 |
| rotctl | Interaktive oder skriptgesteuerte Steuerung des Antennenrotators über die Kommandozeile. | – |
| rotctld | TCP-Daemon für Rotatoren. Gleiches Prinzip wie rigctld für Transceiver. | 4533 |
| ampctl | Steuerung eines Linearverstärkers über die Kommandozeile. | – |
| ampctld | TCP-Daemon für Linearverstärker. | 4534 |
| rigctlcom | COM-Port-Emulation für Programme, die keine Verbindung zum TCP-Socket von rigctld herstellen können, aber einen nativen seriellen Port benötigen. | – |
| rigswr | SWR-Messung mit einem Funkgerät; der Transceiver scannt den Frequenzbereich, sendet und speichert die SWR-Werte. | – |
| rigsmtr | Signalpegelmessung (S-Meter) mit einem Funkgerät; scannt den Frequenzbereich und zeichnet die Messwerte auf. | – |
| Rigma | Sichern, Wiederherstellen und Bearbeiten der Inhalte von Transceiver-Speicherkanälen. | – |
Befehle für Rigctl Und rigctld werden geteilt – ein Großbuchstabe deutet normalerweise darauf hin set príkaz (napr. F für set_freq), Kleinbuchstaben get príkaz (napr. f (für get_freq). Die Zuordnung des Funkmodells erfolgt über einen Schalter. -m IDDer serielle Port wird durch den Schalter festgelegt. -r /dev/ttyUSBx (Linux) oder -r COMx (Windows).
Hamlib-Netzwerkgerätesteuerung über TCP
Netzwerksteuerung ist ein integraler Bestandteil von Hamlib. TCP-Daemons. rigctld Und rotctld Sie verwenden ein einfaches Textprotokoll – Befehle werden als ASCII-Zeichenketten gesendet, Antworten auf Befehle werden zeilenweise zurückgegeben, Fehlerbedingungen als RPRT x kde x ist eine negative Fehlercodenummer. Daemons ermöglichen es mehreren Clients, sich gleichzeitig zu verbinden.
Praktische Vorgehensweise: Starten des Daemons für Kenwood K3 auf dem ersten USB-Seriell-Adapter:
rigctld -m 229 -r /dev/ttyUSB0 &
Anschließend wird jedes Hamlib-kompatible Programm so konfiguriert, dass Net rigctl (model 2) s adresou localhost:4532Dadurch können WSJT-X, Fldigi und CQRlog ein gemeinsames Funkgerät nutzen, ohne dass es zu Konflikten mit der seriellen Schnittstelle kommt. Zusätzlich zum Standardprotokoll unterstützt es weitere Funktionen. rigctld außerdem gibt es das erweiterte Extended Response Protocol, das den empfangenen Befehl als Header und die Werte als Schlüssel-Wert-Paare zurücksendet – geeignet für Clients, die ohne die Hamlib-Bibliothek direkt über einen TCP-Socket auf den Daemon zugreifen.
Für Programmierer: Anwendungen, die auf der Hamlib C/C++ API basieren, können über Backend-Modelle auf Daemons zugreifen. 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 wie z. B. Geräte- und Baudrateneinstellungen sowie Stoppbit-Einstellungen beim Starten des Daemons.
Videos
Das folgende Video (WA4EFS) demonstriert einen GUI-Client, der sich mit dem rigctld TCP-Listener verbindet und interaktives Testen und die Nutzung der CAT-Schnittstelle des Transceivers ermöglicht:
Ein Video von AG7GN (Western Washington DX Club) behandelt die Integration von Hamlib, Fldigi und FLrig – einschließlich der Einrichtung von rigctld als gemeinsames Steuerungs-Backend für mehrere Anwendungen gleichzeitig:
Das Video zeigt die Installation von Hamlib 4.1 aus den Quellen auf einem Raspberry Pi – ein Verfahren, das für jeden relevant ist, der das neueste Backend haben möchte, bevor es im Distributions-Repository verfügbar ist:
Neu in Hamlib – ausgewählte Änderungen gegenüber den letzten Versionen
Version 4.6.4 (veröffentlicht am 18. Juli 2025, dem 25. Jahrestag des Hamlib-Projekts) behob einen Fehler in der Verarbeitung nicht druckbarer Zeichen in Kenwood.c, der dazu führte, dass TM-D710 und TM-V71, die EOM_TH (\r) als Befehlsabschlusszeichen verwendeten, nicht mehr funktionierten. Außerdem wurde ein Speicherleck in rigctl_parse.ca behoben und für jede rigctld-Verbindung ein eindeutiges Trennzeichen eingeführt. Diese Version ist Michael Black, W9MDB (SK), gewidmet, einem langjährigen Mitwirkenden und Projektleiter von 2020 bis 2025.
Von den jüngsten Änderungen im Master-Branch (Richtung Version 4.7) sind laut der NEWS-Datei folgende Neuigkeiten relevant:
Hamlib betreibt einen Multicast-Server, der Informationen über den Status des Funkgeräts sendet (Befehlsempfang ist noch nicht implementiert). Unterstützung wurde hinzugefügt. --bind-all (-B) für rigctld Bindung an alle verfügbaren Netzwerkschnittstellen – behebt doppelte Instanzen rigctld Unter Windows. Yaesu-Transceiver können sein send_Morse Senden Sie die Keyer-Nachrichten 1–5 oder CW správu do 50 znakov. Príkaz Rig-Set-Pegelmesser akzeptiert die Argumente 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 erhalten/set_GPIO In Rigctl/rigctldFunktion rigctld ermöglicht es Ihnen, optional mit Folgendem zu beginnen: autopower_on=0Dies verhindert Timeouts beim Start, wenn der Transceiver ausgeschaltet ist. Optionaler Passwortschutz wurde hinzugefügt für rigctld über Schalter - Und , wobei sich der Client mit dem Befehl authentifiziert \Passwort.
Wo man es herunterladen und wie man mitwirken kann
Die aktuelle stabile Version von Hamlib 4.7.1 ist verfügbar unter GitHub und SourceForge. Pakete für Windows (32- und 64-Bit) sind als ZIP- oder selbstextrahierende EXE-Dateien verfügbar. Tägliche Snapshots des Master- und des Stable-Branches finden Sie unter hamlib.sourceforge.net/snapshots/. Diskussionen und technischer Support werden auf der Mailingliste hamlib-developer (SourceForge) und im IRC-Kanal #hamlib auf irc.oftc.net angeboten. Fehlerbehebungen können per GitHub-Pull-Request oder Patch an die Mailingliste übermittelt werden.
