Fairwave Documentation¶
Fairwave defaults to lab/no-RF mode. Transmitting on cellular bands without proper authorization is illegal in most jurisdictions. You are solely responsible for licenses, SAS grants, indoor restrictions, and type approval. HyperonX and contributors provide software as-is for lawful private networks, research, and shared-spectrum regimes only.
What is Fairwave?¶
Fairwave is an open-source community small-cell: a self-contained private 4G/5G network built from commodity hardware and open-source software. A Fairwave node is an x86 or ARM mini-PC paired with an SDR (USRP, LimeSDR, or BladeRF) running:
- Open5GS as the 4G EPC (MME, SGW, PGW, HSS) - the default core.
- free5GC as the optional 5G SA core (AMF, SMF, UPF, NRF, PCF, NSSF, AUSF, UDM, UDR;
core: free5gc). - srsRAN Project as the eNB/gNB (and srsUE as a test handset, 4G and 5G SA over ZMQ).
- fairwave-control (Go) as the control plane that glues the node together - including fair-use metering with per-UE quotas and auto-suspend, measured from the core (GTP-U tap in 4G, free5GC CHF CDRs in 5G).
- fairwave-agent (Go) on each node, and fairwave-cli (Go) for operators.
- An operator UI and a captive portal for subscriber onboarding.
Fairwave targets lawful private networks, research, education, and shared-spectrum regimes (CBRS GAA, ISM-adjacent experimentation under local rules). It ships RF-disabled by default: the default stack is a fully virtual lab using srsRAN's ZMQ virtual radio with zero emissions.
Project facts¶
- Release: v0.1.0 (lab) - no-RF virtual radio only.
- Defaults: PLMN
999-99, TAC7, APNsinternetandims. - Cores: Open5GS EPC (4G, default) and free5GC 5G SA (opt-in via
core: free5gc;deploy/docker-compose.5g.yml). - Fair use: per-UE byte counters from the core - GTP-U tap (4G) or free5GC CHF CDR files (5G) - feeding quotas with auto-suspend (
fairwave sim quota/usage). - Lab mode: srsRAN eNB/gNB and srsUE over ZMQ virtual radio inside Docker; no SDR touched.
- TX gate: real RF requires the
tx_armgate: country code + license acknowledgment + frequency allow-list, all three set. - Lifecycle: provision → register → on-air → peer → breakout, with local breakout (edge NAT) as default and WireGuard mesh peering as an option.
- SIMs: offline-first provisioner, IMSI-based (15 digits), lab and prod profiles kept separate; Ki/OPc never committed or logged.
- Milestones: M0 (bootstrap) through M6 (production hardening); see
/design/roadmap.md.
Documentation map¶
| Area | Path |
|---|---|
| Get running in 30 minutes, no RF | Tutorials: quickstart no-RF |
| Lab deep dive | Tutorials: lab attach |
| Multi-node meshes | Tutorials: two-box peering · Peering overview |
| Subscriber credentials | SIM lifecycle · Provisioner · Bureau runbook · Revocation · eSIM |
| Operator security | Security overview · Operator auth · Privacy · Release signing |
| APIs | API overview · REST reference · gRPC note · api/openapi.yaml |
| Reference | Glossary · Troubleshooting · Regulator FAQ · Carrier FAQ · What Fairwave is NOT |
| Decisions | ADR index - ADR-0001 through ADR-0013 |
| Design documents | /design/threat-model.md, /design/spectrum-matrix.md, /design/roadmap.md (mirrored in nav) |
flowchart LR
subgraph Node
CLI[fairwave-cli] --> CP[fairwave-control]
AG[fairwave-agent] --> CP
CP --> O5[Open5GS EPC]
O5 --> ENB[srsRAN eNB / ZMQ]
ENB --> SDR[SDR / virtual radio]
O5 --> CAP[Captive portal]
end
CP <-->|WireGuard + mTLS| CP2[Peer node]
Where to start¶
Follow the 30-minute no-RF quickstart. It boots a complete EPC with a virtual eNB and UE on your laptop and ends with a live attach and a clean teardown.
If you plan to touch anything that could emit RF, read the spectrum gate ADR, the spectrum matrix, and the regulatory FAQ first - and remember the banner at the top of this page.