Repository navigation
FT4 FT8 Module
Related pages:
Pi-Sat manages a local stock WSJT-X instance for FT4 and FT8 receive, decoding, transmit sequencing, and contact logging. Pi-Sat owns the native IC-9700 radio connection, tuning, modes, tracking, and PTT. WSJT-X generates and decodes the digital-mode audio.
The FT4 / FT8 module is available in the native IC-9700 experience. In Home, connect the radio from the top toolbar, open Modules, and select FT4 / FT8. The Modules menu is hidden in the Legacy radio experience.
The standard Pi-Sat installer offers Install WSJT-X for FT4/FT8? [y/N]. Choose y to install the module's dependencies during installation.
If you skipped that option or setup reported an error, run the WSJT-X helper as
the same Linux user that runs Pi-Sat. Run it directly from a terminal without a
sudo prefix:
cd <INSTALL_DIR>
sh install/install_wsjtx.shThe helper installs stock WSJT-X, PulseAudio utilities, Xvfb, and required X11 and accessibility libraries through the distribution package manager. It also makes a PulseAudio-compatible server reachable to the Pi-Sat service user. A desktop audio session belonging to a different user is not sufficient.
If the helper cannot reach the audio server, resolve its reported service error before starting receive.
In Settings > Other, set:
- WSJT-X callsign to the station callsign.
-
Executable to
wsjtx, or to the stock executable's path. - WSJT-X mode to FT4 or FT8 if a saved preference is needed.
WSJT-X uses the station grid already configured under [station].
Connect the native IC-9700 in Pi-Sat. Use SUB for receive and MAIN for uplink. The module supports USB or USB-DATA on SUB, and MAIN modes supported by the current radio configuration, including LSB-DATA for an inverting transponder. Leave External DATA Decode disabled because FT4 / FT8 requires normal SUB AF audio.
Open Modules > FT4 / FT8.
The Mode control has separate, side-by-side FT4 and FT8 buttons.
Select the mode before Start RX. The selection is saved to [wsjtx] mode and
is retained for later sessions. If no valid saved mode is available, the page
shows FT4 until a mode is selected. The mode buttons and decoder-depth selector
are locked while the receive engine is running; stop RX before changing them.
The toolbar also provides:
- Engine: selects the WSJT-X UDP client when more than one engine is visible.
- Decode speed: Fast, Normal, or Deep for the next RX start.
- Start RX / Stop RX: starts or stops the managed WSJT-X instance and its Pi-Sat-owned audio devices.
- Reset: recovery action that stops the managed instance and releases the module's audio devices and listener even when the current status is stale.
Pi-Sat creates an isolated WSJT-X profile with Rig = None, local UDP reporting,
and private virtual audio devices. Personal WSJT-X profiles remain separate.
The managed instance starts stopped with transmit disabled after a Pi-Sat
restart.
Stop RX stops the managed transmit state, WSJT-X, the private display, audio bridges, and the virtual devices owned by the module. It does not disconnect the radio.
The Digital audio spectrum and waterfall are calculated from Pi-Sat's SUB AF stream. The software span follows the radio's reported SSB filter width when available; otherwise the page labels a 3000 Hz estimate. This is not the radio's RF scope and is not a waterfall supplied by WSJT-X.
Band activity lists UTC time, signal report, time offset, audio-frequency offset, mode, and message. Transmitted messages appear with a TX label. Replies addressed to the station call and selected target are highlighted.
Click the passband or enter Hold TX offset to choose the transmit audio offset. RX is green and TX is red. Allowed values begin at 200 Hz and end 50 Hz below the displayed edge for FT8 or 90 Hz below it for FT4. Changing the offset does not retune the radio or change its filter.
The strip above the spectrum shows the currently tracked satellite and available azimuth, elevation, and LOS information.
- Start RX and confirm that receive audio and WSJT-X are healthy.
- Set the held TX offset in the digital passband.
- Double-click a fresh decode to select the sender as the target and enable TX.
- Leave Auto sequence enabled to advance through the contact, or select a TX message manually.
- Use Halt TX to stop the current operation or Disable TX to disarm transmit.
- Use Call CQ to clear the target and select the CQ message.
The six message choices are:
| Message | Content |
|---|---|
| Tx1 | Target call, station call, station grid |
| Tx2 | Target call, station call, signal report |
| Tx3 | Target call, station call, acknowledged report |
| Tx4 | Target call, station call, RR73
|
| Tx5 | Target call, station call, 73
|
| Tx6 |
CQ, station call, station grid |
The normal sequence advances from a received grid to a signal report, then to an
acknowledged report, RR73, and 73 as compatible messages arrive. A stage gets
its initial burst and up to three unanswered repeats. After the repeats, Pi-Sat
disables TX. Off-air, stale, low-confidence, ambiguous, and unsupported
nonstandard messages do not select a target or advance the sequence.
Pi-Sat requires a configured callsign and valid station grid. A radio reconnect, mode change, source failure, or engine restart disarms transmit; it does not resume automatically.
The native transmit path is reserved while FT4 / FT8 TX is enabled. APRS and browser-microphone audio cannot share that path at the same time. Verify the radio's MAIN frequency, modulation input, LAN level, PTT release, and RF output before relying on a sequence.
Pi-Sat holds MAIN uplink tuning while PTT is active and continues SUB receive tracking. The uplink is not retuned throughout a burst. That behavior matters on a satellite pass with rapidly changing Doppler.
QSO Log keeps completed contacts across restarts and provides
Export ADIF. A contact is logged after valid exchanged reports, an
acknowledgement, and a completed RR73 or 73 transmission. A CQ or incomplete
attempt does not create a completed contact.
Records include available UTC times, mode, callsign, grid, reports, frequencies
adjusted for audio offsets, and satellite context. They are stored under
<INSTALL_DIR>/data/wsjtx/.
The Monitor page has an FT4 / FT8 logs switch for engine, receive, audio, and sequencing diagnostics. The FT4 / FT8 module itself contains the operating controls and contact history.
Pi-Sat's managed bridge uses a bounded audio queue. An overrun, controller change, radio disconnect, IF-source conflict, or playback failure stops the managed receive session and reports the reason. Correct the condition and start RX again.
The [wsjtx] section contains:
| Setting | Default | Purpose |
|---|---|---|
executable |
wsjtx |
Stock WSJT-X executable |
callsign |
empty | Station callsign |
mode |
FT8 |
Saved FT4 or FT8 selection |
decode_depth |
fast |
Fast, normal, or deep decoding |
udp_host |
127.0.0.1 |
Local reporting address |
udp_port |
2237 |
Local reporting port |
client_timeout_seconds |
45 |
Time before a client is considered stale |
max_decodes |
300 |
Maximum retained decode entries |
Mode and decoder-depth changes apply when RX starts. The engine reports to a local UDP endpoint, so the listener must bind to that address or the wildcard address. Pi-Sat recreates its private WSJT-X profile while the managed engine starts.
Decode history is retained in memory. WSJT-X supplies UTC clock time but not a calendar date, so Pi-Sat infers the nearest UTC day. UDP supplies neither raw audio nor the WSJT-X waterfall.
Keep system time synchronization enabled and healthy. Pi-Sat does not currently manage the host's time service.
If Start RX reports a PulseAudio connection failure, run these checks as the Pi-Sat service user:
pactl info
systemctl show pi-sat --property=User --value
ls -l /run/user/$(id -u)/pulse/nativeThe service user, audio-server owner, and configured PULSE_SERVER must agree.
A working command in another user's login session does not grant access to the
service.
If receive audio is absent:
- connect the native radio session;
- confirm SUB is in USB or USB-DATA and tuned to the signal;
- disable External DATA Decode;
- stop and restart RX after correcting the source; and
- inspect the FT4 / FT8 logs switch on Monitor.
If transmit is unavailable, check the saved callsign, station grid, MAIN mode, radio modulation routing, LAN modulation level, and engine status. Pi-Sat refuses transmit when the radio and engine states do not agree.
WSJT-X is separately installed under the GNU General Public License, version 3. Pi-Sat does not bundle its source or binaries. Project and license: