Skip to content

FT4 FT8 Module

Kevin edited this page Oct 23, 2026 · 1 revision

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.

One-time setup

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.sh

The 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.

Start receive

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.

Receive display

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.

Make a contact

  1. Start RX and confirm that receive audio and WSJT-X are healthy.
  2. Set the held TX offset in the digital passband.
  3. Double-click a fresh decode to select the sender as the target and enable TX.
  4. Leave Auto sequence enabled to advance through the contact, or select a TX message manually.
  5. Use Halt TX to stop the current operation or Disable TX to disarm transmit.
  6. 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 and diagnostics

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.

Configuration

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.

Troubleshooting

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/native

The 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.

Licensing

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:

Clone this wiki locally