GNU Radio in the browser
GNU Radio World: SDR Directly in Your Browser
GNU Radio World provides a complete environment for creating and executing GNU Radio flowgraphs without ever leaving your web browser. It essentially replicates the GNU Radio Companion experience—both the visual editor and the execution runtime—entirely within a single browser tab.
🛠️ Technical Architecture
By compiling the core GNU Radio DSP stack and the associated Qt GUI sinks into WebAssembly, the platform eliminates the traditional barriers to entry.
"You can construct a software-defined radio flowgraph, hit Run, and immediately visualize live constellations, waterfalls, and spectrum plots."
This means there is:
No need for Python installationsNo complex local setupNo requirement for a backend server
Signal Processing Logic
The system handles complex digital signal processing, which can be represented mathematically as: (Where is the input signal and is the filter impulse response).
🚀 Features & Compatibility
The tool is designed for seamless integration with existing GNU Radio workflows.
| Feature | Capability |
|---|---|
| File Support | Reads and writes standard .grc files |
| Assets | Includes built-in example flowgraphs and IQ recordings |
| Connectivity | Accesses hardware via WebUSB |
Supported Hardware:
- RTL-SDR
- PlutoSDR
- HackRF
Workflow Diagram
🖥️ Interface & Usage
The UI is split between the Editor and the QT GUI. When no flowgraph is active, the GUI displays: No flowgraph running.
Available Controls:
▶ Run: Starts the execution.✕ Stop: Halts the flowgraph.🔍+/🔍−: Zoom controls for the workspace.⌗ Arrange: Organizes the layout.
Quick Start Checklist:
- Load a
.grcfile or select an example. - Connect your SDR via USB.
- Click Run.
- Analyze the output in the QT GUI.
Implementation Detail
The "Open in GNU Radio World" element is designed as a link rather than a standard button. This is intentional to maintain consistency with #embedOpen behavior; users should middle-click or "copy link address" to interact with it as expected.
{
"app": "GNU Radio World",
"runtime": "WebAssembly",
"interface": "Qt GUI",
"transport": "WebUSB"
}