RadioCPS: a multi-brand radio programming platform
Radio programming software and a shop-management platform in one: built for radio dealers and repair shops. A 56-model library across 15 brands and 10 driver families, with automatic detection, cloud machine profiles, cross-brand cloning, the work-order loop and continuous library updates in one system — programming is the entry point, subscription is the revenue, the model library is the moat.
RadioCPS is a Kingtone Solutions product. It is not Motorola’s Business Radio CPS, and the two have no affiliation or licensing relationship: we built a general-purpose programming platform spanning 15 brands and 56 models, where a CPS is only one brand’s own programming tool. Our model library and automatic detection put every brand behind one workflow.
Programming is the entry point, subscription is the revenue, the library is the moat
Chinese radio dealers and repair shops number in the tens of thousands, and a 2–5 person team is enough to serve them. This is a radio programming service built around a subscription, sold to the shop rather than to the end user: one multi-brand radio programmer replaces a dozen per-brand tools. What this platform does is not "a better CHIRP" — it turns what a shop does every day (receive the radio, read, back up, edit, write, archive, follow up with the customer) into one closed loop. The moat is how fast the model library follows new models, not the code itself.
Automatic model detection
Connect a radio and the platform fingerprints it first, then queues the match against the library instead of making you hunt through dozens of drivers. If the model is not recognised it says which model is missing — it never guesses and writes anyway.
Cloud machine archive
Every radio gets a machine profile that is written as it is programmed; the local store is the single source of truth and stores sync by cursor. A customer swap, a reboot or a restore to baseline is all traceable.
Cross-brand cloning
Move a frequency table from one radio to another, across brands too: oversized fields are trimmed, out-of-band channels are filtered out, field names are reconciled and the three DMR tables are reordered. Every trim is reported — nothing is dropped silently.
Work-order loop
Customer records, a fault work-order state machine and repurchase reminders live in the same system. The channel-plan library computes but never writes — a plan reaches a radio only after you confirm it.
A library that keeps up
A new model arrives as data, not as code: every model difference is pushed down into the template JSON, and the engine layer knows no specific model at all. This is exactly what CHIRP does not do, and does not want to do.
Repeater stations too
Handhelds, vehicle radios and repeater stations are all in the library; repeater-specific fields travel as extensions rather than polluting the common data model.
Coverage: 56 models, 15 brands
By protocol source: 16 reusable from open-source, 28 needing packet capture and reverse engineering, 10 available only through the vendor CPS, 2 on the gateway route — plus 20 DMR models and 14 identify-only entries. DMR programming software has to handle more than a frequency table: channels and their timeslots, colour codes, talkgroups and subscriber IDs are written per model. Cross-brand radio cloning is what the shared intermediate format buys you: the same table moves between brands without a translation step. Form factors: 40 handhelds, 7 vehicle radios, 9 repeaters. If a model is not in the library, send it in and it gets reverse-engineered in.
Three decoupled layers: adding a model is data, not code
The engine layer knows no specific model: every model difference is pushed down into the template JSON, and the web UI and the command line both go through one driver registry. Scale: 79 HTTP endpoints, 64 command-line subcommands, 534 unit tests.
Maturity and red lines, stated first
- Only two families are hardware-verified (Kingtone JST-A800Plus and the QT R-200 zone repeater, both 2026-10-07). The other eight are covered by unit tests only, so the programming gate blocks a write until it is explicitly confirmed.
- Three write safeguards: a .bak backup is forced before every write, writes into noTouch regions are refused outright, and no field write may change the image size. Over-capacity or out-of-band clone results are trimmed automatically and reported in full.
- Legal line: no decompiling, no redistributing vendor CPS binaries; analysis only on devices we purchase; every commercial inclusion verified on purchased hardware.
- A subscription never disables local programming, and an expired store can still pull its data out.
How a store deploys it
Four paths, identical software, differing only in how it starts and is exposed; deployment runs nine gates, G1 to G9.
A. Synology NAS + Docker
Our recommended path: run the container under Container Manager and map 8790 to 80/443. Put the data directory into Hyper Backup and that is a backup of every store’s data.
B. Cloud host + Docker + Caddy
Caddy obtains and renews the Let’s Encrypt certificate automatically; add a basicauth layer in front of the admin endpoint as well.
C. Bare metal, systemd + Nginx
Python 3.9 or newer, running under a dedicated system user; a single push is capped at 8 MB.
D. Local-NAS specific path
The practical answer when there is no SSH credential: use an SMB share as the deployment exchange area and a DSM scheduled task as the one-shot root executor.
Common questions
How is this different from CHIRP?
CHIRP is a general-purpose open-source programmer: broad model coverage, but you have to know the model, pick the driver and fill the table yourself. This platform makes automatic detection, cloud machine profiles, cross-brand cloning, the work-order loop and continuous library updates into one system. A shop gets "where does this radio stand, what did we write last time, what happens next" — not just a programming action. The moat is how fast the library follows new models, not the code.
Which brands and models are supported?
The library holds 56 models across 15 brands: Motorola 8, Hytera 7, TYT/AnyTone/Retevis/Radioddity 7, Baofeng 6, Kenwood 4, BFDX 4, Wouxun 3, ICOM 3, Kirisun 3, Lingtong/Weierwei/Feidaxin 3, Quansheng 2, Yaesu 2, consumer-grade 2, Kingtone 1 and QT 1. By protocol source: 16 reusable from open-source, 28 needing packet capture and reverse engineering, 10 available only through the vendor CPS, 2 on the gateway route (plus 20 DMR models and 14 identify-only entries). If a model is missing, send it in and it gets reverse-engineered into the library.
Can programming damage a radio?
Three hard safeguards: a .bak backup is forced before every write, writes into noTouch regions are refused outright, and no field write may change the image size. When a cloned result exceeds capacity or the band, it is trimmed automatically — and everything trimmed is reported. Nothing is dropped silently.
What about models with no vendor CPS?
They go through reverse engineering on devices we buy ourselves: models marked reverse-needed are analysed from our own captures (offsets, bit fields, field semantics, checksums) and the code is written from scratch. The legal line is explicit — no decompiling, no distributing vendor CPS binaries, no linking or embedding CHIRP code, and every commercial inclusion is verified on hardware we purchased.
How do I program a DMR radio?
If you are asking how to program a DMR radio: connect it and let the platform identify the model — there is no driver to pick from a list. The platform then reads the current codeplug and backs it up before anything is written, lets you edit the frequency table, and writes it back over a radio programming cable. On a DMR set that means more than frequencies: channels and their timeslots, colour codes, talkgroups, subscriber IDs and the scan and power settings all travel together, and the noTouch regions of the image are refused rather than silently overwritten. The same flow clones a table onto another radio, including across brands.
How is it priced?
SaaS subscription is the main revenue line at RMB 1,000–3,000 per paid store per year, alongside model unlocking, bulk editions, hardware programming cables and OEM licensing. Two deliberate choices: a subscription never disables local programming, and an expired store can still pull its data out — we do not trap shops. The states are active → grace (14 days) → expired, plus suspended.
Which models have been verified on real hardware?
Two driver families have passed a full read-write-modify-restore cycle on hardware: Kingtone JST-A800Plus and the QT R-200 zone repeater, both on 2026-10-07. The other eight families are covered by unit tests only, so the programming gate blocks a write until it is explicitly confirmed. We state this openly: save first, never try to write on a radio that can only be read, and restoring the original state is a hard requirement at the end.
How is it deployed in a store?
Four paths, identical software, differing only in how it starts and is exposed: A Synology NAS + Docker (our recommendation — putting the data directory into Hyper Backup is a backup of every store’s data), B cloud host + Docker + Caddy (automatic Let’s Encrypt renewal), C bare metal with systemd + Nginx (Python 3.9+, dedicated system user), and D the local-NAS path for when there is no SSH credential (an SMB share as the exchange area plus a DSM scheduled task as the one-shot root executor). Deployment runs nine gates, G1 to G9.
Can you clone across brands?
Yes. Cloning automatically trims oversized fields, filters out-of-band channels, reconciles field names and reorders the three DMR tables together. Results that exceed capacity or the band are trimmed automatically and reported in full — no field is dropped silently.