A minimal, cost-effective APRS iGate setup using RTL-SDR for receive-only operation. Perfect for amateur radio operators wanting to contribute to the APRS network with minimal investment.
- Ultra Low Cost: ~β¬50 total hardware cost
- Receive-Only: No RF transmission, just monitoring and forwarding
- Docker Based: Easy deployment and maintenance
- Minimal Hardware: Raspberry Pi Zero + RTL-SDR dongle
- Professional APRS Integration: Connects to APRS-IS servers
- Remote Monitoring: TCP interface for live packet viewing
| Component | Cost (approx) | Description |
|---|---|---|
| Raspberry Pi Zero W | β¬20-25 | ARM processor with WiFi |
| RTL-SDR Dongle | β¬15-20 | RTL2832U chipset |
| VHF Antenna | β¬5-10 | 144-148MHz optimized |
- Valid Amateur Radio License with callsign
- Linux system with Docker and Docker Compose installed
- APRS-IS passcode (get from apps.magicbug.co.uk)
git clone https://github.com/N1k0droid/simple-aprs-igate.git
cd simple-aprs-igate# Copy sample configuration
cp .env.sample .env
# Edit with your details
nano .envRequired Settings:
APRS_CALLSIGN=W1ABC-10 # Your callsign + SSID
APRS_PASSCODE=12345 # Your APRS-IS passcode
LATITUDE=40.7128 # Your GPS coordinates
LONGITUDE=-74.0060# Build Docker image
docker compose build
# Start iGate service
docker compose up -d
# Monitor startup
docker logs -f aprs-igate# View live APRS packets
./scripts/igate_manager.sh packets
# Check iGate status
./scripts/igate_manager.sh status
# View on APRS.fi - search for YOUR_CALL-10Once operational, you should see:
Console Output:
[0] W1ABC>APRS,WIDE1-1:!4208.75N/07115.12W>Mobile Station
[0] << [IG] W1ABC>APRS,WIDE1-1:!4208.75N/07115.12W>Mobile Station
APRS.fi Integration:
- Your iGate appearing on the map with coverage radius
- Local RF traffic forwarded to Internet
- Received stations showing "via YOUR-CALL-10"
# Start iGate
./scripts/igate_manager.sh start
# Stop iGate
./scripts/igate_manager.sh stop
# Restart (after config changes)
./scripts/igate_manager.sh restart
# View logs
./scripts/igate_manager.sh logs
# Monitor packets
./scripts/igate_manager.sh packets
# Check status
./scripts/igate_manager.sh statusEdit .env file to customize your iGate:
| Variable | Description | Example | Required |
|---|---|---|---|
APRS_CALLSIGN |
Your callsign + SSID | W1ABC-10 |
β |
APRS_PASSCODE |
APRS-IS passcode | 12345 |
β |
LATITUDE |
GPS latitude (decimal) | 40.7128 |
β |
LONGITUDE |
GPS longitude (decimal) | -74.0060 |
β |
APRS_SERVER |
APRS-IS server | euro.aprs2.net |
No |
FILTER_RADIUS |
Geographic filter (km) | 100 |
No |
RTL_PPM |
Frequency correction | 0 |
No |
| Region | Server | Port |
|---|---|---|
| Europe | euro.aprs2.net |
14580 |
| North America | noam.aprs2.net |
14580 |
| Asia-Pacific | asia.aprs2.net |
14580 |
| Global | rotate.aprs2.net |
14580 |
- Europe: 144.800MHz
- North America: 144.390MHz
- Modulation: AFSK 1200 baud
- Sample Rate: 22.05 kHz
- Protocol: APRS-IS TCP
- Geographic Filtering: Configurable radius
- Beacon Interval: 30 minutes
- Packet Forwarding: RF β Internet only
- Raspberry Pi Zero W: ~0.7W
- RTL-SDR: ~0.3W
- Total: ~1W (suitable for solar power)
APRS RF (144.800MHz) β RTL-SDR β rtl_fm β Direwolf β APRS-IS β aprs.fi
- rtl_fm: RTL-SDR demodulation
- Direwolf: APRS packet decode/encode
- Docker: Containerized deployment
- Ubuntu 22.04: Base system
# Test RTL-SDR access
docker exec -it aprs-igate rtl_test -t
# Expected output: RTL-SDR device detectedCommon Issues:
- Antenna not connected or poorly positioned
- No local APRS activity (verify with handheld radio)
- RTL-SDR device not accessible to container
# Verify callsign and passcode
cat .env | grep APRS_
# Test internet connectivity
ping euro.aprs2.netCommon Issues:
- Invalid APRS passcode
- Firewall blocking port 14580
- Network connectivity problems
# View detailed logs
docker logs aprs-igate
# Rebuild container
docker compose build --no-cache
# Check Docker system
docker system info# Check frequency accuracy
rtl_test -p
# Run for 5-10 minutes and note PPM error
# Add the PPM value to your .env fileYour iGate contributes to the global APRS network by:
- Receiving local APRS packets on VHF frequency
- Decoding packets using professional Direwolf TNC software
- Forwarding to APRS-IS servers for global distribution
- Publishing position beacon showing iGate location and coverage
Your iGate will appear on aprs.fi with:
- Gateway symbol (diamond with "R" overlay)
- Position beacon every 30 minutes
- Coverage radius based on received stations
- Statistics showing packets forwarded
# Build development image
docker compose build
# Run with logs
docker compose up
# Test configuration changes
./scripts/igate_manager.sh restartThis project is licensed under the MIT License - see the LICENSE file for details.
- Direwolf - Professional APRS TNC software by WB2OSZ
- RTL-SDR - Affordable SDR hardware enabling this project
- APRS-IS - Internet backbone of the APRS network
- Amateur Radio Community - For developing and maintaining APRS
73 & Happy DXing! π»