Repository navigation
Standalone
The Standalone build is the whole wfweb page running in the browser, driving a USB Icom through Web Serial. Nothing is installed and no server runs.
- Plug the Icom into the computer with its USB cable.
- Open https://wfweb.k1fm.us in Chrome, Edge or another Chromium-family browser (Brave, Arc, Opera).
- Click the connection dot in the top-right corner, then Connect rig, and pick the rig's USB serial port in the browser's picker. wfweb probes the baud rates and identifies the rig from its CI-V address.
Frequency, mode, filter, audio, FT8/FT4, JS8, CW, RTTY, SSTV, AX.25 packet and RADE voice all run in the browser. On later visits the page reconnects to the same port without the picker.
Set the radio's CI-V USB menu first, or the scope stays black: see Icom Menu Settings.
- USB Icom rigs only. Kenwood and Yaesu need the Server.
- Chromium-family browsers only. Firefox and Safari have no Web Serial, and neither do any phone browsers. A phone or tablet operates through the Server build.
- No LAN rigs, no classic FreeDV (700D/700E/1600), no PSK Reporter or FreeDV Reporter spotting, no rigctld. The build table has the full list.
- The logbook, the CW and RTTY macros and the SSTV gallery are kept in the browser's storage. Clearing site data clears them; use the log panel's export (and the gallery's SAVE) before you do.
The bundle is a directory of static files. It runs from any HTTPS static host (GitHub Pages, Netlify, Cloudflare Pages, your own nginx). Build it from a checkout:
tools/build-static.sh dist/Test it locally before publishing:
tools/serve-static.py
# open http://localhost:8000 in Chrome or Edgeserve-static.py takes no arguments: it always serves the repository's dist/ on port 8000 with Cache-Control: no-store. Localhost counts as a secure context, so Web Serial works without HTTPS while testing. Public hosting needs HTTPS, since Web Serial refuses plain HTTP.
The RADE, Direwolf, JS8 and SSTV WebAssembly modules are committed under resources/web-standalone/wasm/, so the bundle works out of the box. Rebuilding them from source is only required when their source changes: Emscripten for the C/C++ modems (tools/build-direwolf-wasm.sh, tools/build-rade-wasm.sh, tools/build-js8-wasm.sh), Rust and wasm-opt for SSTV (tools/build-sstv-wasm.sh).
The page can drive a virtual rig that lives in another tab: open /?virtual=1&id=1 and /?virtual=1&id=2 in two tabs of the same browser and the two "stations" hear each other over a BroadcastChannel. It is the test bench the project uses for FT8, JS8, CW, SSTV and packet, and a way to look around the UI before plugging anything in.
Getting started
- Choosing a Build
- Standalone
- Installing the Server
- Docker
- Rig Compatibility
- Icom Menu Settings
- Troubleshooting and FAQ
Operating
Reference