AnyTone D878UV: firmware and database updates without bricking
The AnyTone AT-D878UV is a DMR workhorse: a sensitive receiver, convenient CPS, and a roomy contact database. But its firmware is closed and proprietary — this is not OpenGD77, there is no open bootloader and no "idiot-proofing" here. What there is, though, is one iron rule: the CPS version must strictly match the firmware version in the radio. Break it and, in the best case, you get glitches; in the worst, a wiped codeplug and a radio showing "Band Error" that needs to be revived. Let's walk through the procedure so you can do it once and without surprises.
Three versions that must match
The key idea that makes the rest worth reading: the D878UV works as a chain of three version numbers, and you can't mix them however you like.
- Firmware — the radio's processor firmware (what flashes on the screen during the update);
- CPS (Customer Programming Software) — the PC program you use to edit and write the codeplug;
- the codeplug file version itself — the format in which CPS stores your settings.
The manufacturer releases them as a set: every firmware comes with "its own" CPS of the same version. If you write the radio with old CPS over new firmware (or vice versa), the "weirdness" begins: lag on transmit, distorted tones, freezes, features that don't work. As a rule, the only cure is rebuilding the codeplug in the correct CPS version.
Which model and version you have
Before downloading anything, figure out the exact model — firmware images are not interchangeable:
- D878UV and D878UV Plus are the "first generation" (V1);
- D878UVII / UVII Plus are the second generation (V2), which has its own firmware line.
The current firmware version is shown when you turn the radio on, or in the menu. In CPS, the program version is in the window title and under Help → About. Write down both numbers before you start.
Step 0. Backup is not optional
Updating firmware on the D878UV erases the radio's programming: the final reset (MCU Reset) clears the codeplug. So before anything else, save what you have.
- Connect the radio with a cable and select the correct COM port in CPS (Set → Set COM).
- Read — read the current codeplug from the radio into CPS.
- Save the file (.rdt) with a clear name and date: 878_2026-06-12_pered_proshivkoy.rdt
- Separately, use Tool → Export to dump the data to CSV — this is insurance in case you move to a new format version.
Step 1. Entering update mode (UPDATE MODE)
Firmware is flashed not from the normal mode but from a special "bootloader mode." On the D878UV you enter it with a button combination at power-on:
- Turn the radio off.
- Hold down PTT and the lower side button PF2 at the same time.
- Keeping them held, power the radio on.
- The screen should show UPDATE MODE (the indicator often glows/blinks green or red). You can release the buttons.
If the text isn't there, the radio is in the wrong mode and you must not flash it. Turn it off and repeat the combination.
Step 2. Flashing the firmware
Firmware is written not by CPS itself but by a separate proprietary update utility (included in the archive with the firmware). The logic is the same for all versions:
- Close CPS so it doesn't hold the COM port.
- Launch the update utility from the archive of the needed version.
- Specify the same COM port the radio was detected on.
- Select the firmware file (.spi / .bin from the archive) — strictly for your model and version.
- Start the write and wait for the progress bar to finish and a success message.
If the port "isn't visible," check the USB driver and that the radio is really in UPDATE MODE.
Step 3. MCU Reset — the mandatory finale
Right after flashing, the radio needs to be "zeroed," otherwise leftovers of the old codeplug will cause glitches:
- Turn the radio off.
- Hold PTT and the upper side button PF1.
- Keeping them held, power on.
- The screen will show MCU Reset, Please Wait — wait for it to finish without turning the radio off.
After the reset the radio is empty: time to write the saved (or version-updated) codeplug.
Step 4. Restoring the codeplug with the correct CPS
Now use the same CPS version that matches the fresh firmware:
- if the format version is the same — open your .rdt and do a Write;
- if CPS is newer and the old file won't open — import the previously exported CSV into a new, clean codeplug, check the zones/channels, then Write.
After writing, run the radio over the air: hold a call on your hotspot's talkgroup and make sure receive and transmit are fine.
Step 5. The DMR ID database (Digital Contact List) — separately
The DMR ID contact list (the so-called userdb — tens and hundreds of thousands of callsigns with names) is not your codeplug. It's a separate large CSV that loads its own way, and you can update it anytime without touching the firmware:
- Download a fresh DMR ID database CSV formatted for AnyTone.
- In CPS: Tool → Import → Digital Contact List, choose the CSV, and wait for the import (a large database takes a while).
- When writing to the radio (Program → Write), tick the Digital Contact List checkbox separately from the rest of the data.
The D878UV has a large capacity (hundreds of thousands of contacts on modern versions), but writing such a database also takes minutes. Keeping it separate is convenient: update the callsign database and you rewrite only it, without rebuilding the codeplug.
Already updated the callsign database? On the DMRhub network it's a "bonus," not a necessity
Loading userdb into the radio is useful. But on the DMRhub network the DMRhub directory already shows the callsign and name of any DMR ID you hear — the data comes from the master server, so the radio doesn't need a giant onboard database. The network's own contact lists (our talkgroups and operators, formats for AnyTone/TYT/OpenGD77), on the other hand, are best imported into the codeplug — it's faster than typing them in by hand.
Sources
- Anytone AT-D878UV DMR Firmware Update (button combinations, UPDATE MODE, backup) — powerwerx.com/help/firmware-anytone-d878uv
- How to Update the Firmware for the AnyTone 878 — bridgecomsystems.com (Firmware Update)
- AnyTone 878 (V1 / V2) CPS & Firmware Downloads, version matching — support.bridgecomsystems.com (CPS/Firmware)
- How To Import the Digital Contact List (userdb, CSV, separate loading) — bridgecomsystems.com (Digital Contact List)