Community. Driven. Weather. Data. | Always Ad-Free | Developer FriendlyChecking statusDiscord
WxAlerts.org, Community Driven Weather Data
Support us
Sign in
Weather stations

On the air with RF APRS

For licensed hams, covering how to beacon weather on 144.390 MHz with Direwolf or a hardware TNC, plus antennas, grounding, duty cycle and a solar power budget.


Putting a station on 144.390 MHz, the 2 m APRS channel in the US, makes it visible to local hams and to any igate in range even when your internet is down. For a station whose whole purpose is reporting severe weather, that independence is the point.

The hardware paths

A hardware TNC and a radio. The Kantronics KPC-3+ is bulletproof and has a dedicated weather and telemetry mode. Byonics TinyTrak and MicroTrak are cheaper. Mobilinkd TNC3 and TNC4 speak Bluetooth KISS.

A software TNC. Direwolf on a Pi with a cheap USB sound card and any 2 m radio. The most flexible and by far the best documented.

The classic WXNOW.TXT path. Peet Bros Ultimeter and Davis hardware produce a standardised wxnow.txt file that a TNC or Direwolf reads and beacons directly.

All-in-one trackers that accept a Davis or Peet feed without a computer in between.

Direwolf as a weather beacon

sudo apt install direwolf

A minimal direwolf.conf fed from a file:

ADEVICE  plughw:1,0          # your USB sound card; find it with: aplay -l
ACHANNELS 1
CHANNEL  0
MYCALL   N0CALL-13           # -13 is the weather station SSID
MODEM    1200                # AFSK 1200 baud

PTT      GPIO 23             # or: PTT /dev/ttyUSB0 RTS   or   VOX

# Weather beacon every 10 minutes, one wide hop, WX symbol, data from a file:
PBEACON delay=1 every=10 symbol="weather station" \
        lat=33^16.04N long=096^31.96W \
        commentcmd="tail -1 /home/pi/wxnow.txt" via=WIDE2-1

Direwolf formats that trailing wxnow.txt line into a valid APRS weather report for you.

Test with no transmitter connected first. Then decode your own output to confirm it is well formed:

echo 'N0CALL-13>APDW17:!3316.04N/09631.96W_120/005g010t021...' | decode_aprs

For keying the radio you have three options. GPIO is cleanest: a transistor keys the radio’s PTT line. CM108 works with many cheap USB sound fobs, and with DigiRig, AIOC and DRA boards that expose a GPIO for the purpose. VOX is a last resort.

Should it also be an igate?

Often, yes. A receive-only igate is cheap insurance that local RF traffic reaches APRS-IS at all.

IGSERVER noam.aprs2.net
IGLOGIN  N0CALL 12345        # ham callsign and REAL passcode
# no IGTXVIA line = receive-only, which is the safe default

A transmit igate (IGTXVIA 0 WIDE1-1 plus a filter) gates internet traffic back onto RF and carries real responsibility: channel congestion, and relaying traffic that should not have been relayed. Run one deliberately, with a tight filter, or not at all. A weather beacon does not need to be one.

Radios and duty cycle

A station beaconing every 5 to 10 minutes keys the transmitter for about a second at a time. Thermally that is nothing, so even a cheap radio survives it.

The problem with Baofeng-class handhelds is not heat but spectral purity and frequency stability: they are dirty transmitters. Acceptable for occasional beaconing, poor as a 24/7 igate transmitter. A purpose-built data radio, or a used commercial LMR mobile from Motorola or Kenwood on 144.390, is a much better long-term answer.

The power arithmetic is worth internalising: at 5 W transmit, one second in every 300 is about 0.017 W of average transmit contribution. Receive and idle current, at 50 to 200 mA, dominates your power budget entirely. Do not size a battery around transmit power.

Antenna, feedline and grounding

A simple quarter-wave ground plane or a commercial 2 m vertical at modest height is all this needs. Feedline loss matters more than people expect: at 146 MHz, LMR-400 runs about 1.5 dB per 100 ft against roughly 4.5 dB for RG-58. Use LMR-400 on any long run.

A solar and battery budget

Worked through for a remote site, so you can substitute your own numbers:

Load Pi Zero 2 W plus SDR/TNC plus radio idle ≈ 4 W continuous → 96 Wh/day
Battery, 3-day autonomy at 50% depth of discharge 96 × 3 / 0.5 ≈ 576 Wh → a 12 V 50 Ah LiFePO4 (~640 Wh) fits
Panel, at 4 winter peak-sun-hours 96 / 4 / 0.7 ≈ 34 W → round up to 50–100 W for margin
Controller MPPT with the correct LiFePO4 profile

On chemistry: LiFePO4 is light, cycles deeply and lasts, but must not be charged below 0 °C, so use a BMS with a low-temperature cutoff, or a self-heating battery, in a cold climate. AGM tolerates cold charging but is heavier and shorter-lived.

If the budget is tight, cut duty cycle rather than capacity: deep-sleep the microcontroller between beacons on an ESP32 build, or power the radio only when it is time to transmit.

Frequencies outside the US

Region Frequency
US and Canada (ITU Region 2) 144.390 MHz
Most of Europe (Region 1) 144.800 MHz
Australia 145.175 MHz
Japan and parts of Asia 144.640 / 144.660 MHz

Check your national bandplan and licensing before transmitting anywhere. Note that the internet-only path is identical everywhere: non-hams in every country use APRS-IS and never touch RF.

Where to go next