doctor
doctor
Diagnose the host for RF Swift. rfswift doctor (also rfswift system doctor) checks every engine, the display, audio, devices, the Nix engine and the host prerequisites, and tells you which command fixes what is wrong.
Syntax
rfswift doctor
rfswift system doctorWhat it checks
| Check | What it verifies |
|---|---|
| Container engine | Docker, Podman or Lima detected, which one is active |
| Engine service | The daemon or VM is running and reachable, with its version |
| Docker permissions | Your user can talk to the Docker socket (group membership and the session ACL); fix: rfswift host docker-access |
| Host udev rules | RF Swift’s rules are installed and current, your user is in plugdev; fix: rfswift host udev |
| Nix engine | Nix is installed with flakes; on Windows, the WSL 2 distribution that hosts it, the Linux rfswift inside and version skew |
| Nix jail (–isolate) | bubblewrap is present and may create a user namespace (AppArmor profile on Ubuntu 24.04+); fix: rfswift host isolate |
| Lima VM (macOS) | Instance state, QMP socket for USB passthrough, Docker socket |
| RF Swift images | Images pulled locally |
| X11 display | DISPLAY set and the X11 socket present; on Windows the WSLg socket, asked from WSL |
| xhost | Installed for local X11 authorisation |
| Audio system | PulseAudio or PipeWire running (Windows: WSLg audio socket) |
| Audio TCP server | The module listens on the configured port; fix: rfswift host audio enable |
| USB devices | /dev/bus/usb present; on Windows the usbipd-win version with connected, shared and attached counts and the default WSL 2 distribution |
| Config file | Exists with safe permissions |
| Kernel modules | USB, sound, Bluetooth, Wi-Fi modules loaded (Linux) |
Status icons
| Icon | Meaning |
|---|---|
✓ (green) |
Passed |
! (yellow) |
Warning, works but could be better |
✗ (red) |
Failed, needs a fix |
- (gray) |
Skipped, not applicable on this platform |
Example output
🩺 RF Swift Doctor
══════════════════════════════════════════════════════════
✓ Container engine Docker (docker)
✓ Engine service Running and reachable
✓ Engine version 29.1.4 (API 1.53)
✓ Docker permissions User 'user' can use the Docker socket
✓ Host udev rules /etc/udev/rules.d/70-rfswift.rules installed, user in plugdev
✓ Nix engine nix 2.30 with flakes
✓ Nix jail (--isolate) bubblewrap ready (/usr/bin/bwrap, AppArmor profile loaded)
✓ RF Swift images 3 RF Swift image(s) available
✓ X11 display DISPLAY=:0, X11 socket present
✓ xhost Installed
✓ Audio system PipeWire
! Audio TCP server Not reachable at localhost:34567 (run: rfswift host audio enable)
✓ USB devices /dev/bus/usb present (4 bus(es))
✓ Config file /home/user/.config/rfswift/config.ini
✓ Kernel modules Loaded: USB support, Sound/ALSA, Bluetooth, Wi-Fi/802.11
──────────────────────────────────────────────────────────
14 passed 1 warningsCommon issues and fixes
rfswift host setup # everything below, asked step by step
rfswift host docker-access # Docker socket "permission denied"
rfswift host udev # hardware needs root on rootless Podman or Nix
rfswift host isolate # bwrap "setting up uid map: Permission denied"
rfswift host audio enable # audio TCP server not reachable
rfswift image pull -i sdr_full # no RF Swift images
rfswift env wsl setup # Windows: Nix backend not provisioned
chmod 600 ~/.config/rfswift/config.iniHeadless or over SSH without X forwarding: use --desktop for a browser desktop, or ssh -X.
Platform notes
- Linux: all checks run.
- macOS: the Lima VM check replaces Docker permissions and kernel modules; audio expects PulseAudio from Homebrew.
- Windows: WSLg display and audio, usbipd-win, the default WSL 2 distribution and the Nix WSL backend are reported; if the WSLg sockets are missing run
wsl --updatethenwsl --shutdown.
The Workbench’s Engine doctor shows the same checks with buttons that apply the fixes.
Last updated on