Ready-made codeplug for DMRhub: where to download it and how to load it into your radio
Building a codeplug from scratch is a half-evening job: contact tabs, RX groups, channels, zones, and every field has to be typed in by hand. The good news: the network has already done half of that work for you. The DMRhub dashboard offers ready-made contact lists for popular programmers — download one, import it, write it to the radio. All that's left is to add a couple of channels for your own hotspot. Let's walk through the whole path: what to download, in which format, how to import it into CPS, and how not to wreck the factory firmware along the way.
What a codeplug is and what a contact list is
A codeplug is the radio's entire configuration in a single file: channels, frequencies, contacts, RX groups, zones, your DMR ID and settings. You edit it and load it with CPS (Customer Programming Software) on a PC, over a cable.
A contact list is only part of the codeplug: the list of destinations. In DMR that is first and foremost your network's talkgroups (group calls) plus operators' private IDs. The contact list is exactly what DMRhub publishes ready-made — because it is the same for everyone on the network, and you don't want to type in fifty-odd lines by hand.
Where to download it: the DMRhub dashboard, the /contacts section
The ready-made contact lists live in the dashboard behind a login — the /contacts section. It offers several formats at once, exported for specific programmers and verified against real CPS exports:
- OpenGD77 — for the OpenGD77 firmware (Radioddity GD-77, Baofeng DM-1801, TYT MD-UV380/RT3S running OpenGD77);
- AnyTone — the CPS format for D878/D578 and compatibles;
- TYT — for MD-380/MD-390/MD-UV380 and relatives on the stock CPS;
- RT4D — for the Radtel RT-4D;
- generic — a neutral CSV if your programmer isn't in the list above: open it in Excel and adjust the column headers to match your CPS.
Pick the format strictly for your own CPS. Each program expects its own CSV structure, and the "wrong" file imports with garbage in the fields, or doesn't import at all.
Step 0. Back up first
Before you write anything to the radio — read out the current codeplug and save it to a file. Even if the radio is brand new out of the box. This is the golden rule of DMR: "read → save → only then change." If something goes wrong after the import, you'll restore a working state in a minute.
- Turn on the radio and connect it to the PC with a cable (keep the radio powered on).
- In the CPS, click read from the radio (Read / Read from radio).
- Save the result to a file: File → Save as, with a name like backup-YYYYMMDD.format_name.
Step 1. Import the contact list into CPS
The logic is the same across all programmers: open the import menu → point it at the downloaded CSV → wait for "Import success." Only the menu items differ.
OpenGD77 CPS
OpenGD77 CPS can import a codeplug and tables from .CSV. Open your current codeplug (or a new one), import the DMRhub contacts file in the OpenGD77 format, and check that the groups appear in the contacts list.
AnyTone (D878/D578)
In the Tool → Import menu, first import the contact list (Digital Contact List), then the talkgroups. Handy: you can edit fields both in the CPS itself and ahead of time in Excel in the Channels.CSV file before importing.
TYT (MD-380 / MD-UV380)
In the CPS: Program → Write Contacts → Import, point it at the CSV. On some builds the import requires Microsoft Excel installed — without it the CPS throws "Excel Fail" and stops. If you hit the limits of the stock TYT CPS, look at the third-party editor editcp; it imports contacts from CSV more flexibly.
RT4D and generic
For the Radtel RT-4D take the RT4D format and import it with the radio's own programmer. If your model isn't on the list, use the generic format: it's a plain CSV — open it in Excel/LibreOffice, rearrange the columns if needed to match the header your CPS expects, and import.
Step 2. Add a channel for your own hotspot
You have the network's contacts; now you need at least one channel to get on the air through your MMDVM hotspot. A digital channel is a set of fields:
- RX and TX frequency — for a simplex hotspot they are the same (one frequency for both receive and transmit), within an allowed band;
- Timeslot — for a simplex hotspot always TS2;
- Color Code — exactly the one set in your hotspot (a number 1–15);
- Contact (TX) — the network talkgroup your voice goes to by default (pick it from the imported contacts);
- RX Group List — which groups to listen to on this channel;
- type — Digital (DMR).
If you want to use several network talkgroups, make one channel per talkgroup: the same frequency, TS2 and Color Code, with only the Contact field differing. Lay the channels out in a "My hotspot" zone so they scroll together.
Step 3. Write the codeplug to the radio
The radio is powered on and connected by cable. In the CPS, click write (Write / Program → Write to radio). On AnyTone, in the write window check both options — "Digital Contact List" and "Other Data." On OpenGD77 the write goes over the serial port, with the radio staying on and the screen active — don't pull the cable until it finishes.
After writing, check: the radio shows the "My hotspot" zone, the channels you need, and the contacts show the network's talkgroups and operators.
The network contact list — in a single import
Don't type talkgroups and operators by hand. The DMRhub dashboard (the /contacts section, behind a login) has ready-made network contact lists for OpenGD77, AnyTone, TYT, RT4D and generic. Download → import into CPS → write to the radio. All that's left is to add channels for your own hotspot.
Sources
- OpenGD77 User Guide — read/write and CSV import — github.com/LibreDMR
- AnyTone AT-D868UV CodePlug Programming Guide (contact import, write) — sbarc.org
- BridgeCom: backing up a codeplug before writing, reading from the radio — bridgecomsystems.com
- TYT MD-380/MD-UV380: CSV contact import, editcp — iz2uuf.net