Skip to main content...

ReallyOpenGD77 WebCPSd

ReallyOpenGD77 WebCPSd is a fully open-source, self-hostable web CPS (Code Plug Software) for radios running OpenGD77 firmware. The existing web-based CPS tools for OpenGD77 are closed-source, cloud-dependent black boxes – this project fixes that. Everything runs in your browser, talks to your radio directly over WebUSB, and your codeplug never touches a server you don’t control.

ReallyOpenGD77 WebCPSd is Free and Open Source Software released under the MIT License.

Use it Now

No Install Needed

Live Public Instance

The latest master build runs live and public at ogd77cps.w0chp.radio – plug in a supported radio and try a full read/write, no signup, no install. Requires Chrome, Edge, or Brave for the WebUSB radio connection (all other CPS features work in any browser). Your codeplug stays in your browser; the server never sees it.
Open the Live Public Instance

Self-Host It

Recommended

Self-Host in 3 Commands

git clone https://repo.w0chp.net/Chipster/ReallyOpenGD77-WebCPSd.git
cd ReallyOpenGD77-WebCPSd
./start.sh

Then open http://localhost:4938 in your browser. That’s it – the script handles the Python virtualenv and dependencies automatically.

Prerequisites
On Linux, the kernel grabs the radio’s USB serial port before the browser can, so WebUSB radio read/write needs a one-time udev setup first – see the Linux WebUSB Setup Guide. Windows and macOS need no extra setup.

Want it running as a persistent service instead of a foreground script? curl -fsSL https://w0chp.radio/ogd77-webcpsd/install | sudo bash sets it up as a systemd service with HTTPS included, on Debian/Ubuntu/Raspberry Pi. Prefer Docker or a Proxmox LXC (with an automated whiptail-wizard installer)? See the Deployment Guide for those, plus every HTTPS option for accessing the app from a different device than the one the radio plugs into.

Screenshots

Why This Exists

  • 100% open source – every line of code is there to read, audit, and fork.
  • Self-hostable – run it on your Pi, your server, your VPS, or your laptop.
  • No accounts required – no login, no cloud lock-in, your codeplugs stay yours.
  • No telemetry – zero tracking, zero analytics, zero phoning home.
  • Full REST API – documented with Swagger, scriptable, integratable.
  • Offline-capable – edit codeplugs with no internet connection.
  • MIT Licensed – do whatever you want with it.

Features

  • Full codeplug editing – Channels (FM & DMR), Contacts/Talkgroups, Zones, TG Lists, Scan Lists, VFO A/B, and General Settings.
  • WebUSB radio read/write, verified against real hardware across both OpenGD77 chipset families: MK22 (GD-77/DM-1801/RD-5R) and STM32 (MD-UV380/RT-3S). See Supported Radios for the full list.
  • BrandMeister DMR repeater import, paginated and sorted, with country lookup – cached 24h server-side.
  • DMR Contacts search and bulk-import from RadioID.net’s ~309k-entry database straight into the radio’s 1024-slot Contacts bank.
  • DMR ID Database writer – a separate, much larger caller-ID lookup table (hundreds of thousands of entries) the firmware checks on incoming calls, with a live capacity calculator.
  • CSV and binary .g77 codeplug import/export.
  • Satellite orbital elements and transponder config, with live TLE fetch from CelesTrak.
  • Radio Tools: Boot Text, Band Limits, and raw Backup/Restore.
  • Built-in codeplug validation and a full in-app theme editor.
  • Zero-dependency frontend talking a hand-decoded USB-CDC serial protocol straight to the radio’s flash/EEPROM byte layout. See the Technical Specifications for the full protocol and codec design.

Requirements

  • Python 3.10+ – only needed if you’re self-hosting; the live public instance needs nothing installed.
  • Chrome, Edge, or Brave for WebUSB radio read/write – Firefox and Safari can’t do that one feature (Firefox 151 added the Web Serial API, which is a different API from WebUSB and doesn’t change this). All other CPS features work in any browser.

Documentation

Acknowledgments & Third-Party Notices

The OpenGD77 USB codeplug protocol and memory map were cross-referenced against the GPL-licensed qdmr project during reverse-engineering. No qdmr code is included or linked here – this is an independent implementation – so this project stays MIT, but credit belongs where it’s due.

Because this app interoperates with radios running OpenGD77 firmware, its required copyright notice is reproduced in full in-app under Info → Copyright Notices, and is also available directly from opengd77.com.

Software License

ReallyOpenGD77 WebCPSd is distributed under the MIT License.

Why The Name?

“CPSd” is half backronym (“CPS Dashboard”), half wink at Unix daemon naming (httpd, sshd…) since this thing runs as a small self-hosted service you keep running in the background. “ReallyOpen” is a friendly jab at grid.radio/opengd77, a nice web CPS that – despite the name “OpenGD77” – isn’t actually open source. (In fairness, even the real OpenGD77 firmware isn’t 100% open end-to-end, thanks to the usual firmware licensing/patent realities of ham gear. We can only promise to be “really open” where it counts: this codebase, right here.)

Last Revision: 2026-07-12 -- Document Version: fb8d074
Permanent Link: <https://w0chp.radio/ogd77-webcpsd/>