Why Gpredict-Improved?
Gpredict is a term that needs no introduction among radio amateurs who operate via satellite. The application for tracking and predicting overflights was developed by Alexandru Csete (OZ9AEC) and has been serving as the de facto standard on the Linux desktop for more than fifteen years. The software is based on SGP4/SDP4 propagation algorithms and NORAD orbit elements in TLE format, it can track an unlimited number of satellites and via Hamlib ovládať prijímače aj rotátory.
Despite its prevalence, it remains original Gpredict software that has several gaps. The author of the new project, Sadatoshi Koike (JF9SOM), states in the announcement that although Gpredict has long functioned as an informal standard, there was considerable room for adding features. He also points out that current tools aimed at SDR generally do not offer satisfactory control of the transceiver and rotor. The aim is Gpredict-Improved is therefore to combine both approaches – integrated Hamlib functions similar to the solution known WSJT-X, doplnené o SDR integráciu.
The result is a complete rewrite of the proven concept on a modern software foundation – Python 3.11+, the Skyfield orbital engine and the PySide6/Qt6 graphical interface. The license remains GPL-2.0-or-later, i.e. compatible with the original Gpredict, and the author explicitly lists in the acknowledgments the projects on which Gpredict-Improved is based: Gpredict, Skyfield, Hamlib and the SatNOGS database operated by the Libre Space Foundation.
Features of Gpredict-Improved
The most obvious change from the original Gpredict is access from a web browser. A FastAPI server runs in the background on port 8080, making it possible to monitor transitions from a phone or tablet connected to the same local network. According to the GitHub repository, the status bar after startup displays the LAN address and a QR code for quick connection from a mobile device.
The second major change is the native integration of Hamlib. Instead of running the rigctld daemon separately, as required by the original Gpredict, the radio station is selected directly in the graphical interface. Doppler shift correction is extended - not only the frequency is adjusted, but also the mode and CTCSS tone are automatically adjusted.
Satellite frequency management is done directly from the interface, including synchronization with the SATNOGS database and the ability to manually add or edit records. TLE element updates are automatic, from multiple sources, with a data quality assessment system. The author reminds us that the TLE format itself becomes obsolete over time, which must always be kept in mind when working with orbit data.
The project also declares support for SDR receivers such as HackRF and RTL-SDR. Internationalization is handled via gettext, currently English and Japanese strings are available, which according to the announcement also opens the way to a possible Slovak or French translation. The following table summarizes the differences compared to the original Gpredict as listed in the project repository.
| Area | Gpredict | Gpredict-Improved |
|---|---|---|
| Platform | desktop only | desktop + browser access on phones/tablets in the same LAN |
| Radio control | requires a separate rigctld | integrated Hamlib, radio station selection directly in the GUI |
| Doppler correction | only frequency | frequency + mode + CTCSS tone automatically |
| Satellite frequency database | SATNOGS only, text file editing | automatic SATNOGS synchronization + adding/editing from GUI |
| TLE update | manual | automatic, multi-source, with data quality assessment |
| Supported OS | Linux (GTK+) | Linux, Windows, macOS, Raspberry Pi |
Required hardware and software environment
Gpredict-Improved targets Linux, Windows, macOS, and Raspberry Pi. The installation instructions published in the repository are currently for Ubuntu/Debian, where the software is installed from source via a Python virtual environment. Pre-installers for Windows and macOS will be available on the Releases page after the first tagged version is released, according to the repository.
On the radio and rotor side, support is required via Hamlib, which is now part of the application and does not require a separately running rigctld. For working with software-defined radio, the repository lists support for HackRF and RTL-SDR receivers. The project architecture is divided into modules core (Skyfield satellite engine), ui (PySide6/Qt6 desktop interface), web (FastAPI + WebSocket for LAN access from a browser on port 8080), rig (control of the radio and rotor via Hamlib), data (TLE/SATNOGS synchronization, SQLite database) and i18n (internationalization based on gettext).
How Gpredict-Improved works and getting started
Installation on Ubuntu/Debian according to the README consists of several steps. First, the system packages python3.11, python3-pip, libhamlib-dev and python3-hamlib are installed. This is followed by cloning the repository with the git clone command, creating a Python virtual environment (python3.11 -m venv .venv), activating it and installing the package with the pip install -e command.
To work with a radio connected via USB, you need to set permissions by copying the udev rule from scripts/99-gpredict-improved.rules to /etc/udev/rules.d/, reloading the rules with the commands sudo udevadm control –reload-rules and adding the user to the dialout group (sudo usermod -aG dialout $USER). After this step, you need to log out and log in again for the change in group membership to take effect. The application itself is then launched with the command gpredict-improved.
At startup, the main Qt6 window is first opened, then the FastAPI/uvicorn server is started in the background in a separate thread on port 8080. DataSyncManager then downloads TLE and SATNOGS data if it is outdated. The status bar displays the LAN address and a button with a QR code, which allows for quick connection from a mobile device on the same network.
The development environment is prepared with the command pip install -e ".[dev]", testing is run via pytest, static analysis is provided by ruff check . and type checking by mypy src/. Adding a new language consists of copying the file locale/en/LC_MESSAGES/gpredict_improved.po, translating the msgstr strings and compiling with the msgfmt tool.
Complete summary
Gpredict-Improved is not a cosmetic update, but a complete rewrite of the proven Gpredict concept on a modern Python/Skyfield/Qt6 foundation, maintaining license compatibility with the original. The main benefits are browser access over a local network, native Hamlib integration without the need for a separate rigctld, extended Doppler correction with mode and CTCSS, automatic multi-source TLE update with quality assessment, and expansion of supported platforms to Windows, macOS, and Raspberry Pi.
The project is led by Sadatoshi Koike (JF9SOM), the source code is publicly available on GitHub, including documentation, architecture and development plan. At the time of writing, no tagged releases or pre-installers for Windows and macOS have been published yet - according to the repository, these are to follow after the release of the first official version. For radio amateurs working with satellite operations, this is a project worth following, especially given the declared goal of combining convenient radio and rotor control with SDR integration in one tool.
