Skip to main content...

ReallyOpenGD77 WebCPSd Linux WebUSB Setup

On Linux, the kernel’s cdc_acm driver (and sometimes brltty) grabs the radio’s USB serial port before the browser can, and /dev/bus/usb/* isn’t writable by regular users by default – so WebUSB radio read/write won’t work out of the box.

Important
Run this on the computer physically connected to the radio – i.e. whatever machine’s browser you use to open the CPS. If you’re self-hosting the app on a Pi/server and connecting to it from another computer over the network, run the script on that other computer, not on the Pi/server running the backend. The radio plugs into a USB port and talks to your browser directly over WebUSB – the backend server never touches the USB device.

Run the Setup Script

Run this once per machine that connects to a radio – no need to clone the repo first, this works standalone (handy if you’re only ever using the live demo instance):

curl -fsSL https://webcps.app/webusb | sudo bash

Already have the repo cloned locally? sudo ./tools/setup-linux-webusb.sh does the same thing.

It detects your distro’s package manager, removes brltty if present, installs udev rules scoped to the supported radios’ USB vendor IDs (world-writable device node + cdc_acm unbind), and reloads udev – no reboot required. Unplug the radio and plug it back in afterward, then hit Connect in the CPS.

Reverting

To undo everything the script changed (removes the udev rules, reverts group membership, and reinstalls brltty if it removed it):

curl -fsSL https://webcps.app/webusb | sudo bash -s -- --uninstall

Or, locally: sudo ./tools/setup-linux-webusb.sh --uninstall

See Also

Last Revision: 2026-07-12 -- Document Version: 9d18b05
Permanent Link: <https://w0chp.radio/ogd77-webcpsd/linux-webusb-setup/>