Build your own satellite ground station and join a worldwide network
Hundreds of small satellites are beaming telemetry down right now, and the International Space Station runs a packet radio relay anyone can hear. Predict every pass over your house, decode real satellite packets from a recording in step 2, then build a station with a £50 radio and a home-made antenna that joins SatNOGS, the open network of ground stations that downloads data for satellite teams around the world.
- A SatNOGS ground station on a Raspberry Pi, scheduled by the network and feeding the open satellite database
- A kit: pass predictor, satellite list, recording fetcher, Dire Wolf config, antenna guide and SatNOGS checklist
- An RTL-SDR Blog V4 with its dipole kit (around £50 to £82; The Pi Hut lists it at £81.60)
- A Raspberry Pi 4 or 5 (2GB is enough) with PSU and a 32GB microSD for the network station
- A garden, balcony or flat roof with a view of the sky for the antenna
- Python 3 on your computer, and comfortable with SSH: Terminal survival kit
- For contributing to SatNOGS only: a free SatNOGS account. Everything else needs no account at all
What's overhead tonight: predict every pass
Know exactly when each satellite rises, how high it climbs, and which way to look.
How it worksSatellites in low Earth orbit circle the planet every 90 to 100 minutes at 400 to 800km up. From your garden each one is visible for 10 to 15 minutes per pass, rising on one horizon and setting on the other. While it's up, its transmitter is a few watts, which a cheap software-defined radio and a simple antenna hear clearly.
The amateur satellitesRadio amateurs, universities and space agencies fly satellites that transmit on the 2m (145 MHz) and 70cm (436 MHz) bands in open formats: FM voice repeaters, APRS packets and telemetry beacons with temperatures, voltages and status. Listening is open to everyone. The ISS carries an APRS digipeater on 145.825 MHz and an FM repeater on 437.800 MHz.
The kitDownload the kit or open kit.md. passes.py downloads fresh orbital elements from CelesTrak ↗ (free, no account) and predicts passes for the satellites in satellites.csv. Put in your own coordinates:
Any computer with uvuv run --with skyfield==1.55 python passes.py --lat 51.5072 --lon -0.1276 --hours 12 --min-el 30Outputstart (UTC) satellite MHz max el rise > set mins doppler mode Mon 02:40 METEOR-M2-4 137.900 41d NNE > S 15 +2.9kHz LRPT Mon 03:59 NO-44 (PCSAT) 145.825 62d NW > SE 16 +3.1kHz AFSK 1200 APRS Mon 04:20 METEOR-M2-4 137.900 37d N > SW 15 +3.0kHz LRPT Mon 07:16 AO-91 145.960 39d SE > N 12 +3.3kHz FM voice + DUV telemetry Mon 08:20 ISS 145.825 62d WSW > ENE 11 +3.3kHz AFSK 1200 APRS ... Mon 09:57 ISS 145.825 86d W > E 11 +3.3kHz AFSK 1200 APRS Mon 10:03 SO-50 436.795 50d WSW > NE 14 +9.4kHz FM voice repeater 13 passes above 30 degrees in the next 12 hoursRead the table
max elis how high the pass climbs: above 30 degrees is easy, above 60 is excellent.rise > setis where to point a handheld antenna.doppleris how far off frequency the signal arrives at rise: the satellite is moving at 7.5km/s, so it sounds higher as it approaches and lower as it leaves. At 145 MHz that's about 3kHz, inside an FM channel. At 436 MHz it's about 9kHz and you'll need to retune during the pass.
If it breaksIt prints 0 passes + 1 more
It prints 0 passes
--min-el to 10 and raise --hours to 48. Check longitudes west of Greenwich are negative: Manchester is --lon -2.24.