Flrig on Linux — Complete Rig Control Front-End Setup and Guide
Flrig is a graphical rig control application for Linux that acts as a front-end and broker between your radio and multiple amateur radio programs. This complete guide covers installation on Ubuntu and Debian, connecting your radio, configuring Flrig as a shared rig control server, integrating with Fldigi, WSJT-X, CQRLog, and other applications, understanding the interface panels, using band memories and transverter offsets, running as a systemd service, and troubleshooting common problems.
- What is Flrig and why use it
- Installation on Ubuntu and Debian
- Connecting your radio
- Understanding the Flrig interface
- Flrig as a shared rig control server
- Integration with Fldigi
- Integration with WSJT-X and JTDX
- Integration with CQRLog
- Operating guide — using Flrig during a session
- Band memories and quick QSY
- Transverter frequency offsets
- Running Flrig as a systemd service
- Flrig vs rigctld — which to use
- Troubleshooting common problems
- Frequently asked questions
What is Flrig and why use it
Flrig is a rig control application written by Dave Freese W1HKJ — the same developer who wrote Fldigi. It connects directly to your radio's CAT port and exposes control to other applications through a built-in XML-RPC server on port 12345. Multiple applications can connect to Flrig simultaneously and read or change the radio's frequency, mode, and other parameters.
The key distinction from rigctld (Hamlib's daemon) is that Flrig provides a graphical display. When Flrig is running you can see the radio's current frequency, mode, S-meter, power output, and other parameters at a glance. You can also control the radio directly from the Flrig interface — change bands, adjust the VFO, save memories — without touching the physical radio or opening any other application.
Flrig is tightly integrated with Fldigi — they share the same XML-RPC communication protocol and are designed to work together. If your primary digital mode software is Fldigi, Flrig is the natural rig control companion. For setups centred on WSJT-X or other software rigctld is often simpler.
What Flrig provides
- Visual rig display — frequency, mode, S-meter, power, ALC in a compact panel
- Shared rig control server — XML-RPC server on port 12345 serves multiple clients simultaneously
- Direct radio control — tune the VFO, change mode and bandwidth from the Flrig interface
- Band memories — save and recall frequency/mode combinations for common operating frequencies
- Transverter support — apply frequency offsets for VHF/UHF transverters connected to HF radios
- PTT control — key the transmitter via CAT, RTS, or DTR
- Polling control — configurable update rate balances responsiveness against CAT bus load
Installation on Ubuntu and Debian
Ubuntu 22.04, 24.04 and Debian 11, 12
sudo apt update
sudo apt install flrig
Flrig is in the standard repositories for all current Ubuntu and Debian releases. Installing it also pulls in the Hamlib library it depends on for rig communication.
Build from source (latest version)
The repository version may lag the latest release from W1HKJ's site. For the most current rig support and bug fixes build from source:
sudo apt install build-essential libfltk1.3-dev \
libhamlib-dev libxft-dev libxinerama-dev \
libpng-dev libsndfile1-dev
# Check w1hkj.com for the current version number
wget http://www.w1hkj.com/files/flrig/flrig-2.0.04.tar.gz
tar xzf flrig-2.0.04.tar.gz
cd flrig-2.0.04
./configure
make -j$(nproc)
sudo make install
Verify installation
flrig --version
Connecting your radio
Flrig connects to your radio via a serial port (USB or RS-232) using the radio's CAT protocol. Configuration is done through the Flrig interface on first launch.
Initial setup
- Launch Flrig:
flrig & - Go to Config → Setup → Xcvr
- Select your radio model from the Xcvr dropdown — over 100 radios are supported
- Set the Serial Port to your radio's port — usually
/dev/ttyUSB0 - Set the Baud Rate to match your radio's CAT baud rate setting
- Click Initialize — Flrig connects to the radio and the frequency display updates
Serial port permissions
sudo usermod -a -G dialout
# Log out and back in for the change to take effect
Radio settings by model
| Radio | Flrig name | Baud rate | Notes |
|---|---|---|---|
| Icom IC-7300 | IC-7300 | 19200 | Most popular — built-in USB |
| Icom IC-7610 | IC-7610 | 19200 | Dual receiver |
| Icom IC-705 | IC-705 | 19200 | QRP portable |
| Icom IC-9700 | IC-9700 | 19200 | VHF/UHF/satellite |
| Yaesu FT-991A | FT-991A | 38400 | All-band |
| Yaesu FTDX-10 | FTDX-10 | 38400 | SDR-based HF |
| Yaesu FTDX-101D | FTDX-101D | 38400 | High-end HF |
| Kenwood TS-890S | TS-890S | 115200 | High-end with roofing filters |
| Kenwood TS-590SG | TS-590SG | 115200 | Mid-range HF |
| Elecraft K3/K3S | K3 | 38400 | Contest radio |
| Elecraft KX3 | KX3 | 38400 | QRP portable |
| Xiegu G90 | G90 | 19200 | Budget portable HF |
PTT configuration
Configure PTT in Config → Setup → PTT:
- CAT PTT — sends PTT command via the CAT interface. Recommended for modern radios with USB CAT.
- RTS — uses the RTS line of a serial port. Requires a PTT interface circuit.
- DTR — uses the DTR line. Alternative to RTS.
- None — PTT is handled elsewhere (e.g. VOX on the radio, or by the application).
Understanding the Flrig interface
Flrig's main window is a compact panel showing key radio parameters. The layout varies slightly between versions but the core elements are consistent.
Main display elements
- Frequency display — large numeric display showing current VFO frequency. Click digits to change them. Mouse wheel scrolls the frequency in configurable steps.
- Band selector — buttons for each HF band plus VHF/UHF. Click to QSY to the last used frequency on that band.
- Mode selector — dropdown or buttons for mode selection (USB, LSB, CW, FM, AM, DATA, etc.)
- S-meter — signal strength meter updated from the radio via CAT polling.
- Power/ALC meter — transmit power and ALC deflection during transmit.
- VFO A/B buttons — switch between the two VFOs.
- Split button — enables split operation (transmit on VFO-B, receive on VFO-A).
- Memories — dropdown or buttons for saved band memories.
Polling rate
Flrig polls the radio at a configurable rate to keep the display current. Configure it under Config → Setup → Poll. A rate of 200ms (5 updates/second) is responsive without overloading the CAT bus. Lower rates (500ms or 1 second) reduce CAT traffic on radios with slower serial connections.
Tooltips and help
Hover over any control in Flrig for a tooltip explaining its function. The Flrig documentation is also available in HTML format — check /usr/share/doc/flrig/ after installation.
Flrig as a shared rig control server
When Flrig is running it automatically starts an XML-RPC server on port 12345. Any application that supports Flrig as a rig control backend can connect to this server and read or control the radio.
How the server works
Flrig holds the serial port connection to the radio. Connected applications send XML-RPC calls to http://localhost:12345/RPC2 to read or change the radio's state. Flrig serializes these calls so multiple applications can use the radio simultaneously without serial port conflicts.
Verifying the server is running
# Check that Flrig is listening on port 12345
netstat -tlnp | grep 12345
# or
ss -tlnp | grep 12345
# Test a simple XML-RPC call to get frequency
python3 -c "
import xmlrpc.client
proxy = xmlrpc.client.ServerProxy('http://localhost:12345/RPC2')
print('Frequency:', proxy.rig.get_vfo())
"
Applications that connect to Flrig
| Application | Setting location | Value |
|---|---|---|
| Fldigi | Configure → Rig Control → Flrig | Enable "Use Flrig xcvr control" |
| WSJT-X | Settings → Radio → Rig | Select "Flrig" from dropdown |
| JTDX | Settings → Radio → Rig | Select "Flrig" from dropdown |
| CQRLog | Settings → TRX Control | Select Flrig, host localhost:12345 |
Integration with Fldigi
Flrig and Fldigi are written by the same developer and designed to work together. The integration is the tightest of any two ham radio applications on Linux.
Connecting Fldigi to Flrig
- Start Flrig first and verify it is connected to your radio
- In Fldigi go to Configure → Rig Control
- Select the Flrig tab
- Enable Use Flrig xcvr control
- Verify the Flrig XML-RPC address is
localhost:12345 - Click Initialize — Fldigi connects to Flrig and the frequency in Fldigi's waterfall header updates to match the radio
What the Fldigi-Flrig integration provides
- Fldigi waterfall center frequency tracks the radio's VFO automatically
- Clicking on a signal in the Fldigi waterfall updates Flrig's display
- Mode changes in Fldigi are sent to the radio via Flrig
- PTT from Fldigi keys the transmitter via Flrig's PTT configuration
- The S-meter in Fldigi displays the radio's actual S-meter reading via Flrig
Typical Fldigi + Flrig workflow
- Start Flrig — it connects to the radio and shows the current frequency
- Start Fldigi — it automatically connects to Flrig
- Tune the radio to your operating frequency — Fldigi's waterfall follows
- Click signals in the Fldigi waterfall — the audio frequency offset adjusts but the radio frequency stays fixed
- When you want to QSY to a completely different frequency, change it in Flrig or on the radio directly
Integration with WSJT-X and JTDX
WSJT-X and JTDX both support Flrig as a rig control backend since version 2.1. This allows them to share the radio with Fldigi and CQRLog through the same Flrig instance.
Connecting WSJT-X to Flrig
- Make sure Flrig is running and connected to your radio
- In WSJT-X go to File → Settings → Radio
- In the Rig dropdown select Flrig
- The port field should auto-populate with
localhost:12345— verify this - Set PTT Method to CAT — WSJT-X will send PTT commands via Flrig
- Click Test CAT — the button should turn green if Flrig is responding
- Click Test PTT — verifies PTT works through the Flrig connection
Sharing Flrig between Fldigi and WSJT-X
Only one of Fldigi or WSJT-X should be transmitting at any given time, but both can run simultaneously and read frequency and mode from Flrig. A practical workflow:
- Both programs show the current radio frequency from Flrig
- Switch between digital mode programs by simply starting one and closing the other — Flrig keeps the serial connection alive throughout
- No need to reconfigure rig control when switching programs
Integration with CQRLog
CQRLog can connect to Flrig for rig control instead of using Hamlib directly. This is useful when Flrig is already running for Fldigi and you want CQRLog to read the same frequency without starting a separate Hamlib connection.
Connecting CQRLog to Flrig
- In CQRLog go to Settings → TRX Control
- Set the rig type to Flrig
- Host:
localhost - Port:
12345 - Click Connect
CQRLog now reads the current frequency and mode from Flrig when logging contacts, filling them in automatically without requiring separate Hamlib rig control configuration.
Operating guide — using Flrig during a session
Starting a session
- Start Flrig first:
flrig &or from the application menu - Verify the frequency display matches your radio — if not check the connection in Config → Setup → Xcvr
- Start your digital mode software (Fldigi, WSJT-X) — they connect to Flrig automatically if configured
- Start CQRLog — it connects to Flrig for frequency logging
Band changing during operation
Click any band button in Flrig to QSY to the last remembered frequency on that band. Flrig stores the frequency and mode for each band separately so switching back and forth is fast. All connected applications (Fldigi, WSJT-X, CQRLog) update their displays immediately when you change bands in Flrig.
Monitoring while transmitting
The S-meter in Flrig drops to zero when you transmit (the radio is in transmit mode). The power meter and ALC meter activate during transmit to show your RF output level. Watch the ALC — it should deflect minimally for clean digital mode operation.
Checking radio parameters remotely
With Flrig running you can check and change radio parameters without touching the radio. This is particularly useful for remote operation setups or when the radio is rack-mounted and not easily accessible.
Band memories and quick QSY
Flrig supports band memories — saved frequency and mode combinations that you can recall with a single click. These are more fine-grained than the band buttons which just remember the last frequency on each band.
Saving a memory
- Tune to the frequency and mode you want to save
- Go to Config → Memory
- Click Add to save the current frequency and mode with a label
- Enter a descriptive label — e.g. "20m FT8", "40m CW DX", "2m SSB calling"
Recalling a memory
Click the memory dropdown or memory buttons panel and select the saved memory. Flrig sends the stored frequency and mode to the radio immediately. All connected applications update to the new frequency.
Useful memories to set up
- 20m FT8 — 14.074 MHz, USB/DATA
- 40m FT8 — 7.074 MHz, USB/DATA
- 20m PSK31 — 14.070 MHz, USB
- 20m CW calling — 14.025 MHz, CW
- 40m SSB DX — 7.195 MHz, LSB
- 2m SSB calling — 144.300 MHz, USB
- APRS — 144.390 MHz, FM (North America)
Transverter frequency offsets
Many VHF and microwave operators use an HF transceiver as the IF radio for a transverter — a device that converts HF frequencies to VHF or microwave. Flrig supports frequency offsets so the display shows the actual operating frequency rather than the IF frequency.
Configuring a transverter offset
- Go to Config → Transverter
- Enter the transverter offset frequency in Hz
- Enable the offset
- Flrig adds the offset to the displayed frequency — if your radio is on 28.150 MHz and the transverter shifts to 144.150 MHz, enter an offset of 116,000,000 Hz
Connected applications (Fldigi, CQRLog) receive the offset frequency, so log entries show the correct 2m frequency rather than the IF frequency. This is important for accurate ADIF export and LoTW upload — the logged frequency must match your actual operating frequency.
Running Flrig as a systemd service
For a permanent station setup where Flrig should always be running, configure it as a systemd service. Because Flrig has a graphical interface it requires a display — use Xvfb for headless operation.
Service file for desktop systems (with display)
[Unit]
Description=Flrig rig control
After=network.target
Wants=graphical.target
[Service]
User=hamradiobase
Environment=DISPLAY=:0
ExecStart=/usr/bin/flrig
Restart=on-failure
RestartSec=5
[Install]
WantedBy=graphical.target
Service file for headless systems (with Xvfb)
[Unit]
Description=Flrig rig control (headless)
After=network.target
[Service]
User=hamradiobase
Environment=DISPLAY=:99
ExecStartPre=/usr/bin/Xvfb :99 -screen 0 800x600x24
ExecStart=/usr/bin/flrig
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo apt install xvfb
sudo systemctl daemon-reload
sudo systemctl enable flrig
sudo systemctl start flrig
sudo systemctl status flrig
Flrig vs rigctld — which to use
| Feature | Flrig | rigctld |
|---|---|---|
| Graphical display | Yes — frequency, S-meter, ALC | No — headless only |
| Protocol | XML-RPC (port 12345) | Hamlib NET (port 4532) |
| Fldigi integration | Native — designed together | Works via Hamlib |
| WSJT-X integration | Yes — since WSJT-X 2.1 | Yes — via NET rigctl |
| CQRLog integration | Yes | Yes |
| TLF integration | Not directly | Yes — RIGCTLD parameter |
| Headless operation | Via Xvfb — complex | Native — designed for headless |
| Band memories | Yes — built in | No |
| Transverter offset | Yes — built in | Via Hamlib parameter |
| Resource usage | Moderate (FLTK GUI) | Very low |
| Raspberry Pi | Works — Pi 3B+ and up | Works on Pi Zero |
Recommendation by use case
- Primary software is Fldigi — use Flrig. The integration is the tightest and Flrig was designed for this combination.
- Primary software is WSJT-X — either works. rigctld is simpler if you do not need the visual display.
- Mixed Fldigi + WSJT-X station — use Flrig. Both connect to it and you get the visual display for free.
- Headless server or Raspberry Pi — use rigctld. Lighter, no display required, simpler setup.
- TLF contesting — use rigctld. TLF's RIGCTLD parameter connects directly to rigctld.
- Transverter operation — use Flrig. The built-in transverter offset feature is very convenient.
Troubleshooting common problems
Flrig won't connect to the radio
- Check that your user is in the dialout group:
groups | grep dialout - Verify the serial port:
ls /dev/ttyUSB* - Check the baud rate matches the radio's CAT menu setting exactly
- Verify the correct radio model is selected in Config → Setup → Xcvr
- Check that no other application (rigctld, CQRLog, Fldigi) is already holding the serial port
- Try clicking Initialize again after checking settings
Fldigi cannot connect to Flrig
- Start Flrig before Fldigi — Fldigi attempts to connect on startup
- Verify Flrig is listening:
ss -tlnp | grep 12345 - In Fldigi go to Configure → Rig Control → Flrig and click Initialize to retry
- Check that the Flrig address in Fldigi is
localhost:12345
WSJT-X Test CAT button stays red
- Confirm Flrig is running and connected to the radio
- In WSJT-X Settings → Radio verify Rig is set to "Flrig" not another option
- Verify the network address shows
localhost:12345 - Check firewall is not blocking localhost port 12345:
sudo ufw allow 12345/tcp
Frequency display updates slowly
- Increase the polling rate in Config → Setup → Poll — reduce the poll interval to 100–200ms
- Check the radio's CAT response speed — some radios (older Yaesus) have slow CAT implementations
- Reduce the number of parameters being polled — disable S-meter polling if you do not need it
PTT not working through Flrig
- Check PTT method in Config → Setup → PTT — should be CAT for most modern radios
- Test PTT manually: click and hold the PTT button in Flrig's interface
- Verify the radio is not in a menu or setup mode that disables CAT PTT
- Try changing PTT to RTS or DTR as a test — if one works the CAT PTT may not be supported by your radio model
Flrig crashes on startup
- Delete the Flrig configuration and start fresh:
rm -rf ~/.flrig - Run from terminal to see error output:
flrig - Check for missing FLTK library:
ldd $(which flrig) | grep "not found"
Frequently asked questions
Do I need both Flrig and Hamlib installed?
Flrig depends on Hamlib internally — installing Flrig automatically installs the required Hamlib libraries. You do not need to separately install rigctld or any other Hamlib tools unless you want to use them alongside Flrig. Applications that connect to Flrig use its XML-RPC protocol on port 12345, not Hamlib's NET rigctl protocol on port 4532.
Can I run Flrig and rigctld at the same time?
No — both need exclusive access to the serial port, so you can only run one at a time for a given radio. Choose one and configure all your applications to use it. If you primarily use Fldigi use Flrig. If you primarily use WSJT-X or TLF use rigctld. If you use both equally either works — many operators pick one and stick with it.
Does Flrig work with the IC-7300?
Yes — the IC-7300 is one of the most thoroughly tested radios with Flrig. Select IC-7300 in Config → Setup → Xcvr, set the port to /dev/ttyUSB0, and baud rate to 19200. Make sure your user is in the dialout group. Flrig reads frequency, mode, S-meter, and power from the IC-7300 and controls all of these via CAT. PTT also works via CAT — no additional wiring needed.
What port does Flrig use?
Flrig's XML-RPC server listens on port 12345 by default. This is different from rigctld which uses port 4532. Make sure your firewall allows connections on port 12345 if you are connecting from another machine on the network. For local connections (everything on the same machine) no firewall changes are needed as long as the connection is to localhost.
Can Flrig control my antenna rotor?
No — Flrig is a transceiver control application only. For antenna rotor control use rotctld from the Hamlib package, which provides the same shared-daemon functionality for rotors that rigctld provides for transceivers. rotctld listens on port 4533 and is supported by Predict, Gpredict, and other tracking applications.
How is Flrig different from a physical rig controller?
A physical rig controller is hardware that connects between your computer and radio. Flrig is software that provides a graphical display and network server for rig control — it still uses the radio's existing USB or serial CAT interface. Flrig adds value over the basic Hamlib daemon (rigctld) by providing a visual display, band memories, and transverter offset support, but it is not a replacement for the physical connection between computer and radio.