AnyTone D878UV: firmware and database updates without bricking

Category: FirmwareDifficulty: ★★☆~9 min

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.

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.

Bricking riskDon't download firmware and CPS from different places and different versions. Download a "firmware + CPS of the same version" pair from a single source. Version mismatch is the most common cause of bricked and glitchy D878UVs.

Which model and version you have

Before downloading anything, figure out the exact model — firmware images are not interchangeable:

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.

  1. Connect the radio with a cable and select the correct COM port in CPS (Set → Set COM).
  2. Read — read the current codeplug from the radio into CPS.
  3. Save the file (.rdt) with a clear name and date: 878_2026-06-12_pered_proshivkoy.rdt
  4. Separately, use Tool → Export to dump the data to CSV — this is insurance in case you move to a new format version.
Why a separate CSVFrom certain CPS versions on, an old .rdt won't open directly in the new program — you have to export the data to CSV from the old CPS and import it into the new one. A CSV copy saves your nerves when you "jump" across several versions.

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:

  1. Turn the radio off.
  2. Hold down PTT and the lower side button PF2 at the same time.
  3. Keeping them held, power the radio on.
  4. 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.

Don't disturb it mid-processWhile firmware is being written you must not unplug the cable, turn off the radio, or close the utility. Interrupting a firmware write is the most direct path to a genuine brick. Battery charge should be no less than half.

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:

  1. Close CPS so it doesn't hold the COM port.
  2. Launch the update utility from the archive of the needed version.
  3. Specify the same COM port the radio was detected on.
  4. Select the firmware file (.spi / .bin from the archive) — strictly for your model and version.
  5. 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:

  1. Turn the radio off.
  2. Hold PTT and the upper side button PF1.
  3. Keeping them held, power on.
  4. 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:

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:

  1. Download a fresh DMR ID database CSV formatted for AnyTone.
  2. In CPS: Tool → Import → Digital Contact List, choose the CSV, and wait for the import (a large database takes a while).
  3. 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.

Russia noteThe D878UV is dual-band (2 m / 70 cm). For Russia the working amateur UHF segment is 430–440 MHz; that's where DMR hotspots and repeaters usually live. Set the hotspot frequency in this band, RX=TX (simplex), timeslot TS2.

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

  1. Anytone AT-D878UV DMR Firmware Update (button combinations, UPDATE MODE, backup) — powerwerx.com/help/firmware-anytone-d878uv
  2. How to Update the Firmware for the AnyTone 878 — bridgecomsystems.com (Firmware Update)
  3. AnyTone 878 (V1 / V2) CPS & Firmware Downloads, version matching — support.bridgecomsystems.com (CPS/Firmware)
  4. How To Import the Digital Contact List (userdb, CSV, separate loading) — bridgecomsystems.com (Digital Contact List)