Building a Ground Station for LEO Satellites: A No-Nonsense Guide

By | Friday, June 19, 2026

If you want to pull data from a Low Earth Orbit satellite, you need a ground station that works when it counts. Henrik Lindqvist has put together a few of these for small satellite operators, and he’ll tell you straight: the job is part engineering, part patience, and part knowing where to spend your money. LEO birds zip across the sky in 5 to 15 minutes, so your setup has to lock on fast, track smoothly, and grab every byte before the signal disappears over the horizon. Here’s how to think about building one without overcomplicating things.

Understanding the LEO Environment

LEO satellites move. Fast. At altitudes between 200 and 2,000 kilometers, a typical pass gives you a short window—sometimes just a few minutes. Unlike a geostationary dish that sits there pointing at a fixed spot in the sky, your antenna has to chase the spacecraft. And while it’s chasing, the frequency is shifting because of Doppler. If you’re working UHF or S-band, that shift can be enough to slide the signal right out of your receiver’s filter unless you correct for it on the fly.

Signal strength is another headache. A 3U CubeSat putting out a single watt from 400 kilometers away might hit your antenna at -120 dBm. That’s a whisper. You’ll need a decent antenna, a low-noise amplifier mounted right at the feed point, and the shortest, lowest-loss cable you can manage. When the satellite is barely above the treeline, every fraction of a decibel matters.

Choosing and Mounting the Antenna

The antenna is the most obvious part of the station, and it’s where a lot of the budget goes. For LEO work, you want something directional with moderate gain—think 12 to 18 dBi. A Yagi-Uda array or a small parabolic dish usually fits the bill. Omnidirectional antennas are simpler, but unless your satellite is blasting out a lot of power, you’ll struggle to get a solid downlink.

Tracking is mandatory if you want more than a few kilobytes per pass. A two-axis rotator driven by a computer, fed with fresh TLE data, keeps the antenna aimed as the satellite arcs overhead. Henrik leans on open-source tools like Gpredict, or sometimes a custom script using the Hamlib library. The rotator controller should take azimuth and elevation commands over a serial link or TCP/IP. A manual override is a good backup—when the software gets confused during testing, you’ll be glad you can grab the controls yourself.

Satellite dish antenna against blue sky

Site Survey and Grounding

Don’t pour concrete until you’ve checked the horizon. You need a clear view from 0 to 360 degrees azimuth, ideally down to zero elevation, though 5 to 10 degrees is often workable if your link budget has some margin. Buildings, trees, even power lines can bounce signals around or block them outright. Grab a spectrum analyzer and measure the noise floor on the bands you care about. Urban locations are noisy—VHF and UHF can be swamped with man-made interference that drowns out a weak satellite signal.

Lightning protection isn’t a nice-to-have. A single-point ground, surge arrestors on every feedline, and a lightning rod taller than the antenna will save your gear when a storm rolls through. Henrik has seen the aftermath of a nearby strike that sent a surge down an ungrounded coax shield and fried an SDR front-end. That’s an expensive lesson.

Building the Receiver Chain

Start at the antenna feed point. The first active component should be a low-noise amplifier mounted as close as you can get it. This LNA sets the noise figure for the whole system. For 137 MHz weather satellites, look for something below 0.7 dB with about 20 dB of gain. At S-band, aim for under 1.0 dB. The LNA also needs enough linearity to handle strong out-of-band signals without creating intermodulation products that land in your passband.

After the LNA, a bandpass filter knocks down FM broadcast, pager, and cellular signals that could saturate the next stage. Then the signal travels through coax—LMR-400 for short runs, hardline if you’re going further—to the receiver. Henrik’s preference is to put the receiver right at the antenna, digitize early, and send digital samples over fiber or Ethernet to the control room. That way, cable loss after the LNA is a non-issue.

Satellite dish with complex equipment setup

Software-Defined Radio as the Core

These days, almost every LEO station uses an SDR. Something like a USRP B210 or LimeSDR gives you wide bandwidth, high sample rates, and the flexibility to record whole passes for later analysis. Pay attention to noise figure and dynamic range. A 12-bit ADC sampling at 20 MSPS can grab a 10 MHz chunk of spectrum, which is handy if you want to listen to several satellites at once.

Doppler correction happens in software. The received frequency climbs as the satellite approaches and drops as it leaves. Your SDR software has to keep adjusting the local oscillator or apply a frequency shift to the baseband. Henrik often uses a GNU Radio block that reads a pre-computed Doppler profile and tunes the SDR in real time, keeping the signal centered.

Demodulation and Signal Processing

Once you’ve captured the raw IQ samples, the real work starts. Most LEO satellites use straightforward modulation: BPSK, QPSK, GMSK, or AFSK. If you need real-time command and control, a GNU Radio flowgraph with a custom demodulator block does the job. For bulk data downlink, recording the pass and processing it offline often gives better results—you can tweak synchronization and error correction without the clock ticking.

Forward error correction is a must. Check the satellite’s published link parameters for the coding scheme—often convolutional coding with Viterbi decoding, or LDPC for higher rates. Many university CubeSats follow the CCSDS standard, which gives you a clear framework for packet extraction. Tools like gr-satellites and SatDump include pre-built decoders for common telemetry formats, which can save you weeks of head-scratching.

Automating Pass Operations

A station that needs a human to start every pass doesn’t scale. Once the hardware checks out, automate the workflow. A scheduler pulls upcoming passes from TLE data, prioritizes satellites, and kicks off the rotator, SDR, and demodulator at the right moment. For a handful of passes a day, a cron-based system works fine. For busier schedules, Henrik suggests a lightweight task queue like Celery backed by Redis.

Automation has to handle failure gracefully. If the rotator jams, the scheduler should abort the pass and alert you instead of recording static. If the signal-to-noise ratio tanks, flag that data for review. Log everything—satellite ID, max elevation, signal quality, data volume—so you can spot trends and catch hardware problems before they bite you.

Radio telescope dish under starry night sky

Data Handling and Storage

A single LEO pass can dump gigabytes of raw IQ data, especially on S-band or X-band. You need a plan for that. A NAS with RAID redundancy is the bare minimum if you’re serving multiple missions. Organize data by satellite, pass start time, and frequency band. Automated cleanup scripts can delete raw IQ files after successful decoding to keep disk space in check.

Decoded payloads—images, telemetry, science data—have to reach the end user. Henrik likes a simple REST API or an SFTP drop box. If the station is part of a distributed network, a message queue like RabbitMQ can push data to a central repository. That lets multiple stations cover gaps in constellation visibility, so one station’s blind spot doesn’t mean lost data.

Weather, Environment, and Regulations

Outdoor gear has to survive local conditions. Antennas and rotators need wind-load ratings for your site. Near the coast, salt spray eats metal fast—stainless steel hardware and sealed connectors are worth the extra cost. In freezing climates, heated radomes stop ice from building up on antenna surfaces, which can detune the antenna and add noise.

Licensing is tedious but unavoidable. Rules vary by country. In the US, the FCC wants an experimental license for most non-amateur LEO stations. Amateur bands work for educational missions, but they come with limits on power and encryption. Start the paperwork early—it can drag on for months—and get to know your local spectrum authority.

Testing and Validation

Don’t trust the station with mission data until you’ve tested every piece. Inject a known signal at the antenna port and verify noise figure and gain through the receiver chain. Track the ISS or a well-known weather satellite to check rotator accuracy and Doppler correction. Record and decode public satellites like NOAA 18 or Meteor-M2 to benchmark the full system. Only when the station consistently delivers clean data from these sources should you point it at a client’s spacecraft.

Henrik insists on a test plan that includes failure scenarios. Simulate a rotator stall, a power outage, a network drop. Make sure the system recovers on its own or at least fails safely. Write down the recovery steps. When something breaks at 3 a.m. during a critical downlink, a checklist keeps you from making dumb mistakes.

FAQ

What’s the smallest antenna I can get away with for a reliable LEO station?

For UHF downlinks around 437 MHz, a 7-element Yagi with 12 dBi gain handles most CubeSat missions. For S-band at 2.2 GHz, a 1-meter parabolic dish with 18 dBi gain is typical. The exact size depends on the satellite’s transmitter power, data rate, and how much link margin you need. Run a link budget before you buy anything.

Can I use a cheap amateur SDR for professional tracking?

Yes, with limits. A HackRF One or RTL-SDR works for VHF/UHF telemetry from educational satellites, but they don’t have the dynamic range or sample rate for high-speed S-band or X-band downlinks. For professional missions, spend the money on a USRP B210 or LimeSDR—better filtering, higher bit depth, and wider bandwidth.

How do I handle a whole constellation of satellites?

One ground station might not be enough. You can set up multiple antennas and receivers, each dedicated to a specific band or orbital plane. Or use a wideband SDR and a multi-feed antenna to catch several passes at once. Pass scheduling software has to deconflict overlapping passes and prioritize based on data urgency. Distributed networks, where multiple sites share data over the internet, are becoming the norm for large LEO constellations.

What’s the biggest mistake new operators make?

Ignoring local RF noise. Urban sites can have noise floors 10 to 20 dB higher than rural ones, especially on VHF. That eats into your link margin and can make weak signals undecodable. Always do a site survey with a spectrum analyzer before you commit. If the noise floor is too high, think about a remote site with a fiber link back to your operations center.