RF Environment
A shared, deterministic slice of air that radio devices occupy — no pins, no wires
An RF Environment is the air between radios. Radio-capable boards, modules, and Wi-Fi Networks in the same environment contend for the same medium: path loss weakens signals, noise raises the floor, and transmissions that overlap in time can collide.
It has no pins. Radios join by membership rather than a wire because RF is a space devices share, not an electrical connection between two endpoints.
const room = graph.addComponent(Components.RF_ENVIRONMENT);const c3 = graph.addComponent(Components.XIAO_ESP32C3);const network = graph.addComponent(Components.WIFI_NETWORK);room.joinRfEnvironment(c3, network);A radio belongs to at most one RF Environment.
What is modeled
Section titled “What is modeled”SX carries complete 802.11 MAC frames plus the Layer-1 metadata needed to decide whether a receiver can decode them: channel, transmit power, path loss, noise, rate, frame length, and timing overlap. It does not calculate I/Q samples or individual modulation waveforms.
A run has one simulation seed. Scheduler timing and RF outcomes derive from it, and RF randomness is keyed per transmission and receiver, so adding an unrelated radio does not reshuffle earlier devices’ random outcomes. Reusing the graph and seed reproduces the same simulated RF trace. Live Internet responses remain external and are not replayable.
Real-world setup
Section titled “Real-world setup”Most users configure the room in real-world terms. These are the editor defaults:
| Control | Default | What it describes |
|---|---|---|
| Environment | Typical home | Quiet room, typical home, busy office, or industrial/noisy |
| Typical distance | 8 m | Representative separation between devices |
| Obstacles | One wall | Clear line of sight, one wall, several walls, or a metal enclosure |
| Nearby Wi-Fi networks | 3 | Decodable background 802.11 beacon and data traffic |
| Non-Wi-Fi interference | None | Light or heavy non-decodable RF energy, such as machinery or a microwave |
The editor resolves those choices into exact channel values and saves both the
friendly authoring intent and the resolved values. The resolved values remain
authoritative, so a future profile update cannot change an existing graph.
Advanced RF settings
Section titled “Advanced RF settings”Open Advanced RF settings only when a test needs exact radio conditions:
| Setting | Typical home value | Meaning |
|---|---|---|
defaultPathLossDb | 66 dB | Room-wide signal loss between devices |
defaultNoiseFloorDbm | −92 dBm | Room-wide background noise |
minimumDecodeOverlapPpm | 800000 (80%) | Minimum packet overlap treated as a collision |
captureMarginDb | 10 dB | How much stronger one signal must be to win a collision |
links | [] | Directed, optionally time-varying signal-loss overrides between named radios |
noiseSources | [] | Scheduled non-decodable energy with a center frequency and bandwidth |
trafficSources | generated | Protocol-aware ambient transmitters; normally generated by Nearby Wi-Fi networks |
Use a directed link when one pair needs different conditions from the rest of
the room—for example, sensor-a may reach gateway through one wall while the
reverse path or another receiver has a different loss. A link schedule can
change that loss at a simulated time to model walking out of range or roaming.
Use a noise source for energy that cannot be decoded as Wi-Fi. To model actual neighboring Wi-Fi, use Nearby Wi-Fi networks or a protocol-aware traffic source instead, because a Wi-Fi preamble affects carrier sense differently from generic energy.
Retained frame traces (traceCapacity, default 10000) is under Debugging &
Performance. It controls memory and observability, not RF behavior.
Outputs
Section titled “Outputs”trace_records, received_frames, ambient_traffic_sources, and
ambient_frames_emitted are readable live with run.stream(room.id).
last_trace explains the latest receiver decision, including transmitter and
receiver IDs, timing, PHY/rate, frame length, transmit power, path loss, RSSI,
noise, minimum SINR, packet-error probability, deterministic random roll,
decision/reason, and the raw frame bytes.
run .stream<{ last_trace?: { decision: unknown; rssi_mdbm: number } | null; }>(room.id) .subscribe(({ value }) => { console.log(value.last_trace?.decision, value.last_trace?.rssi_mdbm); });The SDK can also inject exact or deliberately malformed 802.11 bytes at a scheduled simulated time. Injected frames take the normal airtime, interference, packet-error, receive, and trace path rather than bypassing the room.
See also
Section titled “See also”- Wi-Fi Network — infrastructure Wi-Fi, DHCP/DNS, Internet access, and a browser’s point of view