Control your Icom radio from any browser — phone, tablet, or desktop.
wfweb turns your transceiver into a web-accessible station. Waterfall, audio, CW decoding, FT8/FT4 — all in the browser, no client software required.
The IC-7300 Mk2 has a built-in Ethernet port. No USB cable, no drivers, no build — just pull and run:
docker run --rm -it \
-p 8080:8080 -p 8081:8081 \
k1fm/wfweb:latest --lan 192.168.1.100 --civ 130 --lan-user admin --lan-pass secretReplace the IP, username, and password with your radio's settings. Open https://<host>:8080 in your browser, accept the self-signed certificate warning, and you're on the air.
The Docker image is multi-arch (linux/amd64 and linux/arm64) — it runs on x86 servers, Raspberry Pi, and everything in between.
For radios connected via USB, download a pre-built binary from GitHub Releases for your platform:
- Linux x86_64 — tarball and
.deb - Linux ARM64 / Raspberry Pi — tarball and
.deb - macOS (Apple Silicon)
- Windows x86_64
Plug in your radio and run:
# IC-7300 — zero config, auto-detected
./wfweb
# IC-7300 Mk2
./wfweb --civ 130
# IC-7610
./wfweb --civ 152
# IC-705
./wfweb --civ 164Open https://<host>:8080 in your browser. Accept the self-signed certificate warning. That's it.
For LAN connections from a native build, add
--lan <ip>and credentials — see Command-line options below.
wfweb is a fork of wfview, the outstanding open-source front-end for Icom, Kenwood, and Yaesu transceivers by Elliott H. Liggett W6EL, Phil E. Taylor M0VSE, and contributors.
Everything wfview does, wfweb does too — plus a built-in web interface:
| Feature | wfview | wfweb |
|---|---|---|
| Desktop GUI (Qt) | ✓ | ✓ |
| Full radio control (CI-V, LAN) | ✓ | ✓ |
| Waterfall display | ✓ | ✓ |
| Audio over LAN | ✓ | ✓ |
| Built-in HTTP/WebSocket server | — | ✓ |
| Browser-based remote control | — | ✓ |
| Browser RX audio streaming | — | ✓ |
| Browser TX audio (mic to rig) | — | ✓ |
| CW decoder (ggmorse / Goertzel) | — | ✓ |
| FT8/FT4 DIGI panel (full QSO) | — | ✓ |
| Mobile-responsive UI | — | ✓ |
| Headless / no-display operation | — | ✓ |
All settings can be passed as CLI flags. Run wfweb --help for the full list.
| Flag | Description | Default |
|---|---|---|
-s --settings <file> |
Settings .ini file | ~/.config/wfview/wfweb.conf |
-p --port <port> |
Web server HTTPS port | 8080 |
-S --no-web |
Disable web server, enable rig server | web server enabled |
--lan <ip> |
Connect via LAN/UDP (enables LAN mode) | USB serial |
--lan-control <port> |
LAN control port | 50001 |
--lan-serial <port> |
LAN serial/CI-V port | 50002 |
--lan-audio <port> |
LAN audio port | 50003 |
--lan-user <user> |
LAN username | (empty) |
--lan-pass <pass> |
LAN password | (empty) |
--civ <addr> |
CI-V address (decimal) | auto-detect |
--manufacturer <id> |
0=Icom, 1=Kenwood, 2=Yaesu | 0 (Icom) |
-l --logfile <file> |
Log to file | /tmp/wfweb-*.log |
-b --background |
Run as daemon (Linux/macOS) | foreground |
-c --clearconfig CONFIRM |
Reset all saved settings and exit | — |
-d --debug |
Enable debug logging | off |
Default CI-V addresses for supported radios (decimal values for --civ):
| Radio | CI-V (hex) | CI-V (decimal) |
|---|---|---|
| IC-7300 | 0x94 | 148 (auto-detected) |
| IC-7300 Mk2 | 0x82 | 130 |
| IC-705 | 0xA4 | 164 |
| IC-7610 | 0x98 | 152 |
| IC-9700 | 0xA2 | 162 |
| IC-7100 | 0x88 | 136 |
| IC-7410 | 0x80 | 128 |
docker run --rm -it \
--device /dev/ttyUSB0 \
-p 8080:8080 -p 8081:8081 \
k1fm/wfweb:latestPass CLI flags after the image name (e.g. --civ 130). For a different serial port:
docker run --rm -it \
--device /dev/ttyUSB1 \
-p 8080:8080 -p 8081:8081 \
k1fm/wfweb:latest --serial-port /dev/ttyUSB1docker run --rm -it \
--device /dev/ttyUSB0 \
--device /dev/snd \
--group-add audio \
-p 8080:8080 -p 8081:8081 \
k1fm/wfweb:latestdocker build -f docker/Dockerfile -t wfweb .
docker run --rm -it --device /dev/ttyUSB0 -p 8080:8080 -p 8081:8081 wfwebFor persistent configuration, create an .ini file and pass it with -s:
[Program]
hasRunSetup=true
[Radio]
Manufacturer=0
RigCIVuInt=130
SerialPortRadio=auto
SerialPortBaud=115200For LAN connections:
[Program]
hasRunSetup=true
[Radio]
Manufacturer=0
RigCIVuInt=130
[LAN]
EnableLAN=true
IPAddress=192.168.1.100
ControlLANPort=50001
SerialLANPort=50002
AudioLANPort=50003
Username=admin
Password=| Key | Section | Description | Example |
|---|---|---|---|
hasRunSetup |
[Program] |
Skip first-time setup dialog | true |
Manufacturer |
[Radio] |
0=Icom, 1=Kenwood, 2=Yaesu | 0 |
RigCIVuInt |
[Radio] |
CI-V address (decimal) | 148 |
SerialPortRadio |
[Radio] |
Serial port, or auto |
/dev/ttyUSB0 |
SerialPortBaud |
[Radio] |
Baud rate | 115200 |
AudioOutput |
[LAN] |
Local server audio output device (optional) | hw:CARD=CODEC,DEV=0 |
AudioInput |
[LAN] |
Local server audio input device (optional) | hw:CARD=CODEC,DEV=0 |
Audio streams directly between the radio and the browser — no server-side audio configuration is needed for web operation.
See BUILDING.md for platform-specific prerequisites and build instructions (Linux, macOS, Windows).
wfweb tracks upstream wfview master. The delta is kept small — changes are limited to the web server, web frontend, headless build config, and this README. See the wfview project for the core radio engine.
Full credit for the radio control engine, audio subsystem, waterfall, and everything else that makes this work goes to the wfview authors and contributors:
- Elliott H. Liggett, W6EL
- Phil E. Taylor, M0VSE
- Roeland Jansen, PA3MET
- Jim Nijkamp, PA8E
- And the entire wfview community
Please support the original project at https://wfview.org and https://www.patreon.com/wfview.
The FT8/FT4 DIGI panel is powered by ft8ts by e04. The CW decoder uses ggmorse by Georgi Gerganov.
GNU General Public License v3.0 — see LICENSE.
All third-party components retain their original licenses (Qt5 under LGPLv3, QCustomPlot and ft8ts under GPLv3, Speex/libopus/libportaudio/librtaudio/Eigen under their respective licenses, ggmorse under MIT).
This software is provided "as is", without warranty of any kind. It is intended for use by licensed amateur radio operators in compliance with their country's regulations. The authors accept no liability for unlicensed or non-compliant use.


