Description

The Hamlib project's purpose is to develop flexible and portable shared libraries that offer a standardized API to control any radio oriented equipment through a computer interface.
Introduction
The Ham Radio Control Libraries, Hamlib for short, is a development effort to provide a consistent interface for programmers wanting to incorporate radio control in their programs. Hamlib is not a complete user application, rather, it is a software layer intended to make controlling various radios and other shack hardware much easier. Hamlib will allow authors of such software as logging programs, digital communications programs, or those wanting to develop the ultimate radio control software to concentrate on the user interface and the basic function of the program rather than radio control.
Radios with a clone capability
Hamlib's focus is on controlling rigs that employ a port and command protocol for setting frequency, mode, VFO, PTT, etc. Most VHF/UHF transceivers do not employ such control capability but do provide for cloning the memory contents from radio to another of the same model. A related project, CHIRP, aims to support rigs with such a clone capability. Please contact the CHIRP project for support of such rigs.
Motivation
Most recent amateur radio transceivers allow external control of their functions through a serial interface. Unfortunately, control commands are not always consistent across a manufacturer's product line and each manufacturer's product line differs greatly from its competitors.
Hamlib attempts to solve this problem by presenting a "virtual radio" to the programmer by providing an API to actions such as setting a given VFO's frequency, setting the operating mode, querying the radio of its current status and settings, and giving the application a list of a given radio's capabilities. Unfortunately, what can be accomplished by Hamlib is limited by the radios themselves and some offer very limited capability.
Other devices, such as antenna rotators, can be placed into the hamlib control scheme. Other recent developments include network interface servers and a USB interface capability. Language bindings are provided for C, C++, Perl, Python, and TCL (more to come).