Just a quick post on a hardware hack that’s possible, but quite difficult, on the GD-77 to increase the internal memory from 1M bytes to 8M bytes
The GD-77 memory consists of these 2 chips
(Photo curacy of Jason VK7ZJA’s website, since I forgot to take a “before photo”)
The chip on the left is a Winbond 25Q80, 1M byte (aka 8M bit) SPI flash memory
The chip on the right is Atmel 24C512 (or possibly a equivalent device) which is a 64k byte EEPROM.
The EEPROM is used to store half of the codeplug (things like the basic settings and the Zones)
The 1M byte Flash chip is used to store the top half of the codeplug, and the calibration data, as well as one of the display fonts, and also the DMR ID
The 1M byte Flash chip is almost 100% utilised and there is no room left to store, either more codeplug data or more DMR ID data.
The main limitation is the DMR ID data, because even in the version of the official firmware which I modified, I could only store around 15,000 callsigns + names, whereas the entire DMR ID database is now around 130,000 callsigns.
Looking at what other flash memory chips were available, I found that Winbond make devices with more memory, which are software compatible with the 25Q80, but unfortunately are not in exactly the same physical package.
However it is possible to bend the legs under the larger package and solder the 25Q64 in place of the 25Q80, and upgrade the radio to 8M bytes (aka 64M bits) of main memory.
Or course, just increasing the memory size does not make any difference unless the firmware is also changed, so that the addition 7Mb of memory is used.
So I modified the official firmware, so that the DMR ID data was stored. Rather than address 0x30000 (hexidecimal) I changed it to 0x100000 (i.e the 1Mb point).
I also changed the DMR ID maximum size from 128k to 7M bytes.
The next thing to change was the DMR ID section in the Community CPS, to upload the data to the new location, and to remove the data size limit.
With these changes in place to the hardware, the firmware and the CPS, I was able to download the DMR ID for multiple regions, and in the end I found that the data from ham-digital.org, (which I use for the DMR ID system in the community CPS), seemed to only show around 60,000 active callsigns on DMR in the last 12 months.
So I uploaded that data to the GD-77; rebooted it and used my hotspot connected to Brandmeister to listen to various TG’s around the world, to test whether the DMR ID system was indeed storing 60,000 callsigns…..
Which it was.
So far so good except for two problems. 🙁
- The official CPS upload speed is very slow, both for the codeplug and also for the DMR ID, because it uses the same system to transfer the data.
The speed to upload data appears to approximately 10,000 IDs per minute.
Hence it too between 6 and 7 minutes to upload the 60,000 IDs, and for the full 130,000 DMR ID’s which I could download from RadioID.net, it would take approximately a quarter of an hour to upload to the radio.
- The data that the Community CPS uses, is downloaded from ham-digital.org, because I use the filtering available on their servers, to select which region’s ID’s to download. For example all ID’s starting with 505 for Australia.
I’ve found that its not practical to download the entire DMR ID data for all regions from ham-digital, because it seems to take too long, and the download times out.
And.. even when I managed to download data on all regions, from ham-digital, by downloading each region separately e.g. all ID’s starting with 1, then all ID’s starting with 2 , etc. I found the total was only 60,000 rather than the expected total of at least 120,000
So to make use of the additional memory, I would also have to change the CPS to download from RadioID.net, including changing the CPS to read the different format in which the RadioID.net data is delivered.
Unfortunately, I don’t think I am going to be able to modify the official firmware so that it uploads any faster, because this is intrinsic in the way the firmware operates, using a Real Time Operating System to handle the USB, which it does in thousands of small 32 byte transfers.
So currently, I think this modification would only be useful some time in the future, using Kai’s firmware.
And with Kai’s firmware, the extra memory may not be absolutely necessary, since the codeplug size is likely to be much smaller, since it does not need multiple duplicate channels, and won’t store the font etc in the Flash memory.
This would probably allow around 700k to be allocated to DMR ID storage, which could allow for around 60,000 ID.
Also, if more radio’s start being able to transmit DMR “Talker Alias”, the DMR ID system may eventually be redundant, because “Talker Alias” allows 31 characters of additional data to be sent with the transmission, and this would be plenty to store the callsign, name and some other information e.g. location locator.
So although this was an interesting technical exercise it appears to be a a bit of a dead end at the moment