---
title: Radioddity GD-77
summary: >
  Consider the OpenGD77 firmware and you're all set with a very user friendly
  and customizable handheld radio.
date: 2020-10-22T23:19:14+02:00
lastmod: 2022-11-25T21:33:02+01:00
showBreadcrumbs: true
showReadingTime: false
showWordCount: false

---

[Product page][1] — [OpenGD77 Firmware][2]  — [Latest CPS][3]

[1]: https://www.radioddity.com/products/radioddity-gd-77-dmr-two-way-radio
[2]: https://www.opengd77.com/downloads/releases/
[3]: https://www.opengd77.com/downloads/CPS/Latest/

This is probably the first DMR capable radio that is made for amateur radio.
Obviosly not per default, but thanks to OpenGD77 it is now suited for amateur
radio usage.

## udev-Rules for Linux

~~~rb
# USB rules for GD-77
# Place this in /etc/udev/rules.d/ to let all users talk to the radios by USB.

#
SUBSYSTEM=="usb", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666"

# HIDAPI/libusb
SUBSYSTEM=="usb", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0094", MODE="0666"

# HIDAPI/hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666"
KERNEL=="hidraw*", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0094", MODE="0666"

# HIDAPI/hiddev
## We need to unbind this device, otherwise LibUsb will fail to SetConfiguration() and ClaimInterface()
# For Bootloader (usbhid)
KERNEL=="hiddev*", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666", RUN+="/bin/bash -c 'ID=$(IFS=/; read -a array <<< %p; echo ${array[-3]}); echo $ID > /sys/bus/usb/drivers/usbhid/unbind'"

# OpenGD77
KERNEL=="ttyACM[0-9]*", SUBSYSTEM=="tty", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0094", MODE="0666", GROUP="dialout", SYMLINK+="OpenGD77"
~~~

If you want do reload udev with the new rules, run:

~~~console
$ udevadm control --reload-rules && udevadm trigger
~~~

## Original boot tone melody

The originally used boot-up melody. I'm not sure if it changed already, but this
was on my GD-77 when I first installed the OpenGD77 firmware.

~~~plain
38,6,0,2,38,2,0,2,38,6,0,2,38,2,0,2,38,6
~~~

## My boot-up picture

| Normal display settings | Inverted display settings |
| :--- | :--- |
| ![OE7DRT Boot-up picture white](rendeer512_white.png) | ![OE7DRT Boot-up picture black (inverted)](rendeer512_black.png) |

## Importing DMR-IDs

Open _Extras >> Download callsign database_ and fetch the data that you want.

![Import menu](import-dmr-ids-menu.jpg)

Set the region to the desired <abbr title="Mobile Country Code">MCC</abbr> that
you want to import. You can also use the inactivity filter that fetches only
recently active DMR-IDs. Or you can import DMR-IDs from a file.

![Import dialog](import-dmr-ids.jpg)

I usually import them from a CSV-file. The file that I use contains all the
austrian callsigns plus a few other callsigns, that I regularly see. So I need
to import about 2000 callsigns.

If you don't have a proper file to start with use this one here. It contains
these regions: `232, 262, 263, 264, 222, 228`.
[Download](/files/dmrids_2021-12-12.csv.xz "26477 callsigns") (\~170KB)

Or: download your own set of DMR-IDs with the regions you want. You can also
download only some federal states (like `2327,2328`) if you don't want all
entries from `232`. [Read along here][dmrid] for some instructions about this.

[dmrid]: {{< ref 2020-11-16-create-your-own-dmrid-database-file >}}

## Band scope (Spectrum sweep scan)

I'm not sure when this feature was implemented, but OpenGD77 now supports
an easy to use band scope on the GD-77.

Press and hold the hash key <kbd>#</kbd> when in VFO mode to enter this feature.