Importing DMRhub Contact Lists into OpenGD77, AnyTone and TYT

Category: CodeplugDifficulty: ★★☆~8 min

Every time a new network member builds a codeplug from scratch, they spend dozens of minutes manually typing in the same talkgroups and operator callsigns. DMRhub offers ready-made network contact lists in your account (/contacts) — download the right format, import it into your CPS, and all the current groups and users are already in your radio. On this page we'll go through exactly how to do this for the three most common platforms.

What a contact list is and why you import it

In DMR terms, a contact is a record of "name + DMR ID + call type". There are two kinds of records:

A contact list is a CSV file with such a list, ready to be loaded into a CPS. Don't confuse it with the callsign database (userdb / DMR ID database) — these are different things. The callsign database contains hundreds of thousands of records and is only needed so the radio can label an incoming ID on the display ("who's calling"). A contact list is your working list of groups and subscribers, dozens or hundreds of rows — and it's exactly what you enter manually or import from a DMRhub file.

Where to get the file Go to your DMRhub account: /contacts. Choose the format you need — OpenGD77, AnyTone, TYT, generic. The file downloads immediately; you don't need a separate account just to download it.

OpenGD77 CPS: CSV import

OpenGD77 CPS works through a CSV file. The format is strict: the first line is a header that the program reads literally and must not be changed. Column order:

#,Name,ID,Type,TS Override,DTMF ID

A typical row for a talkgroup:

1,Local DMRhub,9,Group Call,None,0

Where:

Steps:

  1. In OpenGD77 CPS open the Contacts tab.
  2. From the menu select File → Import CSV → Contacts.
  3. Point to the downloaded file dmrhub_opengd77.csv.
  4. The CPS will offer an append or replace mode — choose as appropriate. On replace, the old contacts will be deleted.
  5. Review the list and write the codeplug to the radio.
The delimiter depends on Windows OpenGD77 CPS determines the column delimiter from the Windows regional settings. On Russian-locale Windows the decimal separator is a comma, so the CPS expects a semicolon (;) as the CSV delimiter. The file from /contacts already accounts for this and ships with the correct delimiter for your region. If you still see "a jumble of columns", open the file in Notepad++ and check what the fields are separated by.

AnyTone CPS: Digital Contacts import

AnyTone (D868UV, D878UV, D578UV and others) stores contacts in the Digital Contacts section. The import is done through a CSV with five columns:

No.,Radio ID,Name,Call Type,Call Alert

An example row for a group:

1,9,Local DMRhub,Group Call,None

Steps:

  1. Open AnyTone CPS and read the current codeplug from the radio (or create a new one).
  2. From the menu select Tools → Import.
  3. In the window that opens click Digital Contacts and point to the file dmrhub_anytone.csv.
  4. Confirm the import. Existing contacts will be appended to or overwritten — check the behavior in your version of the CPS.
  5. Write the codeplug back to the radio.
Name no longer than 16 characters AnyTone CPS will truncate the name silently if it's longer. In the DMRhub file all names are already brought within the limit, but if you edit the CSV by hand — watch the length.

TYT (MD-380, MD-390, MD-UV380): importing contacts

TYT uses its own CPS, and the CSV format differs slightly from AnyTone. A typical header:

No,Name,Call_ID,Call_Type,Receive_Tone,Ring_Style

Example:

1,Local,9,Group Call,0,None

Steps:

  1. In TYT CPS open or create a codeplug.
  2. Go to Contacts (or Digital Contact, depending on the CPS version).
  3. Via the File → Import menu or the Import CSV button, select the file dmrhub_tyt.csv.
  4. Review the list — in older MD-380 CPS versions the radio's contact limit is about 1000 records.
  5. Write the codeplug.
Important Some versions of TYT CPS for the MD-380 require the CSV to be saved in Windows-1251 encoding (not UTF-8), otherwise Cyrillic turns into garbled characters. Open the file in Notepad++ → "Encoding" → "Convert to ANSI" → save. The file from /contacts ships in UTF-8 — perform this conversion before importing into a TYT.

The difference: contacts vs callsign database (userdb)

Beginners often confuse two different files. It's important to understand the difference:

Import the contact list — you get the groups you need. Load the userdb — you get labels on incoming calls. One does not replace the other.

Common mistakes and troubleshooting

Contacts imported, but aren't visible in the channel

Having a contact in the list doesn't mean it's automatically linked to a channel. After the import you need to go into each channel's settings and select the needed group from the imported ones in the Contact (TX Contact) field. Likewise, update the RX Group List if you want to hear these groups on receive.

Cyrillic shows up as "?" or "□" characters

An encoding problem. For TYT — convert to Windows-1251 (ANSI). For OpenGD77 and AnyTone — leave it as UTF-8. Don't open the CSV in Excel by double-clicking — Excel may misdetect the encoding; use Import from Text with an explicit UTF-8 setting.

The CPS says "invalid format" or won't read the file

Check the delimiter: open the CSV in a text editor. If you see commas between fields — a comma is required; if semicolons — a semicolon. Different CPS versions for the same radio may expect different delimiters. If necessary, replace it in Notepad++ via "Find and Replace" (Ctrl+H).

Sequential numbers are broken

In OpenGD77 CPS and TYT, the numbering in the first column must be strictly sequential: 1, 2, 3… Gaps or duplicates will cause an error or silent truncation of the list. If you edited the file by hand — recount the numbering.

Verify against an export The golden rule: before a bulk import, enter 2-3 contacts manually, export them from the CPS to CSV, and compare the format with the DMRhub file. That way you'll immediately spot a mismatch in delimiters or columns without risking your codeplug.

The DMRhub contact list is already waiting for you

All the network's current talkgroups and operator callsigns — in a single file tailored to your radio. Download the right format in your account, import it following the guide above, and get on the air. No DMR ID? Registration through the portal issues a private number from the 10,000,000+ block in a couple of minutes.

Sources

  1. OpenGD77 CPS: CSV features documentation (G4EML) — opengd77.com
  2. OpenGD77 User Guide (LibreDMR) — github.com/LibreDMR/OpenGD77_UserGuide
  3. AnyTone AT-D868UV Programming Guide v1.25 — sbarc.org
  4. Tytera MD-380: import contacts (IZ2UUF) — iz2uuf.net