Présentation

GNU Radio Companion‑style s’exécute entièrement dans un onglet du navigateur. Le moteur DSP de GNU Radio et les sinks Qt GUI sont compilés en WebAssembly, ce qui élimine le besoin de Python, d’installation locale ou de serveur dédié. L’utilisateur crée un flowgraph, clique sur Run et visualise en temps réel le spectre, la waterfall ou la constellation, le tout depuis le navigateur.

Architecture technique

Le code natif de GNU Radio est transpilé avec Emscripten vers le format WebAssembly (.wasm), garantissant une exécution quasi‑native dans le sandbox du navigateur. Les composants Qt, habituellement liés à une interface X11/Wayland, sont également portés grâce à Qt 6 for WebAssembly, ce qui permet d’afficher les graphiques Qt dans le canvas HTML. La lecture/écriture des fichiers .grc utilise l’API File System Access du navigateur, assurant une compatibilité totale avec les projets GNU Radio existants.

Fonctionnalités et compatibilité

Le système propose des flowgraphs d’exemple et des enregistrements IQ pré‑chargés, facilitant la prise en main. Il supporte les radios SDR RTL‑SDR, PlutoSDR et HackRF via l’interface WebUSB, ce qui autorise une connexion directe du matériel USB au navigateur après validation de l’utilisateur. Les visualisations en temps réel – spectre, waterfall, constellation – sont générées par les sinks Qt compilés, offrant la même qualité que l’application native.

{
  "id": "top_block",
  "blocks": [
    {"type": "osmocom_source", "id": "src", "args": {"device": "rtl=0"}},
    {"type": "qtgui_sink_c", "id": "sink", "args": {"title": "Spectre"}}
  ]
}

Limites et perspectives

WebAssembly impose une surcharge d’en‑tête de compilation et dépend de la puissance du moteur JavaScript du navigateur ; les performances DSP restent inférieures à une exécution native, surtout pour les filtres à haute complexité. Le support WebUSB est actuellement limité à Chrome et Edge sur Windows/Linux, excluant Safari et les appareils mobiles. Le modèle sandbox empêche l’accès direct aux pilotes système, ce qui contraint la bande passante USB et augmente la latence. Malgré ces restrictions, la solution démontre la viabilité d’une chaîne SDR complète sans installation, ouvrant la voie à des environnements d’apprentissage et de prototypage basés sur le cloud.