The latest version of the OpenGD77 firmware can now be downloaded from this link
Edit. 1st November
I found a crash bug in the original Tier 2 Alpha 2 in the Zone list menu
I’ve now updated Alpha 2 version to fix the bug, but I am sure that I will probably need to release more bug fixes to the Alpha 2 so I have created a new version “Tier2 latest”, which I will update whenever I make any progress with the Tier 2 development
For those interested in the technical details. The RF chip (AT1846S) and the EEPROM use the same I2C connections to the CPU / MCU, which means I have to be carefull that different parts of the firmware don’t try to access the EEPROM and the AT1846 at the same time.
This is especially problematic, because of the DMR timing requirements a lot of the control of the AT1846 has to be done in an Interrupt Service Routine, which has very high priority and can interrupt during an EEPROM transfer, hence causing the I2C bus to effectively hang. I’ve noticed in these circumstances that a soft reboot, does not resolve the problem and the only way to clear the bus conflict is to turn the radio off and one again.
Its easy to spot when this problem has occurred, because when the firmware tries to read the EEPROM, it can’t so it has to go back to using hard coded defaults for the frequency and the display back light intensity etc. So you’ll see 430.0000 displayed on the VFO and the backlight will be at 100% intensity.
In this case the problem was not being caused by an ISR, but was because the firmware uses a Realtime Operating System (RTOS), where the main task which includes the User Interface and menus etc, runs as a separate task to the DMR/FM RF control task.
The RSSI sampling is handled by the DMR / FM RF task, but the Zone list menu is handled by the main / UI task, and the EEPROM access to read the Zone names was being interrupted by the DMR / FM task, as it has higher task priority (because its more time critical than the main / UI task.
I had a couple of options to fix this, either move the RSSI sampling to the main task, or mark the code block in the DMR / FM RF task as “Critical”, so that task switching could not occur when it was sampling.
Because RSSI is a RF related element, I decided it made more sense to leave the RSSI sampling code as part of the DMR / FM task, and to add the code to prevent task switching.
The EEPROM reading and Writing code, already has the code to prevent task switching, so the bug was most likely that the EEPROM read was initiated whilst the RSSI was being read from the AT1846. Either way, the result was the EEPROM could not be read and the final result was the I2C bus locking up.
In addition, I also found a bug in some new code which I added to do partial updates to the display. And the RSSI bar graph was not always getting updated. So I’ve changed the code back to doing a full screen redraw each time the bar is updated.
In the longer term I need to work out why the partial display update didn’t work correctly. But because the firmware was working prior to this update, I’ve simply put it back to the way it was before.
I made one other small enhancement. The feature to temporarily change the radio’s DMR ID has been changed, so that pressing Function + Green key, after entering the new DMR ID, writes the ID to the codeplug, so that even if the radio is power cycled the new ID will be retained.
I did this because I needed it for testing, as I could not be bothered to keep loading different codeplugs with different ID’s in them.
Also this means that its now possible to get a brand new GD-77, install the OpenGD77 firmware, and to operate the radio using the VFO without needing to use the CPS to set the DMR ID or a channel etc.
This version is still far from perfect, hence I’m not renaming it as a Beta version, but it is better than the original Alpha version.
Known bugs and other comments
- Hotspot mode has not been integrated into this version yet as its not stable enough.
- Your own ID / Callsign will be displayed when using repeaters which have a digital echo.
I will need to put some sort of masking to prevent the radio from displaying its own ID / TG if its an echo after releasing the PTT when using a repeater.
- The firmware crashes occasionally
- The firmware can be made to crash by doing things like changing the channel over and over again in quick succession or switching between modes over and over again , quickly
- Sometimes the display briefly shows TG 0, or potentially an old ID rather than the current ID, when changing channels or Timeslots.
- The display occasionally has come pixels in the wrong place, but it normally immediately redraws and the pixels are removed.
New features in this version
- In Rx when the received signal Rx group does not match the Tx TG the Talk Group is shown in inverse video.
This is to alert the operator that they will not be transmitting back to the other station on the same TG as the other station is transmitting on.To switch to the TG being used by the other station: Press the Function (blue) key while the TG is being shown in inverse video and the Tx TG will be changed to match the Rx TG.
- Signal strength bar graph is now shown on the Channel and VFO screens.
This is not highly accurate and as intended as a guide to the signal strength. If you need a dbM measurement of the signal use the RSSI screen, but even then each GD-77 has slightly different Rx sensitivity so the dBm value is not guaranteed to be that accurate.
- TimeSlot filtering works a lot better than in the previous version.
- ID and TG number display should only be for the currently selected TimeSlot.
- The Orange button now accesses a context sensitive menu on the Channel and VFO screen.
Currently this only has a few functions.
On the VFO screen, the VFO freqs can be changes e.g. Tx / Rx swapped, or both frequencies set to the Rx frequency.
On the Channel screen there is only one function, which copies the Channel data to the VFO