gr-APRS - A GNU Radio Block for Receiving APRS
GNU Radio Hierarchical Block(s) to Test and Receive APRS Packet (with examples)
Tested on GNU Radio v3.10
[ Home ]
[ Dependency ]
[ Code and Installations ]
[ Hier Blocks ]
[ Examples ]
[ TODO ]
(-- FINALLY UPDATED AFTER 8 YEARS !!! --)
As of February 2026:
- All of the codes are rebuilt with GNU Radio V3.10 and python3
- The Python files used in the Python Block are consolidated into a single file.
- Added APRS I-Gate code.
Dependency
Installations
Download the code from the GitHub repo [here]
This OOT Module is built upon the GNU Radio hierarchical block scheme. The hierarchical block itself is "transparently" built graphically / visually using GRC. The hier blocks are provided in the gr-APRS/HierBlock folder.
Installation steps:
- git clone https://github.com/handiko/gr-APRS.git
- cd gr-APRS/HierBlock/.
- AFSK_Demod.grc AFSK_Demod.grc should be installed first.
- Click RUN (F6) button on GNU Radio companion (It will do nothing in the foreground, since it will just build and install the Hier Block silently). Then Close.
- APRS_Rx.grc APRS_Rx.grc should be installed after AFSK_Demod.grc.
- Again, Click RUN (F6) button and then Close.
- Open the GNU Radio. The new Hier Block will be listed under the APRS module.
Finish, and now you can open GRC files on gr-APRS/Examples/ or gr-APRS/TestScripts/ and run them.
About the HDLC to AX.25 block
This block, which uploads the TNC2 APRS sentence to APRS-IS, is constructed from the "Python Block," which is native to the GNU Radio Companion. To build one yourself:
- From the GNU Radio Core module, under Misc, add a Python Block into your flowgraph.
- Double-click that block to open the properties and then click Open in Editor.
- In the editor, copy and paste python code from gr-APRS/Module/epb.py, save, close, and hit OK.
- Now your Python Block should be turned into HDLC to AX.25 Block, have message i/o ports which are labelled as "hdlc in" and "ax25 out".
APRS-IS I-Gate Block
This block, which uploads the TNC2 APRS sentence to APRS-IS, is constructed from the "Python Block," which is native to the GNU Radio Companion. To build one yourself:
- From the GNU Radio Core module, under Misc, add a Python Block into your flowgraph.
- Double-click that block to open the properties and then click Open in Editor.
- In the editor, copy and paste python code from gr-APRS/Module/igate.py, save, close, and hit OK.
- Now your Python Block should be turned into an APRS-IS I-Gate Block, with message input port which are labelled as "pdu in".
Parameters:
- Callsign: Your callsign should be enclosed with " ", example: "YB1SDL"
- Passcode: Your APRS-IS passcode
- Lat: DDMM.SS format. Should be enclosed with " ", example: "0633.44S"
- Lon: DDDMM.SS format. Should be enclosed with " ", example: "10655.77E"
- Beacon interval: in seconds
- Server: default: "rotate.aprs.net"
- Port: default: 14580
- Comment: custom: "Your comment here."
Hier Blocks
All the hier blocks are constructed graphically using GNU Radio Companion. AFSK Demod hier block is required by the APRS Rx hier block.
AFSK Demod
APRS Rx
Examples
A few notes:
- AFSK Demod hier block is recommended to run with input samples per symbol (integer) of at least 20 and must be a value of input sample rate divided by baudrate.
- The output is sent to the Socket PDU Block. Run
telnet localhost 52001 to examine.
APRS RX RTL
From gr-APRS/Examples/APRS_RX_RTL.grc. This example uses the low-cost RTL-SDR dongle to receive the APRS signal on 144.390 MHz (for another frequency, please change the frequency in the grc).
The Dashboard:
PLEASE MAKE SURE YOU PUT THE PROPER CALIBRATION VALUE (PPM) IN THE OSMOCOM-SOURCE BLOCK. IT COULD BE DIFFERENT FROM DEVICE TO DEVICE. MINE IS 55-60 PPM (OR THEREABOUT)
APRS I-Gate
From gr-APRS/Examples/APRS_IGATE_RTL.grc. This example uses the low-cost RTL-SDR dongle to receive the APRS signal on 144.390 MHz and upload it to APRS-IS (functions as an I-Gate).
APRS SCARD
From gr-APRS/Examples/APRS_SCARD.grc. Utilizes onboard sound card for VHF Radio receiver.
APRS AFSK Complete WAV
From gr-APRS/TestScripts/APRS_AFSK_Complete_WAV.grc. Decodes audio files for testing.
TODO
- Bundle up all the codes using gr_modtool
- Optimizing AFSK Demodulation and Clock Sync process
- Tidy up this README file a bit :)
Acknowledgement
- WB2OSZ for the AFSK Demod scheme.
- Bob Bruninga and Dani Estevez for the clock synchronization method.
Contributing
- Fork it at GitHub
- Create new branch, commit your works, and create a Pull Request.
73 de YB1SDL
Email: (handikogesang a t gmail com)
This page was handcrafted in plain HTML. No Java, No Flash.
Last Updated: February 17, 2026