APRS Vehicle Beacon
I've been meaning to put together a mobile APRS setup for a while now, mostly as a platform for playing with 2m propagation and range testing, but also because a rolling position beacon is just a fun thing to have. The plan is to keep everything entirely off the vehicle's electrical system - power, compute, and internet all live in a self-contained box that wakes up with the car and dies with the car.
This page is the plan, not a build report. I'll update it as things actually happen.
The Hardware Lineup
Radio: Radio Shack HTX-202. Old, heavy, and essentially indestructible 2m HT. The big win here is the latching power switch, which means it can be configured to power on when the vehicle does, with no microcontroller or latch circuit needed. It obviously has zero native APRS support, but it has a mic jack on top and a well-documented (if slightly weird) PTT arrangement.
Interface: A spare Tigertronics SignaLink USB. This handles audio isolation in both directions and provides its own “VOX” style PTT - it watches the audio line from the computer and keys the radio when it sees signal, so the computer never touches the PTT line directly. This keeps things dead simple on the software side.
Computer: Advantech ARK-1123 fanless vehicle miniPC running Alpine Linux. Fanless matters in a car - no intake to clog with dust and dog hair. Alpine because I'm already running it on the ARK-1123 for the rfi-mapper project and I know it behaves.
GPS: Something NMEA over USB or serial. gpsd doesn't care what it is, so this is a “grab one from the drawer” decision. I have a few options lying around.
Internet: An old Cradlepoint hotspot/router for APRS-IS backhaul. This is what turns the thing into a roving iGate - the radio can be listening on 144.390 the whole time it's not transmitting, and received packets get gated to the internet over cellular when there's coverage.
Power: A 40Ah LiFePO4 cell, trickle-charged from solar. More on the power math below.
Why the SignaLink instead of a cheap CM108 dongle
The obvious 2024-and-later answer to “soundcard interface with PTT” is a $10 USB audio dongle with a CM108/CM119 chip, since direwolf can drive those GPIO pins directly for keying. I have a spare SignaLink USB though, and it has some real advantages for a vehicle install:
Transformer isolation on both audio paths, which is genuinely useful in a car full of alternator and ignition noise.
TX and RX level knobs on the front panel, so gain staging is a hardware problem you solve once instead of a mixer-settings problem that resets itself when PulseAudio gets confused.
Its Auto-PTT circuit keys the radio from audio alone, meaning the computer never needs to assert a PTT line at all. A crashed computer leaves the radio stuck in receive, not stuck in transmit - which is a much safer failure mode on a shared channel.
The catch: Tigertronics never made a cable for the HTX-202. The closest entries in their database are the HTX-212 and HTX-242 mobiles (RJ-45 mic jack, JP1 jumpers pin 2 = GND, pin 5 = MIC, pin 6 = PTT). Those are useful as a reference for how the SignaLink side maps, but the actual cable is going to be custom - RJ-45 on one end, 2.5mm sub-mini plug on the other, built by me. That's fine. The 24ga press-in jumper wires handle the JP1 side without soldering, and the radio end is a $3 plug.
The HTX-202 PTT situation
This is the part that needed actual research, since the radio predates “has a data jack” by a couple decades. What I've pieced together from the service manual, the owner's manual, and the various packet-era interfacing writeups (the Kantronics KPC-3+ article at saqra.net is the best of them):
The mic/PTT line sits at roughly 0.65v bias when idle.
Pulling it down toward ground keys the transmitter. Grounding it hard through ~2.2k is the number that comes up in every writeup - the KPC-3+ author found his TNC's internal pull-down was too weak to budge the line, and 2.2k to ground keyed reliably.
Mic audio and PTT appear to share a conductor, classic Radio Shack electret arrangement: pull the line down through resistance to key, AC-couple audio on top of it. Hard-short to ground keys the radio but kills mic audio, which is why the resistor value matters.
Plugging anything into the mic jack disables the internal mic and doesn't affect the internal PTT, per the owner's manual - so the jack is meant to take over cleanly.
The owner's manual even has a “Using the Transceiver with Packet Radio” section with a suggested TNC connection diagram, so Radio Shack anticipated exactly this use in 1993.
I'll verify the exact conductor layout with a meter before final wiring - radio on, measure DC on each conductor of the plug relative to sleeve, expect ~0.65v on the mic/PTT line. If it turns out mic and PTT are separate conductors, the 2.2k in the PTT lead is still harmless and still keys it, so the wiring plan doesn't change either way.
Wiring Plan
Custom cable, SignaLink RJ-45 to HTX-202 2.5mm 3-conductor plug:
JP1 “G” → sleeve (ground)
JP1 “MIC” → mic conductor (tip, most likely)
JP1 “PTT” → PTT conductor, through a ~2.2k resistor in the cable itself, not in JP1. Never solder to JP1, only the supplied 24ga wires fit the socket.
No SPKR jumper on JP1 - the mic jack has no receive audio.
RX audio: supplied mono cable from the HTX-202's SP jack to the SignaLink's rear SPKR jack.
SignaLink settings:
DLY switch OUT (~28ms hang - the manual says this is the packet position, and direwolf's TX preamble covers the keyup delay anyway)
JP3 and JP4 left off (JP3 boosts TX audio if I can't reach deviation, JP4 is for voice PTT trimming)
TX knob low to start, target ~3kHz deviation, verified on another receiver or an SDR before driving anywhere
Radio settings:
144.390 in a memory, keypad locked, so vibration can't reconfigure it
Power saver OFF - it duty-cycles the receiver when squelched, which would make the iGate silently drop packets
Time-out timer set to its lowest, if the menu supports it, as a backstop against a stuck PTT
Volume/squelch set once per the KPC-3+ article's alignment procedure, then tape over the knobs
Software
Alpine Linux, with:
gpsd for position (apk has it)
direwolf for the TNC/beacon/iGate. If the packaged version is old I'll build from source; Alpine's build is straightforward.
Beaconing via TBEACON with SMARTBEACONING enabled - rate varies by speed and cornering, which is exactly what I want for propagation work. A fixed-interval beacon wastes airtime parked at a light and under-reports exactly when the car is moving fast enough for the data to be interesting.
IGate config: IGSERVER/IGLOGIN out through the Cradlepoint's cellular connection. I'll probably run it receive-only at first (no IGTXVIA) and turn on gated message transmit once I've watched it behave.
One behavioral note to myself: the SignaLink keys the radio on any audio from its sound device, so direwolf needs to be the only thing using that output. No notification sounds, no desktop events on that sink, or the car transmits them on the national APRS frequency.
Power
The vehicle connection is deliberately one-way: the box charges from the car when it runs, but never powers anything from the car directly. Everything runs off a 40Ah LiFePO4 cell, trickle-charged by solar, which means the whole system is also portable if I want to run it as a fixed station somewhere off-grid for a weekend.
Rough budget, 12.8v nominal (~512Wh in the cell):
| Load | Estimated draw |
| ARK-1123 (fanless miniPC) | ~12w |
| Cradlepoint | ~10w |
| SignaLink USB | ~2w |
| GPS receiver | ~0.5w |
| HTX-202 receive | ~2.4w |
| HTX-202 TX, averaged (beacons) | ~1-1.5w worst case |
That's ~28w average, call it 30w to be pessimistic, which is ~18 hours of runtime to 90% depth of discharge with zero input. A modest 15-20w panel in decent sun should cover the average daily load with margin - the panel is sized to the daily Wh budget (~700Wh/day of load against 50-70Wh/day of realistic winter harvest, so I'll probably want more panel than I think, or accept that the vehicle connection does most of the charging and solar is the backup).
Charging: a LiFePO4-appropriate charge controller between the vehicle's 12v and the cell, and the solar panel on its own input of the same controller. Nothing in this system cares about 13.8v vs 12.8v except maybe the Cradlepoint, which I'll verify before trusting.
Range Testing Plan
The whole point of the exercise. The idea is to log GPS position alongside every beacon transmitted, then correlate which beacons get picked up by which iGates (visible on aprs.fi) against terrain and distance. SmartBeaconing's variable rate actually helps here - dense beacons at speed and through turns give better spatial resolution along the route.
Establish baselines on known routes: highway, in-town, the hills to the east
Compare HTX-202 at 1w vs 6w (it has a LOW POWER setting) for the same route
Try different antenna placements - mag mount on the roof vs through-glass vs the rubber duck, because the rubber duck inside a car is basically a dummy load
Log received packets locally on the ARK-1123 too, so I have the iGate-side view of my own signal even in dead zones with no cellular
Open Questions / ToDos
Measure the HTX-202 mic jack conductors with a meter before building the cable
Which GPS receiver - need one that speaks NMEA and doesn't have weird baud defaults
Verify the Cradlepoint's voltage tolerance and whether it can be configured to auto-connect and stay alive without a screen
Alpine direwolf package age, or just build it
Antenna decision (this project dies without a real antenna decision, the rubber duck is not it)
Solar panel sizing based on actual measured draw, once the system is together and I can meter it