Sizing a 9600-baud UHF Downlink for a 3U CubeSat: Full Walkthrough
End-to-end link budget for an amateur-band 3U cubesat: EIRP, slant range, ground-station G/T, propagation losses and Monte Carlo margin.
The mission
You're designing a 3U cubesat for a university or startup amateur-radio mission. Downlink frequency: 437.5 MHz (amateur UHF). Data rate: 9600 baud, BPSK or GMSK. Ground station: a modest backyard setup with a crossed Yagi on an azimuth/elevation rotor, or a SatNOGS station run from a Raspberry Pi.
Can the link close? What margin do you have? What happens during a pass that barely clears the horizon?
Let's walk through it with the rftools Satellite Link Budget Analyzer and its built-in Amateur CubeSat (UHF, AMSAT/SatNOGS) preset.
The preset
Load the Amateur CubeSat (UHF, AMSAT/SatNOGS) preset and you get:
| Parameter | Value |
|---|---|
| Frequency | 0.437 GHz (437 MHz) |
| EIRP | −3 dBW (500 mW into a ~0 dBi antenna) |
| Receiver G/T | −12 dB/K |
| Path distance | 739 km |
| Elevation angle | 30° |
| Site | 40.0° N, 74.0° W |
| Modulation | BPSK |
| Required Eb/N0 | 5 dB |
| Data rate | 9600 bit/s |
| Target availability | 95 % |
The satellite radiates about 500 mW from a small canted-turnstile antenna, which gives −3 dBW (27 dBm) EIRP. The ground G/T of −12 dB/K is a typical SatNOGS-class station: a crossed Yagi of about 12 dBi, a couple of dB of feed loss, and a receiver with a system noise figure around 1.5 dB plus sky noise.
The path distance is the slant range, not the orbit altitude. A satellite in a 400 km orbit is 400 km away only when it is directly overhead. At 30° elevation it is 739 km away:
with = 6378 km, = 400 km and = 30°. Entering the altitude instead would understate the free-space loss by 5.3 dB.
Step 1: The budget at 30° elevation
Click Run and the tool computes:
- FSPL = = 142.6 dB.
- Gaseous absorption = 0.02 dB. Cloud and rain attenuation round to zero at UHF.
- C/N0 = EIRP + G/T − FSPL − losses + 228.6 = 70.65 dBHz, including 0.3 dB of pointing and polarization loss.
- Required C/N0 = = 44.82 dBHz.
- Margin = 25.8 dB.
Two caveats. The ITU-R rain and gas models are specified from 1 GHz upward, so at 437 MHz the tool extrapolates them — the losses are a few hundredths of a dB either way. And the tool's single 0.3 dB pointing-and-polarization term is small for a tumbling cubesat: budget 0.5–3 dB of polarization loss between a canted turnstile and a crossed Yagi, depending on attitude.
A 25.8 dB margin is enormous. UHF amateur links are generous because the data rate is so low: 9600 bit/s needs only 44.8 dBHz.
Step 2: The pass geometry
The same satellite over a whole pass:
| Point in the pass | Slant range | FSPL | Margin |
|---|---|---|---|
| Overhead, 90° | 400 km | 137.3 dB | 31.2 dB |
| Mid-pass, 30° | 739 km | 142.6 dB | 25.8 dB |
| Horizon-grazing, 5° | 1,805 km | 150.4 dB | 18.0 dB |
Even at 5° the link-budget margin is 18 dB. UHF cubesat links don't drop out for lack of link budget. They drop out because of:
- Doppler — at 437 MHz a LEO pass shifts the carrier by up to about ±10 kHz within minutes. The receiver must track it.
- Spacecraft tumble — an uncontrolled cubesat sweeps its antenna nulls across the ground station. Budget 5–10 dB of tumble margin.
- Ground multipath — low elevations bring in ground reflections that fade the signal.
- Local noise — power-line hum, cable-TV leakage and switching supplies in the shack can raise the effective noise temperature by 10–20 dB.
The 18 dB at the horizon absorbs most of that.
Step 3: A smaller ground station
A portable station — a handheld Arrow antenna of about 8 dBi into an SDR dongle — has a G/T nearer −22 dB/K. Change G/T to −22 dB/K and re-run at 30°:
- C/N0 drops by 10 dB to 60.65 dBHz.
- Margin = 15.8 dB.
Still comfortable, which is why a portable station is a viable backup for an early-stage mission.
Step 4: A higher data rate
What if the payload wants 115 kbit/s for imagery instead of 9600 bit/s telemetry? Change Data Rate to 115,000:
- Required C/N0 = = 55.61 dBHz.
- Margin at 30° = 15.1 dB.
At 1 Mbit/s the margin at 30° is still 5.7 dB — but at 5° elevation the budget is 7.9 dB worse, leaving about −2.2 dB, so a 1 Mbit/s downlink only works for the higher part of each pass. At that point the amateur allocation's channel widths, not the link budget, usually set the limit.
Step 5: Monte Carlo for the design review
Before a design review or an IARU frequency-coordination request, run the Monte Carlo. It is an uncertainty model around the nominal budget:
- EIRP and G/T: normal, σ = 0.3 dB each.
- Pointing loss: exponential, mean 0.2 dB.
- Rain rate: log-normal, σ = 0.5 — irrelevant at UHF.
- Fading: |normal|, σ = 0.4 dB.
For the preset, p5 / p50 / p95 margins are 24.4 / 25.3 / 26.2 dB. The spread is under 2 dB because the uncertainties are small next to the headroom — a quick sign that the link is robust. It does not model tumble or multipath, so keep the explicit tumble margin from Step 2.
Saving the scenario
Once you've explored the variants, click Copy scenario URL and paste the link into your mission documentation — reviewers see exactly the same inputs. Export CSV writes the budget in an AMSAT/IARU-style spreadsheet for the design-review packet.
Takeaways for cubesat teams
- Enter the slant range, not the altitude. At 30° elevation from a 400 km orbit the difference is 5.3 dB.
- UHF amateur links have large margins — about 26 dB at 30° for 500 mW and 9600 bit/s.
- The binding constraints are Doppler, tumble, multipath and local noise, not the link budget.
- A portable handheld station can copy the satellite, with about 16 dB to spare.
- Higher data rates work for part of each pass. Check the budget at your lowest useful elevation.