---
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-17
lastmod: 2024-03-17T19:59:25+0000
#categories:
#- amateur-radio
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/GD77/Latest/
[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.~~ Well, I do not use DMR, D-STAR or C4FM so often;
so I don't import anything at the moment. But I came across this site again and I
thought I could update this list again (after nearly 2 years there are a few new
callsigns in this list -- about 2000 new callsigns).

{{< alert "circle-info" >}}
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`.  
<a href="/files/dmrids_2024-02-24.zip" title="29259 entries">:open_file_folder: Download</a> (\~242KB)
{{< /alert >}}

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 "posts/2020/13-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.

## Output power on 2m

![2m band output power](power-2m.png)

| Power setting  | Out power (device 1) | Out power (device 2) |
| :--- | :---   | :----- | 
| +W-  | 7.50 W | 7.60 W | 
| 5W   | 5.31 W | 5.40 W |
| 50mW | 376 mW | 152 mW |
| 1W   | 1.30 W | 1.35 W |
| 2W   | 2.37 W | 2.14 W |
| 3W   | 2.90 W | 2.70 W |
| 4W   | 3.76 W | 3.40 W |

I have two devices and they differ on some settings (50mW setting for example).

## Output power on 70cm

![70cm band output power](power-70cm.png)

I have only measured one device as devices may differ largely.

| Power setting  | Output power|
| :---- | :----- |
| 50mW  | 917 mW |
| 250mW | 925 mW |
| 500mW | 1.86 W |
| 750mW | 1.49 W |
| 1W    | 1.67 W |
| 2W    | 2.35 W |
| 3W    | 2.96 W |
| 4W    | 4.22 W |
| 5W    | 7.50 W |
| +W-   | 8.41 W |