Xlog on Linux — Lightweight Ham Radio Logger Setup and Operating Guide
Xlog is a fast, simple QSO logger for Linux that does one thing well — log contacts quickly and export them in ADIF format. This complete guide covers installation on Ubuntu, Debian, and Raspberry Pi, station setup, Hamlib rig control, keyboard shortcuts for fast logging, ADIF export for LoTW, field day and portable operating tips, and how Xlog compares to CQRLog.
- What is Xlog and who it is for
- Installation on Ubuntu, Debian and Raspberry Pi
- Initial setup and station configuration
- Rig control with Hamlib
- Understanding the Xlog interface
- Operating guide — fast contact logging
- Keyboard shortcuts reference
- ADIF export, import and LoTW upload
- Portable and field day operating
- Xlog on Raspberry Pi
- Xlog vs CQRLog — which to choose
- Troubleshooting common problems
- Frequently asked questions
What is Xlog and who it is for
Xlog is a GTK-based QSO logger for Linux that prioritizes speed and simplicity over features. It was written by Joop Stakenborg PG4I and has been actively maintained since 2000. The application stores logs as plain text files — no database setup, no configuration wizard, no dependencies beyond the basic GTK libraries. Install it and it is ready to use in under a minute.
The design philosophy is minimal friction between hearing a callsign and having it recorded. The keyboard-first interface allows an experienced operator to log a contact in under 10 seconds without touching the mouse. Band and mode fill from rig control, RST defaults to 59/59, Tab moves between fields, F1 saves and clears.
Xlog is the right choice for field day, portable operations, SOTA activations, emergency communications, and any situation where you want a logger running immediately without setup time. It is also an excellent choice as a secondary logger running alongside a digital mode program like Fldigi when you don't need the full complexity of CQRLog.
Installation on Ubuntu, Debian and Raspberry Pi
Ubuntu 22.04, 24.04 and Debian 11, 12
sudo apt update
sudo apt install xlog
Xlog is in the standard repositories for all current Ubuntu and Debian releases. No additional dependencies or configuration needed after install — it is ready to run immediately.
Fedora and other RPM distributions
sudo dnf install xlog
Raspberry Pi OS
sudo apt update
sudo apt install xlog
Xlog runs excellently on all Raspberry Pi models including the Zero W. It is one of the lightest ham radio loggers available — the entire application uses under 20 MB of RAM. On a Pi Zero running Direwolf for APRS and Xlog for logging you have a complete portable station that runs all day on a small battery pack.
Build from source
sudo apt install git build-essential libgtk2.0-dev \
libhamlib-dev gettext autoconf
git clone https://github.com/pg4i/xlog.git
cd xlog
autoreconf -i
./configure
make -j$(nproc)
sudo make install
Verify installation
xlog --version
Initial setup and station configuration
Xlog requires minimal configuration before it is ready to use. Enter your station details once and it remembers them for all future sessions.
Station information
Go to Edit → Preferences → Station and enter:
- Callsign — your full callsign
- Name — your name
- QTH — your location
- Locator — your Maidenhead grid square
- Power — your typical transmit power in watts
Default band and mode
Set default band and mode under Edit → Preferences → Log. These are pre-filled in each new log entry and you only change them when you switch bands or modes — saving keystrokes during a busy operating session.
Creating a log file
Go to Log → New to create a new log file. Xlog stores each log as a separate plain text file. Name logs descriptively:
2026-general.xlog— your general daily log2026-cqww-ssb.xlog— CQWW SSB contest log2026-fieldday.xlog— field day log2026-sota-vk2/xx.xlog— SOTA activation log
Switch between logs via Log → Open. Multiple logs can be open simultaneously in separate windows.
Log file location
By default Xlog saves logs to ~/logs/. Change this under Edit → Preferences → Log → Log directory. Choose a location that gets backed up regularly — your logs are plain text files, simple to copy to a USB drive or cloud storage.
Rig control with Hamlib
Xlog uses Hamlib to read your radio's current frequency and mode, filling them in automatically for each new log entry. Configure it under Edit → Preferences → Hamlib.
Setup procedure
- Select your rig model from the Rig dropdown
- Set the Device to your serial port — usually
/dev/ttyUSB0 - Set the Baud Rate to match your radio's CAT baud rate
- Set Poll interval to 2 seconds
- Click Apply and verify the frequency and mode are reading correctly
Serial port permissions
sudo usermod -a -G dialout
# Log out and back in for the change to take effect
Rig settings for popular radios
| Radio | Hamlib model | Baud rate | Notes |
|---|---|---|---|
| Icom IC-7300 | 3073 — Icom IC-7300 | 19200 | Built-in USB, most popular for Linux |
| Icom IC-7610 | 3078 — Icom IC-7610 | 19200 | Dual receiver |
| Icom IC-705 | 3085 — Icom IC-705 | 19200 | QRP portable with USB |
| Yaesu FT-991A | 1035 — Yaesu FT-991A | 38400 | All-band including VHF/UHF |
| Yaesu FTDX-10 | 1050 — Yaesu FTDX-10 | 38400 | SDR-based HF rig |
| Kenwood TS-890S | 2044 — Kenwood TS-890S | 115200 | High-end with roofing filters |
| Elecraft K3/K3S | 2029 — Elecraft K3 | 38400 | High-performance HF rig |
| Elecraft KX3 | 2031 — Elecraft KX3 | 38400 | Excellent portable QRP rig |
| Xiegu G90 | 3085 — Xiegu G90 | 19200 | Budget portable HF rig |
Testing rig control
After configuring, verify rig control is working by checking if the frequency and mode fields update when you change the radio's frequency. If they do not update check your serial port, baud rate, and dialout group membership.
# Replace 3073 with your rig's model number
# Replace /dev/ttyUSB0 with your port
# Replace 19200 with your baud rate
rigctl -m 3073 -r /dev/ttyUSB0 -s 19200 f
# Should return current frequency in Hz
Understanding the Xlog interface
The Xlog interface is deliberately simple — a log entry form at the top and a scrollable contact list below. Everything is visible at once with no hidden panels or tabs.
Log entry form fields
| Field | Contents | Auto-filled by |
|---|---|---|
| Date | Contact date in UTC | System clock |
| GMT | Contact time in UTC | System clock |
| Callsign | Other station's callsign | Manual entry |
| Band | Operating band in meters | Rig control or default |
| Mode | Operating mode (SSB, CW, FT8 etc) | Rig control or default |
| RST Sent | Signal report sent | Defaults to 59 or 599 |
| RST Rcvd | Signal report received | Defaults to 59 or 599 |
| IOTA | IOTA reference number | Manual entry |
| Locator | Other station's grid square | Manual entry |
| QSL | QSL information or notes | Manual entry |
| Power | Transmit power | Station default |
| Name | Other operator's name | Manual entry |
| QTH | Other station's QTH | Manual entry |
| Remarks | Free text notes | Manual entry |
Contact list
Below the entry form is a scrollable list of logged contacts, most recent at the top. Each row shows the date, time, callsign, band, mode, and RST. Click any contact to select it. Double-click to open it for editing.
Status bar
The status bar at the bottom shows the total number of contacts in the current log and the current UTC time. Watch the UTC clock when operating to ensure your log timestamps are accurate.
Operating guide — fast contact logging
Logging a contact — the fastest workflow
- The cursor is in the Callsign field by default — type the callsign
- Press Tab — Xlog resolves the DXCC entity and moves to the next field
- Tab through Band and Mode — these are already filled from rig control
- Tab to RST Sent and RST Received — defaults (59/59) are correct for most contacts, just press Tab to skip
- Add name or QTH in the appropriate fields if you want to record them
- Press F1 to save the contact and clear the form for the next one
With rig control active and defaults set correctly, a typical SSB contact takes 4–6 keystrokes to log — callsign, Tab to move through the pre-filled fields, F1 to save.
Speed logging during a pileup
When working a DX station running a pileup the exchange is minimal. In Xlog:
- Type the callsign
- Press Tab twice — band and mode are from rig control, RST defaults are 59/59
- Press F1 — contact is logged in under 3 seconds
For contest exchanges where you need to record a serial number or exchange use the Remarks field. Tab to it after RST and type the exchange, then F1.
Working a net — logging multiple stations
For net logging where multiple stations check in on the same frequency:
- Set the default band and mode once at the start of the net
- For each check-in: type callsign, Tab, Tab, F1
- Band and mode stay fixed from the defaults — you only type the callsign and save
Press F2 to duplicate the previous contact's band and mode — useful if you occasionally need to change settings temporarily and then return to the net frequency.
Correcting a logged contact
Two options for correcting errors:
- Just logged — press Ctrl+Z to delete the last entry and re-enter it correctly
- Earlier contact — double-click the contact in the log list, edit the fields, save
Adding notes to contacts
The Remarks field accepts free text notes. Use it to record antenna used, conditions, contest exchange, or any other information you want to keep with the contact. Notes are preserved in ADIF export.
Managing multiple open logs
Xlog can have multiple logs open simultaneously in separate windows. This is useful for running two stations simultaneously (contest multi-op) or switching between a contest log and a general log without closing either. Each window is independent — contacts go to whichever window is active when you press F1.
Keyboard shortcuts reference
| Key | Action |
|---|---|
| F1 | Save current contact and clear form for next entry |
| F2 | Duplicate previous contact — same band, mode, and RST |
| F5 | Insert current UTC time into time field |
| F6 | Insert current UTC date into date field |
| F7 | Clear current entry form without saving |
| Ctrl+Z | Delete the most recently logged contact |
| Ctrl+F | Find/search in log |
| Ctrl+N | New log file |
| Ctrl+O | Open existing log file |
| Ctrl+S | Save current log |
| Ctrl+W | Close current log |
| Tab | Move to next field in entry form |
| Shift+Tab | Move to previous field |
| Ctrl+Q | Quit Xlog |
ADIF export, import and LoTW upload
ADIF (Amateur Data Interchange Format) is the universal standard for exchanging ham radio logs. Xlog can export and import ADIF for use with LoTW, eQSL, CQRLog, and any other logging application.
Exporting to ADIF
Go to Log → Export → ADIF and choose a filename. The exported file contains all contacts in the current log in standard ADIF format. Name the export file descriptively — 2026-cqww-ssb.adif for example.
Importing ADIF
Go to Log → Import → ADIF to import contacts from another logger or from a previous session. Xlog does not check for duplicates during import — review the imported contacts to avoid duplicating existing entries.
Uploading to LoTW via TQSL
Xlog does not upload to LoTW directly. Export to ADIF first, then use TQSL:
sudo apt install tqsl
# Upload ADIF to LoTW
# Replace N0CALL with your callsign
tqsl -d -u -l "N0CALL" ~/logs/mylog.adif
TQSL signs the log with your LoTW certificate and uploads it to ARRL's server. New confirmations typically appear in your LoTW account within minutes to hours depending on server load.
Importing Xlog contacts into CQRLog
Many operators use Xlog in the field and CQRLog at home for award tracking. The workflow is simple:
- In Xlog export to ADIF: Log → Export → ADIF
- Copy the ADIF file to your home station computer
- In CQRLog: File → Import → ADIF → select the exported file
- CQRLog imports the contacts and updates your DXCC and other award totals automatically
Uploading to eQSL
Export ADIF from Xlog and upload the file manually to eqsl.cc via their web interface. There is no automated upload path — log in to eQSL.cc and use the Upload Logfile function.
Portable and field day operating
Xlog is one of the best Linux loggers for portable and field day use. Its combination of zero setup time, minimal resource usage, and keyboard-first design makes it ideal for operating away from the home station.
Why Xlog works well for portable operation
- No database setup — plain text log files work on any system
- Instant startup — no MariaDB initialization delay
- Low resource usage — runs on the oldest, cheapest hardware
- Simple backup — copy a single text file to a USB drive
- No internet required — works completely offline
- Readable log files — if Xlog is unavailable the log file itself is human-readable plain text
Field day setup recommendations
- Create a new log file at the start of each field day session named with the date and event
- Set large font size under Edit → Preferences → Interface for readability in bright sunlight
- Pre-configure the default band and mode to match your station
- If running multiple stations, open a separate Xlog window for each — contacts are kept in separate files making log consolidation easy
- Back up the log file to a USB drive after every 50–100 contacts
SOTA and portable DX operation
For SOTA (Summits on the Air) activations, Xlog on a small laptop or Raspberry Pi makes a complete logging solution. Key tips:
- Use the Locator field to record the calling station's grid square for VUCC award tracking
- Use the IOTA field for any island operation contacts
- The Remarks field is useful for recording antenna used, conditions, and SOTA reference numbers
- After the activation export to ADIF and upload to SOTA database as well as LoTW
Emergency communications logging
Xlog's simplicity makes it suitable for emergency communications (EMCOMM) logging where operators may not be familiar with complex software. Its plain text log format means records can be recovered even if the software is unavailable. Consider keeping Xlog installed on any EMCOMM go-kit laptop alongside more complex station software.
Xlog on Raspberry Pi
Xlog is an excellent choice for a permanent Raspberry Pi logging station. Its minimal resource requirements mean it shares the Pi comfortably with other applications like Fldigi, Direwolf, or WSJT-X.
Installation on Raspberry Pi OS
sudo apt update
sudo apt install xlog
Autostart on login
To have Xlog start automatically when the Pi boots to the desktop:
[Desktop Entry]
Type=Application
Name=Xlog
Exec=xlog
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Performance on different Pi models
| Pi model | Xlog performance | Notes |
|---|---|---|
| Pi Zero W | Good | Usable but slow startup — fine for logging only |
| Pi Zero 2W | Excellent | Fast and responsive, recommended minimum |
| Pi 3B+ | Excellent | Plenty of headroom for Xlog + Fldigi |
| Pi 4 | Excellent | Runs Xlog + WSJT-X + Direwolf comfortably |
Xlog vs CQRLog — which to choose
| Feature | Xlog | CQRLog |
|---|---|---|
| Setup time | Under 1 minute | 15–30 minutes |
| Database required | No — plain text files | Yes — MariaDB |
| Startup time | Instant | 10–30 seconds (MariaDB init) |
| Resource usage | Under 20 MB RAM | 100–200 MB RAM |
| DX cluster | No | Yes — built in with rig QSY |
| Award tracking | No | Yes — DXCC, WAZ, WAS, IOTA |
| LoTW upload | Manual via TQSL | Automatic after each QSO |
| eQSL upload | Manual | Automatic |
| Callbook lookup | No | Yes — QRZ, HamQTH |
| Contest support | Basic | Full with Cabrillo export |
| Rig control | Yes — Hamlib | Yes — Hamlib and rigctld |
| ADIF export | Yes | Yes |
| Multiple logs | Yes — separate files | Yes — in one database |
| Raspberry Pi | Excellent — Pi Zero compatible | Good — Pi 4 recommended |
| Portable operation | Ideal | Workable |
| Serious DX chasing | Log only — no tools | Ideal — full DX tools |
The best approach for most operators
Many operators use both programs and they complement each other well. Use Xlog in the field and for portable operation where quick startup and light resource use matter. Use CQRLog at the home station for serious DX chasing with the full suite of DX cluster, award tracking, and automatic LoTW upload. Export from Xlog to ADIF and import into CQRLog when you return home to keep one complete log for award purposes.
Troubleshooting common problems
Rig control not working — frequency not updating
- Check dialout group membership:
groups | grep dialout - Verify serial port:
ls /dev/ttyUSB* - Check baud rate matches radio setting exactly — this is the most common cause
- Test Hamlib independently:
rigctl -m [model] -r /dev/ttyUSB0 -s [baud] f - Ensure no other application is using the same serial port
- Try a different Hamlib rig model number — some radios have multiple valid entries
Log file will not open
- Check file permissions:
ls -la ~/logs/ - Verify the file is a valid Xlog format — try opening in a text editor
- Check disk space:
df -h ~ - If the file was created on Windows it may have Windows line endings — convert with
dos2unix filename.xlog
ADIF export is missing contacts
- Make sure you export from the correct log window — if multiple logs are open check which one is active
- Save the log before exporting: Ctrl+S
- Check the ADIF file in a text editor to verify it contains the expected contacts
Xlog crashes on startup
- Run from terminal to see error output:
xlog - Check for missing GTK libraries:
ldd $(which xlog) | grep "not found" - Delete Xlog config and start fresh:
rm -rf ~/.config/xlog - Check available disk space
Time is wrong in logged contacts
- Xlog uses your system clock for UTC time — verify your timezone is set correctly
- Check system time:
date -u— should show current UTC - Install chrony for accurate time:
sudo apt install chrony - The Xlog status bar shows current UTC — watch it to catch clock issues during operation
Callsign not resolving to DXCC entity
- Xlog uses a built-in cty.dat for DXCC lookup — it may be outdated
- Download the latest cty.dat from country-files.com
- Place it in the Xlog data directory — check Edit → Preferences → Log for the data directory path
- Some callsigns from small entities may not resolve even with an updated cty.dat — enter the country manually
Frequently asked questions
Is Xlog good for beginners?
Yes — Xlog is an excellent choice for new ham radio operators. It installs in seconds, has no complex setup, and the interface is immediately intuitive. You can be logging contacts within 2 minutes of installing it. As you progress and want more features like DX cluster integration and automatic LoTW upload you can move to CQRLog, but many experienced operators continue using Xlog for its speed and simplicity.
Can I use Xlog for DXCC award tracking?
Xlog does basic DXCC entity resolution from callsigns using its built-in cty.dat but it does not track award progress or confirmations. For serious DXCC tracking use CQRLog. A common workflow is logging in Xlog during operating sessions and then importing to CQRLog for award tracking — both programs use standard ADIF format so the import is straightforward.
How do I upload Xlog contacts to LoTW?
Export your Xlog log to ADIF via Log → Export → ADIF, then use TQSL to sign and upload it. Install TQSL with sudo apt install tqsl, configure your LoTW certificate, then run tqsl -d -u -l "YOURCALL" yourlog.adif. Xlog does not upload to LoTW directly — the ADIF export and TQSL step is required.
What log file format does Xlog use?
Xlog stores logs in its own plain text format with one contact per line — similar to ADIF but simpler. The files have a .xlog extension and are human-readable in any text editor. For exchange with other programs use Log → Export → ADIF to convert to the standard ADIF format. The plain text format is a feature rather than a limitation — it means your logs are never trapped in a proprietary database and survive even if Xlog itself becomes unavailable.
Can Xlog run on very old hardware?
Yes — Xlog is one of the lightest ham radio loggers available. It runs on hardware as old as a Pentium III with 256 MB RAM under a lightweight Linux distribution. For field day on ancient donated hardware or emergency communications on whatever equipment is available, Xlog is often the only logger that will run reliably. Even on modern hardware its fast startup and low memory use are advantages.
Does Xlog support contest logging?
Xlog supports basic contest logging — you can record exchanges in the Remarks field and export to ADIF afterward. However it does not have built-in contest exchange templates, automatic serial number tracking, real-time scoring, or Cabrillo export that dedicated contest loggers provide. For serious contesting use TLF (a keyboard-driven contest logger) or CQRLog with contest mode enabled. Xlog works for casual contest participation but is not optimized for high-rate contest operating.
How do I transfer my Xlog logs to a new computer?
Copy the log files (in ~/logs/ by default) and the Xlog configuration directory (~/.config/xlog/) to the new machine. Since Xlog logs are plain text files they open immediately on any system with Xlog installed. No database migration or export/import process needed — just copy the files.