Skip to content

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.

Satellite Communications5 min readUses the RF Link Budget Calculator

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:

ParameterValue
Frequency0.437 GHz (437 MHz)
EIRP−3 dBW (500 mW into a ~0 dBi antenna)
Receiver G/T−12 dB/K
Path distance739 km
Elevation angle30°
Site40.0° N, 74.0° W
ModulationBPSK
Required Eb/N05 dB
Data rate9600 bit/s
Target availability95 %

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:

d=(RE+h)2−(REcos⁡θ)2−REsin⁡θd = \sqrt{(R_E + h)^2 - (R_E\cos\theta)^2} - R_E\sin\theta

with RER_E = 6378 km, hh = 400 km and θ\theta = 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 = 20log⁡10(4π⋅739 km⋅437 MHz/c)20\log_{10}(4\pi \cdot 739\,\mathrm{km} \cdot 437\,\mathrm{MHz}/c) = 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 = Eb/N0+10log⁡10(Rb)=5+10log⁡10(9600)E_b/N_0 + 10\log_{10}(R_b) = 5 + 10\log_{10}(9600) = 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 passSlant rangeFSPLMargin
Overhead, 90°400 km137.3 dB31.2 dB
Mid-pass, 30°739 km142.6 dB25.8 dB
Horizon-grazing, 5°1,805 km150.4 dB18.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:

  1. Doppler — at 437 MHz a LEO pass shifts the carrier by up to about ±10 kHz within minutes. The receiver must track it.
  2. Spacecraft tumble — an uncontrolled cubesat sweeps its antenna nulls across the ground station. Budget 5–10 dB of tumble margin.
  3. Ground multipath — low elevations bring in ground reflections that fade the signal.
  4. 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 = 5+10log⁡10(115,000)5 + 10\log_{10}(115{,}000) = 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

  1. Enter the slant range, not the altitude. At 30° elevation from a 400 km orbit the difference is 5.3 dB.
  2. UHF amateur links have large margins — about 26 dB at 30° for 500 mW and 9600 bit/s.
  3. The binding constraints are Doppler, tumble, multipath and local noise, not the link budget.
  4. A portable handheld station can copy the satellite, with about 16 dB to spare.
  5. Higher data rates work for part of each pass. Check the budget at your lowest useful elevation.
Updated 2026-09-19. The preset's path distance was the 400 km orbit altitude; it is now the 739 km slant range at 30° elevation, and the margins above changed accordingly (the earlier 31.5 dB was the overhead value). The same correction was applied to every LEO preset in the tool. Open the Satellite Link Budget Analyzer →

Frequently asked questions

From a 400 km orbit at 437 MHz, with a SatNOGS-class ground station (G/T = −12 dB/K) and 9600 bit/s BPSK, the margin is about 31 dB overhead, 26 dB at 30° elevation (739 km slant range) and 18 dB at 5° (1,805 km).
Doppler (up to about ±10 kHz over a pass at 437 MHz), spacecraft tumble sweeping antenna nulls across the station (budget 5–10 dB), ground multipath at low elevation, and local RF noise from switching supplies and power lines, which can raise the receiver noise by 10–20 dB.
Yes. An Arrow antenna (~8 dBi) into an SDR dongle gives roughly G/T = −22 dB/K, which still leaves about 16 dB of margin for 9600 bit/s BPSK at 30° elevation.
No. The path distance is the slant range at the elevation you analyse. From a 400 km orbit it is 739 km at 30° and 1,805 km at 5°; using 400 km understates the free-space loss by 5.3 dB and 13.1 dB respectively.
At 30° elevation, 115 kbit/s leaves about 15 dB of margin and 1 Mbit/s about 6 dB — but 1 Mbit/s would not close near the horizon. The amateur allocation's channel widths usually limit the rate before the link budget does.
Back to the blog