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 😉