Repository navigation
APRS Module
Related pages:
Pi-Sat's optional APRS module decodes 1200 baud APRS packets from a copy of the native IC-9700 receive audio. It can also transmit position, status, and direct message packets through the same radio.
The module is available in the native IC-9700 experience. In Home, connect the radio from the top toolbar, open Modules, and select APRS. The Modules menu is hidden in the Legacy radio experience. The decoder starts disabled whenever the Pi-Sat service starts.
Select Enable in the module's Receive toolbar. Pi-Sat starts a Dire Wolf process, sends it raw signed 16-bit little-endian PCM, and reads decoded AX.25 frames from Dire Wolf's local KISS connection. The module retains the newest 25 packets across service restarts.
The operator selects and owns the receive frequency. Pi-Sat does not verify that the radio is parked on an APRS channel. If the frequency, mode, or receive level is wrong, the module remains enabled without producing packets.
The receiver selector in [aprs] chooses which part of the stereo native stream
is decoded:
| Value | Input |
|---|---|
main |
MAIN, normally the left stereo side |
right |
Right stereo side |
both |
Mono sum |
Use the Channel levels readout to identify the receiver carrying traffic. The Decoder input readout reports the current rate, channel count, selected side, and sample count.
The Decoder input slider adjusts the decoder copy between -30 and +12 dB. It
does not alter radio gain, browser audio, SSTV input, or the levels reported for
the two radio channels. The setting is stored as [aprs] rx_gain_db.
The APRS page exposes the receive chain in one place:
| Readout | Meaning |
|---|---|
| State | Whether the module is disabled, waiting for radio audio, listening, or failed |
| Audio source | The native receive stream supplied to the module |
| Engine | The Dire Wolf decoder status |
| Decoder input | Audio rate, layout, selected side, and samples received |
| Channel levels | Peak level of the native left and right channels before decoder gain |
| Decoder level | Peak level after the decoder input trim |
| Decoder link | Whether Pi-Sat connected to Dire Wolf's local KISS interface |
| Decoder log | Startup information and decoded-frame output from Dire Wolf |
Decoder link: No connection means Pi-Sat cannot read the KISS output. If the decoder log contains completed frames, the receive and Dire Wolf path is still working and the fault is after decoding.
Dire Wolf can report Audio input level is too high. Reduce the Decoder
input slider first. Lowering it affects only APRS decoding.
The transmit section is disarmed after every backend restart. Enable Arm transmit before using any of the three manual actions:
- Send Beacon sends the station position and configured APRS symbol.
- Custom Message sends an APRS status packet of up to 62 characters.
- Direct Message sends an addressed packet of up to 67 characters to the callsign entered in Direct message callsign.
There is no automatic beacon timer. Pi-Sat does not provide digipeating or an APRS-IS connection.
For each transmission, Pi-Sat formats the packet, uses Dire Wolf's gen_packets
helper to produce a complete Bell 202 audio burst, keys the native radio, sends
the burst through the shared radio audio path, and releases PTT. Dire Wolf does
not key the radio and never receives a transmit path. Pi-Sat owns PTT, the
configured key-up delay, and the tail delay.
The IC-9700 modulation input and level must route LAN transmit audio correctly. Pi-Sat checks the radio before keying and rejects a request when the selected modulation input or LAN level would produce a silent carrier. If the request is rejected, inspect Radio and the radio's modulation configuration.
Receive and transmit share one radio. Do not transmit during a tracked pass when a retune could interrupt the burst. The current APRS transmit path sends one operator-requested frame; it does not wait for an acknowledgement.
The local configuration file is pi-sat-controller.conf in
<INSTALL_DIR>. Edit it while APRS is disabled and restart the service if you
change server-level or radio settings outside the Settings page.
The [aprs] section contains:
| Setting | Purpose |
|---|---|
mycall |
Sender callsign and SSID. An empty value disables transmit |
channel |
main, right, or both for the decoder input |
destination |
APRS destination field, default APDW16
|
path |
Digipeater path, default WIDE1-1,WIDE2-1
|
symbol |
Two-character APRS symbol table and code |
comment |
Position-comment text |
tx_delay_ms |
Delay between key-up and the start of the burst |
tx_tail_ms |
Delay between the end of the burst and PTT release |
amplitude |
gen_packets amplitude, 0 through 200 percent |
min_interval_s |
Minimum interval between manual transmit requests |
rx_gain_db |
Receive-only level trim for this decoder |
The beacon uses the [station] position. Pi-Sat does not read a transmit
position from the radio.
These optional environment variables override decoder locations or endpoints:
| Variable | Purpose |
|---|---|
PI_SAT_APRS_DIREWOLF |
Path to the Dire Wolf executable |
PI_SAT_APRS_KISS_PORT |
Local KISS port, default 8001 |
PI_SAT_APRS_MYCALL |
Callsign override used when [aprs] mycall is empty |
Pi-Sat regenerates the local Dire Wolf configuration at startup. The generated file feeds stdin audio to one channel at the native sample rate, uses 1200 baud, disables AGW and Dire Wolf transmit, and gives Pi-Sat a local KISS link. The listener is not intended to be exposed as a remote service.
- Only the selected receiver side, or the configured mono sum, is decoded.
- Compressed APRS positions are labeled but their base-91 position is not expanded.
- Manual transmit offers position beacons, status text, and direct messages. Automatic beacons, digipeating, APRS-IS, and acknowledgement tracking are not provided.
- Transmit timing depends on the radio's key-up behavior. The configured delay and tail values are starting points and should be checked with the station's actual transmitter.
- A correctly enabled decoder can still show no packets when the radio is on the wrong frequency, mode, or receiver side.
Dire Wolf is GPL-2.0-or-later and is maintained by John Langner, WB2OSZ. Pi-Sat runs Dire Wolf as a separate program. Distributing a Dire Wolf binary carries its own license obligations. Project source: https://github.com/wb2osz/direwolf.