Skip to content

Build a wireless link budget

Print every path-loss, receive-power, margin and Fresnel calculation before making a bounded radio-placement decision.

Radio Rosa: I want you to inspect every gain and loss before trusting the final margin., your practice guide

Radio Rosa: I want you to inspect every gain and loss before trusting the final margin.
Predict the reading, then compare it with the measurement.

Python 3 in your browser (JupyterLite)

Python · no install

Print every path-loss, receive-power, margin and Fresnel calculation before making a bounded radio-placement decision.

Tier 2 · Web · paste-in setup · No account

Version tested: Python 3.12.7 / Pyodide 0.27.6 in JupyterLite 0.6.4; Chromium 148.0.7778.96; captureSource playwright:jupyterlite. Date: 2026-09-10.

Open the notebook in your browser and run each Python cell; no install or account is needed.

Three ways to run: use JupyterLite here with no install; run main.py locally from the downloadable lab folder; or open the same notebook in Google Colab.

Open in your browser (new tab)

Steps

Screens captured against Python 3 in your browser (JupyterLite) Python 3.12.7 / Pyodide 0.27.6 in JupyterLite 0.6.4; Chromium 148.0.7778.96; captureSource playwright:jupyterlite on 2026-09-10; the tool may have moved on — the text steps are the contract.

  1. 1 Step 1

    Do
    Freeze the fictional 868 MHz radio assumptions.
    You will see
    Transmit power, gains, losses, sensitivity and reserve are printed with units.
    Why it matters
    A link-budget result is only meaningful with its input contract.
    JupyterLite step 1 showing link assumptions.
    Step 1 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  2. 2 Step 2

    Do
    Calculate free-space loss at four distances.
    You will see
    The FSPL table shows distance and loss through one kilometre.
    Why it matters
    Printing intermediate loss prevents a final margin from hiding a unit error.
    JupyterLite step 2 showing free-space path loss.
    Step 2 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  3. 3 Step 3

    Do
    Compare free-space and log-distance models.
    You will see
    Three rows show both losses and their difference under exponent 2.7.
    Why it matters
    Environmental assumptions can dominate the ideal free-space estimate.
    JupyterLite step 3 comparing propagation models.
    Step 3 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  4. 4 Step 4

    Do
    Build the receive-power and margin ledger.
    You will see
    Each distance shows path loss, received dBm and margin above sensitivity.
    Why it matters
    The ledger connects every gain and loss to the receiver decision.
    JupyterLite step 4 showing receive power and margin.
    Step 4 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  5. 5 Step 5

    Do
    Calculate midpoint Fresnel clearance.
    You will see
    The table gives the first-zone radius and 60-percent clearance target.
    Why it matters
    A strong arithmetic margin does not remove obstruction risk.
    JupyterLite step 5 showing Fresnel clearance.
    Step 5 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  6. 6 Step 6

    Do
    Compare three sensitivity and data-rate modes.
    You will see
    The one-kilometre table shows how lower-rate sensitivity changes margin.
    Why it matters
    Range, receiver threshold and airtime must be reviewed together.
    JupyterLite step 6 comparing radio modes.
    Step 6 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  7. 7 Step 7

    Do
    Make a bounded placement decision.
    You will see
    The notebook marks the one-kilometre plan for revision and lists missing field evidence.
    Why it matters
    A spreadsheet hypothesis needs a measured site survey before release.
    JupyterLite step 7 showing the revise decision.
    Step 7 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)

Chapter checks

These questions refer to the chapter’s examples. Use the return links to review their answers.

  1. A node has good average signal strength but intermittent packet loss. What should the learner consider?

    Return to the chapter’s knowledge check
  2. A sensor reports strong RSSI, but packet retries increase whenever nearby equipment is active. What should you review first?

    Return to the chapter’s knowledge check

Caution

These are fictional planning inputs, not a measured radio path. Check legal EIRP, antenna placement, interference, fading and packet delivery on site.

Return to Wireless Propagation: Fading and Interference · Browse Labs