Anytone D878/D578 and BTECH 6X2: setup from scratch — CPS and codeplug
The Anytone D878UV is, without exaggeration, one of the most popular DMR radios in the world, and its "desktop" sibling the D578UV and the rebadged American BTECH 6X2 are configured with exactly the same steps in exactly the same software. If you are holding one of these radios for the first time, the first power-on is intimidating: dozens of menus, unfamiliar words like "talkgroup", "Color Code", "zone" — and on top of that the radio is silent out of the box. That's normal. A DMR radio cannot be set up with its buttons the way you would an analog Baofeng — you program it from a computer using dedicated software called CPS, and you load in a whole settings file known as the codeplug. In this article we'll walk the entire path from scratch: install CPS and the driver, read the radio, sort out the contact list, talkgroups, zones, Radio ID and Color Code, write everything back — and by the end the radio will be talking on the DMRhub network. No filler, just what you actually need to click.
What you'll need before you start
So you don't have to run back and forth, let's gather everything in advance. The list is short:
- The radio itself — an Anytone D878UV (II Plus / UVII), D578UV (mobile), or a BTECH 6X2/DMR-6X2 (this is the same D878 under a different brand; the CPS is nearly identical).
- The factory USB cable from Anytone. On the handheld the connector is in the side Kenwood port (under the screws); the mobile has a separate programming cable. A cheap "charging" lead won't see the radio — you need the actual programming cable with the connector for your model.
- CPS — the proprietary Customer Programming Software for Windows, in exactly the version matching the firmware on your radio.
- Your own DMR ID — a seven-digit personal number. Without it the radio won't work in digital mode. How to get one is below, and in detail in the article DMR ID registration.
- A hotspot or repeater through which the radio will reach the network. The simplest route is the RadioStar image on a Raspberry Pi with an MMDVM modem.
Step 1. Installing CPS and the driver
Anytone doesn't post the software with a single prominent button, so get the CPS from an official distributor (BridgeCom Systems, AnyToneTech) or from your dealer — and be sure it's the archive for your model and firmware version. The archive usually contains both the CPS and the driver.
- Find your firmware version. On the handheld: turn the radio off, hold PTT + the top side button (PF1) and power it on — a line reading Firmware Vx.xx appears on the screen. The version is also visible in the menu under Device Info. Write the numbers down.
- Unpack the archive and run the CPS installer. Install it to a path without Cyrillic characters (for example C:\Anytone) — non-Latin letters in the path can sometimes break codeplug saving.
- Install the driver. The Anytone connects as a virtual COM port. On modern Windows 10/11 the driver often installs itself when you plug in the cable. If it doesn't, the package includes a Driver folder — install the driver manually.
- Check the port. Connect the powered-on radio with the cable, open Device Manager → Ports (COM & LPT). A new COMx should appear. If there's a yellow exclamation mark next to it, the driver didn't install — reinstall it.
In CPS itself you set the port once: menu Set → COM Port (in some versions Program → COM), and pick the COMx you saw in Device Manager. That's it — you have a link.
Step 2. Reading the radio (Read) — always start here
The golden rule of working with any DMR radio: read first, write second. Don't start from a blank CPS window and immediately hit "Write" — you risk loading a codeplug that doesn't match your configuration and ending up with a non-working radio. The correct order:
- Connect the radio and select the COM port.
- Menu Program → Read from Radio (the "from radio" arrow icon). CPS reads the current codeplug — and that becomes your working baseline.
- Save a copy right away: File → Save As, give it a human-readable name, for example D878_stock_backup.rdt. This is your "undo" if something goes wrong.
Step 3. Radio ID and the radio's basic settings
Now we enter the things without which digital mode won't work. CPS has a tree of sections on the left — we go through it top to bottom.
- Radio ID List. This is where your personal DMR ID lives. Enter your seven-digit number and your callsign/name. You can enter several IDs in the radio (Radio ID 1, 2…), but one is plenty for a beginner. You must not use someone else's ID — the network identifies you by it, and a conflict breaks private calls and Last Heard.
- Where to get an ID. On the DMRhub network you get your personal DMR ID right in your account when you sign up — no waiting for external registries to approve it. Details are in the article DMR ID registration.
- Optional Settings → language, radio name, backlight, power. This is also a convenient place to set the device name so you don't mix up radios.
Without a correct Radio ID the radio will "hear", but the network will reject its transmissions — this is the most common cause of "I press PTT but nobody hears me".
Step 4. The Digital Contact List and how to import it
And here's where the things that make people love Anytone begin. These radios have a lot of memory, and you load a Digital Contact List into them — a directory of tens and hundreds of thousands of DMR IDs with callsigns and names. Thanks to it the radio displays not a bare number like "2502123" but the name and callsign of whoever is on the air right now. That's a huge difference in convenience.
It's important not to confuse two different lists in CPS:
- Talk Groups / Contacts (Contacts in the tree) — these are working call contacts: talkgroups, private calls. There are only a few of them, and they participate in zones and channels. More on these in the next section.
- Digital Contact List — this is the "who's who" directory used for on-screen display. It does not participate in channels; it only labels incoming traffic. It is loaded separately.
How to import the directory:
- In the CPS tree find the Digital Contact List (in some versions it's set up as a separate contacts database).
- The Import button, then choose the CSV file with the list. The format is standard: columns Radio ID, Callsign, Name, City, State, Country… — Anytone has its own column order, so the file must be the Anytone version, otherwise the import will complain about the headers.
- After importing, the directory is written to the radio with a separate command, Write Contacts / Update Digital Contact List (not to be confused with the ordinary Write — this is a separate write of a large database and takes longer).
Step 5. Call contacts — talkgroups and private
Now the working contacts you actually talk through. The Talk Groups (or Contacts) section in CPS. Here we create entries of two types:
- Group Call — this is a talkgroup. You enter the talkgroup number (for example your network's working TG) and the type Group Call. Through this contact you go out onto the group's shared air.
- Private Call — you enter a specific person's DMR ID and the type Private Call. This is a one-to-one call. On DMRhub, private calls by DMR ID are a built-in feature: dial a colleague's ID, press PTT — and you're talking only to them.
Set up at least: one or two group TGs for your network and a couple of private contacts for people you call often. Give them clear names — those are exactly what appear in the selection list on the channel.
Step 6. RX Group List — what you'll hear
The RX Group List is the item that trips up every other beginner. The logic is this: a channel always transmits on one talkgroup (the one selected in the TX Contact), but it can receive several at once. The list of talkgroups the channel should pass to the speaker is the RX Group List.
- In the Receive Group Call List section you create a list, for example "DMRhub-RX".
- You add to it the talkgroup contacts you want to hear on this channel.
- Then, on the channel itself, in the Receive Group List field you select this list.
If the RX Group List is empty or not assigned, you'll only hear that single TG set in TX, and you'll be left wondering "why is the network alive but I get silence". To get started it's enough to put your main working TG in the RX list — that's enough to hear the shared air. A detailed breakdown — RX Group List.
Step 7. Channels — frequencies, Color Code, time slot
A channel in DMR is the bundle of "frequency + digital parameters". The Channel section. For a digital channel through a hotspot/repeater you set:
- Channel Type: Digital.
- RX Frequency / TX Frequency. For a simplex hotspot the RX and TX are the same (the frequency you set in the hotspot itself, within the permitted 2 m or 70 cm band). For a duplex repeater the TX is shifted by the offset amount.
- Color Code. This is the "digital match marker" — it must exactly match the Color Code of your hotspot/repeater. If the radio's CC = 1 and the hotspot's = 2, there will be no link; the radio simply won't "open". By default most hotspots have CC = 1.
- Time Slot (Slot 1 / Slot 2). On a simplex MMDVM hotspot it almost always works on Slot 2 (TS2) — that's the de facto standard for single hotspots. On a repeater the time slot depends on the network plan.
- Contact (TX) — which talkgroup contact goes out when you press PTT.
- Receive Group List — the very RX list from step 6.
- Radio ID — pick your ID (if you have several).
Step 8. Zones — getting organized
The radio stores hundreds of channels, but the selector knob only shows channels from the current zone. A zone is simply a folder — a set of channels for one situation. Without zones you'll drown in a long list.
- The Zone section, the add-zone button, for example "DMRhub".
- You drop the channels you need from the master list into the zone (with the "right" arrows).
- You assign channels to the A/B positions and to the knob positions.
A practical scheme to start with: one "DMRhub" zone with your digital channels through the hotspot, and a separate "Analog" zone for ordinary FM repeaters and simplex. You switch between zones with a button/menu — and never get confused. More — Zones in the radio.
Step 9. Writing to the radio (Write) and checking
Once everything is filled in, we load it back:
- Program → Write to Radio. Don't pull the cable or turn the radio off during the write.
- If you changed the Digital Contact List, do a separate Write Contacts (the large database takes longer, sometimes minutes).
- After the write the radio will reboot. Select the "DMRhub" zone, the channel you need — and listen to the air.
A live test: power on the hotspot, wait for someone's transmission on your TG — a callsign and name should appear on the screen (meaning the directory took), and your ID should show in the hotspot log when you press PTT. It's handy to cross-check with Last Heard in your DMRhub account: it shows whether your call reached the network.
Common mistakes and how to fix them
- "CPS doesn't see the radio / no COM port". Wrong cable (you grabbed a charging lead instead of a programmer) or the driver didn't install. Check COMx in Device Manager, reinstall the driver from the package.
- "Model / firmware mismatch on Write". The CPS version didn't match the firmware. Find the firmware (PTT + side button on power-on) and download the matching CPS. On firmware updates — Updating Anytone.
- "Nobody hears me even though I press PTT". An empty/foreign Radio ID, or a mismatch of Color Code/slot/frequency with the hotspot. Check the channel's three numbers.
- "The network is alive but I get silence". No RX Group List assigned, or it doesn't contain the right TG. Add the talkgroup to the Receive Group List and assign the list to the channel.
- "Numbers instead of names on the screen". The Digital Contact List isn't loaded or is out of date. Import a fresh CSV and do a Write Contacts.
- "The zone is empty / no channels on the knob". The channels are created but not added to the zone. Drop them into the Zone and assign them to positions.
- "I loaded someone else's codeplug and everything broke". That's exactly why we made a backup in step 2. File → Open your .rdt → Write. You've rolled back.
Anytone is set up — time to go on the air
DMRhub is a private DMR network: voice and private calls by DMR ID, DMR-SMS, Last Heard and a ready-made Anytone contact list in a single import. Get your personal DMR ID in your account in a minute and load the codeplug.
Sources
- Anytone D878UV — official materials and user manual, AnyToneTech
- Programming the Anytone and working with the codeplug — BridgeCom Systems
- The DMR standard, talkgroups, Color Code and time slots — ETSI TS 102 361
- Practical contact-list and zone setup on the DMRhub network — DMRhub Knowledge base materials, Codeplug for DMRhub