The audio modem hears more

21 September 2026 5 min read

APRS Connect's audio modem is the way to run APRS with no TNC at all: a cable from the radio's speaker or headphone socket into the phone, and the phone does the decoding. Version 1.10.0 makes that decoder considerably better at its job, and gives you a say in how hard it works.

What changed

It copies weaker and more distorted audio. The modem now runs several decoders over the same audio at once, each suited to a different kind of audio path, and delivers whatever any of them reads. That matters most for the commonest way this feature gets wired: a cable from a speaker or headphone socket. A receiver de-emphasises that audio before it reaches you, so the two packet tones arrive at different levels, and a decoder built for a flat signal is half deaf to it. On a recording of a busy channel, this release copies about six percent more packets than the last one from clean audio, and about sixty percent more from speaker audio.

It repairs slightly damaged packets. A packet that arrives with a bad checksum used to be dropped without a trace. The modem can now often repair one that came in slightly damaged, and it only ever delivers a repair that passes the packet's own checksum. You can see it happening: the channel's decode line reports "N of those arrived damaged and were repaired", and the Radio screen shows "N repaired" beside "N corrupted". A rising share of repaired packets is useful information in itself. It means the link is marginal, from a weak signal or a level a little off, not that anything is broken.

It turns off the phone's speech processing. Android attaches an automatic gain control, a noise suppressor and an echo canceller to a microphone capture on many phones, whichever input source you choose. All three exist to remove steady tones from speech, and a steady tone is the entire packet signal. The modem now finds whatever the phone attached and switches it off for as long as it listens. On the phone we tested, that was a noise suppressor and an echo canceller, both quietly on.

Listening effort

Running several decoders at once costs processor time, and processor time is battery. So the audio channel's settings gain a row called Listening effort, with two choices.

Balanced is the default. It runs a smaller set of decoders and, on a busy channel, copies about one packet in a hundred fewer than the full set. Maximum runs every decoder the modem has and copies the weakest and most distorted packets, for about four times the processor time. On a recent flagship phone, Balanced measured about 3.5 percent of one processor core while listening and Maximum about 14 percent.

The choice is simple to make. On a charger, in the car or on the bench, choose Maximum and take every marginal packet. On a battery, leave it on Balanced. Changing it reconnects the modem, and the meter keeps working either way.

How it measures up

The standard way to measure a packet decoder is WA8LMF's TNC Test CD: a real off-air recording of a saturated APRS channel in Los Angeles at rush hour, with collisions, over-deviated and under-deviated stations and every kind of misadjusted transmitter, offered in two forms. Track 1 is the flat audio straight from a receiver's discriminator; Track 2 is the same recording de-emphasised the way a speaker or headphone socket delivers it. You score a decoder by how many packets it delivers from each.

We ran this release through both tracks, and looked up what other decoders have published for the same recording. Frames delivered, Track 1 and Track 2:

DecoderTrack 1, flatTrack 2, de-emphasised
APRS Connect, this release, Maximum10301031
UZ7HO SoundModem 0.97b10271022
Graywolf10261000
Dire Wolf 1.2, E+ with bit fixing10211022
Dire Wolf, AD+ mode, as measured by Graywolf10201000
APRS Connect, this release, Balanced10191018
Dire Wolf 1.5, default, no bit fixing10121008
APRS Connect, this release, Maximum, repair off10091007
Kantronics KPC-3 Plus, at its best volume989925
APRS Connect, previous release971647
AGWPE956513

The figures for other decoders come from Dire Wolf's own published documents, its results comparison and its demodulator paper, and from Graywolf's README. We have not measured those decoders ourselves.

Three things to keep in mind when reading it, all of which Dire Wolf's author says in his own document. These tests were run by different people on different machines at different times, so small differences do not mean much: ten packets is one percent. Track 2 is harsher than any real speaker output, because of a flaw in how it was made, which is why every decoder scores lower on it. And bit repair is its own variable: our Maximum figure has repair on, as do Dire Wolf's bit-fixing figure and Graywolf's; with repair switched off, this release lands three packets behind Dire Wolf's no-bit-fixing score on Track 1 and one behind on Track 2, so the lead comes from the decoders and the repair working together.

The recording also carries a drive test, twenty-five minutes of a single mobile station beaconing through flutter and multipath on a quiet channel. This release delivers 110 of its packets; Graywolf reports 108 and Dire Wolf 107.

Nothing to set up

None of this needs a new cable or a new setting to work. Update to 1.10.0, add an audio channel as before or keep the one you have, switch it on, and the improved decoder is what runs. The only new control is Listening effort, and its default is the one that suits a phone on its own battery.

If you want to see how well your particular radio and cable are doing, the channel's signal meter and decode line are still the place to look, and Record for diagnosis still captures thirty seconds of exactly what the phone is hearing.

Documentation: Audio modem (AFSK)

#audio modem #afsk #receiving #battery