GD-77 first “proof of concept” changes

posted in: DMR, Ham radio | 19

Its taken a bit longer than I thought, but I now have some patched firmware, which makes some minor changes to the DMR ID system.

I have also updated my CPS to use the changes to the firmware.


The firmware is very experimental at the moment and I am only distributing it via email to people who are willing to potentially brick their radio (though I think the chances of bricking are very low)



In the DMR ID screen in the CPS, there is a now a checkbox, which enables “Enhanced firmware mode” (Note i may change this name later)

When this is enabled, another drop down menu appears, which allows the number of characters per DMR ID to be selected.


As there is only a finite amount of storage in the GD-77, the total number of DMR ID’s that can be stored, is inversely proportional to amount of storage taken by each DMR ID item.


The main problem with the GD-77 is it does not have much memory to store the codeplug and the DMR ID etc.
It only has 1 mega byte of storage (Flash memory), plus an additional 64 k bytes of EEPROM.


The codeplug seems to be partially stored in the EEPROM and partially in the middle of the 1 mega byte memory.


The official firmware stores the DMR ID in the Flash memory from addresses 0x30000 to 0x4FFFF, which is 128k.
Each DMR ID consists of 4 bytes for the ID number (which is wastefully stored in Binary Coded Decimal), followed by 8 bytes for the callsign , which gives a grand total of 12 bytes per DMR ID record.

Since most callsigns are 6 characters long, only having 8 characters available does not leave any space to store the name


What I have done is modify the firmware, to increase the temporary storage memory in the firmware, which is used to search for the callsign,( for a give DMR ID), from 12 bytes to 20 bytes. This allows the number of characters for the callsign to be increased from 8 to 16.

However, I realised that some people may prefer to only display the callsign, but be able to store more DMR ID’s.

So I modified the firmware, so that the CPS can set the number of characters.


I also modified the firmware to use an additional 128kb of memory for the DMR IDs. This is in the range 0x50000 to 0x6FFFF.

Looking at a memory dump of the Flash chip, there is data in this area, however it appears to be things like copies of old codeplugs, and also was supposed to hold the backup of the calibration data.

Due to a coding mistake in the official firmware, the backup of the calibration data can’t actually be used, and is corrupted if a factor reset is performed on the radio.

So, as far as I can tell its safe to use this region of memory for the DMR ID, albeit will overwrite the backup of the calibration.


The Flash memory, including the calibration backup etc can download from the GD-77 using FlashManager. This is a much more sensible way to make a backup of the radio, since then even if there is a serious problem in the radio and the whole of the Flash memory gets erased or corrupted, the data can be restored using FlashManager.


The result of these changes is that if the existing 8 character length is used, the number of DMR IDs that can be stored, doubles to over 21000

The number of characters needed to store the callsign and name is between 13 and 15 for most names, and I am now using the setting of 14 characters, as this seems to fit most names.

Also the GD-77 seems to only be around 15 characters wide, and the 15th character is partially obscured by the “phone call” symbol that appears on the right of the screen when there is an incoming signal.



I am hoping that the volunteers will test the firmware today, and if it seems to be reliable, I will distribute it a bit wider via email.

Because I don’t have a production process for these firmware releases yet, I will not be publishing the file to my blog or elsewhere at the moment, but hopefully I will be able to sort out a way to do this soon.


PS. If risk takers out there want to give it a try, please let me know 😉

19 Responses

  1. Jørn

    Hi Roger.
    I have 2 GD-77 to play with, so I can test the firmware in one of them 🙂
    It’s night time here now, so I have to do it tomorrow..

    Regards from Norway

    73 Jørn LB9AB

  2. Roger Clark

    Thanks I’ll email you a copy

    Make a backup of all your flash memory first using FlashManager. i.e start 0 , length 100000
    (Note FlashManager can’t access the lower 64k but its not used by anything in the radio)

  3. Andrew Jorgensen

    The Connect Systems CS-750 used 6 bits per character to cram a bit more data into the names. Upper and lowercase, numbers, space, and period. Dash is a better choice than period for names (you can prove this to yourself by looking at the registration data) so if you go there please use dash. Would save you two bytes per record?

  4. Roger Clark


    I did consider compressing using this technique.

    At the moment I am doing things step by step.
    I can also save 1 byte per record, if I change from 4 bytes of BCD coded DMR ID number to a normal 24 bit number.

    But both of these changes would make the function bigger and I’d have to move it into some spare space in the ROM.

    There are only a few kb of space at the end of the ROM, but I’m sure a lot of the data at the end of the ROM is the Chinese character set and also the Chinese language support.

    We will need to find where the Chinese language data is stored and remove it.

    There are other debugging functions which could be removed, but they in various places in the firmware so it would be messy to try to remove them and use that space.

    One other problem we have is the menu system. I don’t think we can simply move it, because I think it may contain function pointers, (even though Ghidra didn’t find them)

  5. ken

    wow looking good, waiting with baited breath

  6. W1AEX - Rob

    Hi Roger, Thanks for all your work with the GD-77 project. I’d be interested in giving the enhanced firmware and enhanced version of the Community CPS a shot with my GD-77. Thanks and 73, Rob W1AEX

  7. Roger Clark

    Hi Rob.

    I’ll email the file to you.

    It seems quite stable and is being used by about 10 people at the moment

  8. Roger Clark


    I have emailed the file to you, but since its a bin file, it may have been blocked as spam, and perhaps I should zip it before I send it

  9. W1AEX - Rob


    Thank you, it came through fine. This evening I backed up my calibration data using Jason’s Flash Manager and will install the enhanced firmware tomorrow and then play around with the new DMR-ID utility within the new enhanced Community CPS. Thanks for all your extended hours of investigating, coding, and for putting it all together and sharing what you have come up with!


    Rob W1AEX

  10. Roger Clark


    Sometimes these things get blocked….

    It is quite difficult to make even the most minor changes to the firmware, for many different reasons, not least the lack of the source code, and also the shortage of space in the ROM.

    But hopefully I will be able to make some more improvements and also fix some bugs

  11. W1AEX - Rob

    Thanks again Roger. I installed the enhanced firmware you sent and it went in fine. Using the new DMR-ID utility in the Enhanced Community CPS I was able to load in the entire Region 3 (US and Canada DMR-ID table) with 14 characters displayed using a setting of 85 days in the Inactive Filter field. That’s 14414 contacts out of a possible 14562. I never expected to be able to get away with that! Everything is working fine and it’s a treat to see call signs + names being displayed. Thanks again! 73, Rob W1AEX

  12. W1AEX - Rob

    I should amend the above information with the fact that Region 3 also includes Mexico and Dominican Republic so I actually got more than I expected! Thanks again, Rob W1AEX

  13. Roger Clark

    Hi Rob,

    I’m glad it’s well for you.

    I will continue to see if I can increase the number of contacts that can be stored.

    Btw. Can you email me your flash memory backup as I would like to compare the calibration data on different peoples radios to see if they are actually calibrated individually or if most settings are identical.


    Hi Roger, congratulation for all the great jobs. please just let me know if there is any prevision about when will available this version of firmware. thanks, 73

  15. Roger Clark

    Hi Fabio

    See my other post

    I am slowly fixing bugs and also adding enhancements to the GD-77 firmware, but its very difficult working with assembler / machine code, without the source files 🙁

    Version POC2 now seems stable and I put a link to it in one of the comments in that post.

    Please remember these are experimental firmware, and you should at least backup your flash memory using FlashManager first before trying it.


    Hi Roger, I found that there, and will test it, thank you so much for all. regards, 73

  17. Jeremiah A Mulford

    I have a gd-77 and wouldn’t mind testing this too. please let me know If I can help and what feedback you need. i’m on Firmware 3.2.1 from Radioddity right now.

  18. Roger Clark

    I’ve released a link for POC2 for those who are willing to try it.

    See the link I posted in the comments in this post

    I’m working on Proof Of Concept 3 at the moment, which is Direct TalkGroup entry, and its generally working, but has one problematic bug which has prevented me from releasing it for general testing yet.

  19. EvO

    Hi Roger.
    About DMR ID wouldn’t it be possible to add the possibility to save and reload the archive?
    I mean, download the archive and customize it for your needs and then put it on the transceiver or save it for future use.
    Being able to save the work it would be possible to reload the same already customized archive on other GD-77s without the need of having to re-load and repersonalize the DMR ID archive each time.
    There is also to consider that in some cases the archive that is downloaded with DMR ID system is structured for instance with the callsign repeated also for the name that is therefore useful to modify.
    This is certainly possible, as DMR ID system already allows it, but being able to save and reload the personalization would be very useful.
    What do you think about it Roger?
    Of course I’m not sure if what I described can be done or not, mine is just a thought.
    Thanks for your tireless work Roger, please keep it up!

Leave a Reply