Update 6th Jan 2020

VK3KYY
Posts: 1656
Joined: Sat Nov 16, 2019 3:25 am
Location: Melbourne, Australia
Contact:

Update 6th Jan 2020

Post by VK3KYY » Mon Jan 06, 2020 12:25 am

The Alex, Colin, Daniel and I have been mainly focussed on bug fixing and stabilising the code over the last week.

Daniel has been doing a lot of work on the Hotspot mode, but his changes have not completely fixed the bugs in Hotspot mode, hence they will not be included into the "Latest" version until he tells me that they are ready for general use.

The new version can be downloaded from this link.

https://github.com/rogerclarkmelbourne/ ... latest.sgl


Changes in this version are :-
  • Improvements to the Talker Alias data processing and display. Thanks to Daniel
  • Language updates from various contributors.
  • Bug fix for the Tx on incorrect TS problem. From Colin. (Note this fix is does not completely solve the problem, and we are working on a much larger number of changes to the DMR subsystem)
  • Display of received TG name, lookup in the Contacts. From Alex
  • Fix for channel name, missing from the Tx screen. From Daniel
Also... Thanks to Angelo and others, the User Guide has also been updated to include any new functionality over the last couple of weeks.

There have also been some other technical changes to the firmware which will not be noticeable. Alex and I have done some work to make more of the RAM available to the firmware, which in the future could be used to speed up some of the codeplug data lookup operations.

The MK22 CPU (MCU) has 128k of RAM which is divided into 2 separate banks of 64k. Kai configured the firmware build system , to only use the upper 64k because a portion of the lower 64k RAM is used by the AMBE codec and is not under our control, as we are using parts of the official firmware binary for the codec.
However, I conducted some tests and the codec only uses just over 8k, roughly in the middle of the 64k, so Alex and I have now managed to divide the RAM into 4 sections. Lower_Base_RAM, Lower_AMBE_RAM, Lower_Top_RAM, and Upper_RAM, and reconfigured the compiler / linker to be use all blocks except Lower_AMBE_RAM.


The firmware still has a number of niggling problems on DMR, which are most likely being caused because we are not configuring the HR-C6000 DMR chip correctly and are also not reading data from it correctly.

As we have virtually no documentation on this chip, and have already learnt as much as we can from attempting to decompile the official firmware, I decided to take one of my GD-77 completely to pieces and solder some 0.25mm thick wires to the data connections between the MCU and the C6000 chip, and then connect those wires to a logic analyser so that I can capture the data traffic.
As you can imagine, soldering 0.25mm thick wires to the tiny pads on the PCB between the 2 chips was not easy, but I have now been able to collect data when the GD-77 is booted up and also when it receives a DMR signal and also when the channel is changed.


I will be putting the logic analyser capture files (in Saleae Logic data format) into GitHub later in case anyone wants to take a look.

Unfortunately this has given more questions than it has provided answers.

The official firmware seems to be writing to 4 undocumented "registers" in the C6000 during Rx, and it also seems to send a large amount of additional configuration data to the C6000 every time the channel is changed.

Its likely that the official firmware DMR Rx performance is better than the OpenGD77 DMR Rx, because we are not sending this data, and we will need to integrate this data into the C6000 setup.
However we are not likely to simply copy exactly what the official firmware does, because the official firmware is full of bugs, and often has unnecessary duplication. For example. Its unlikely to be necessary to send these blocks of configuration data to the C6000 unless the C6000 has been reset, as I suspect the configuration will be retained.

Additionally, the official firmware is reading data from undocumented registers during Rx, and even appears to be reading the DMR AMBE audio bytes from a completely different part of the C6000 !

I have done some quick tests, to attempt to read the AMBE data from where the official firmware reads it, but I didn't get any audio at all. So there must be some other differences in the C6000 configuration, which affects this.

Reading the currently active TS, during Rx, continues to be problem. Colin did a fix to improve the TS synchronisation under low signal conditions, however it looks like the official code may be using an undocumented register (number 0x57) as part of its TS synchronisation.

Kai was using register 0x57 but I found it was unreliable and changed the code to using the value in register 0x52, which is described in the limited data sheet we have for the C6000 as the place to get the TimeCode (TS number).

But it looks like the official firmware is reading both 0x52 and 0x57 at different phases of the DMR Rx, and we now need to look in more detail at the values in both of those registers, in an attempt to reverse engineer how to use those values to guarantee TimeSlot synchronisation.

In the medium term, I'm sure that we will be able to improve the DMR Rx and Tx, but I think that the next month will most likely be spent stabilising the code and bug fixing, rather than adding any major new features.


Edit.

I forgot to mention that I have also been attempting to remove unused screens from the OpenGD77 CPS, but its not a simple process and I have not had time to complete this work yet.

Also, I need to fix a legacy bug in the CPS where the frequency of a channel or VFO can only be set if its on a 25kHz step.
I need to completely remove this check from the OpenGD77 CPS.

And. I think I need to completely split the OpenGD77 source code from the Community CPS code, as its getting difficult to manage a combined codebase when the functionality is now starting to diverge.

User avatar
m1dyp
Posts: 335
Joined: Sat Nov 16, 2019 8:03 am
Location: Hertfordshire, U.K.

Re: Update 6th Jan 2020

Post by m1dyp » Mon Jan 06, 2020 12:41 am

great work all thank u all so much
73 de Ken :D

IU4LEG
Posts: 123
Joined: Wed Nov 20, 2019 12:49 pm

Re: Update 6th Jan 2020

Post by IU4LEG » Mon Jan 06, 2020 6:50 am

Thank you guy's, great work.
73

VK3KYY
Posts: 1656
Joined: Sat Nov 16, 2019 3:25 am
Location: Melbourne, Australia
Contact:

Re: Update 6th Jan 2020

Post by VK3KYY » Mon Jan 06, 2020 6:53 am

IU4LEG wrote:
Mon Jan 06, 2020 6:50 am
Thank you guy's, great work.
73
BTW. See also my post about Colin's experimental changes to improve TimeSlot Tx problems

User avatar
IZ4RCU
Posts: 6
Joined: Sun Dec 15, 2019 9:02 am
Location: Faenza (RA) Italy

Re: Update 6th Jan 2020

Post by IZ4RCU » Mon Jan 06, 2020 7:07 am

Thanks so much! You are fantastic! I immediately install the latest version!
73
IZ4RCU

DO4CZ
Posts: 42
Joined: Sat Nov 16, 2019 8:55 am

Re: Update 6th Jan 2020

Post by DO4CZ » Mon Jan 06, 2020 7:55 am

Thank you for the update, as well as everyone involved!
73, Joerg DO4CZ

IU4LEG
Posts: 123
Joined: Wed Nov 20, 2019 12:49 pm

Re: Update 6th Jan 2020

Post by IU4LEG » Mon Jan 06, 2020 8:12 am

Roger, just to let you know:
Also... Thanks to Angelo and others, the User Guide has also been updated to include any new functionality over the last couple of weeks.
the user manual, at usual link on github, seems to be still in the previous version.

User avatar
M6SEU
Posts: 10
Joined: Sat Nov 16, 2019 8:14 am
Location: Cramlington UK IO95fc
Contact:

Re: Update 6th Jan 2020

Post by M6SEU » Mon Jan 06, 2020 8:32 am

Great work lads. Many Many Thanks. :D

VK3KYY
Posts: 1656
Joined: Sat Nov 16, 2019 3:25 am
Location: Melbourne, Australia
Contact:

Re: Update 6th Jan 2020

Post by VK3KYY » Mon Jan 06, 2020 8:55 am

IU4LEG wrote:
Mon Jan 06, 2020 8:12 am
Roger, just to let you know:
Also... Thanks to Angelo and others, the User Guide has also been updated to include any new functionality over the last couple of weeks.
the user manual, at usual link on github, seems to be still in the previous version.
I don't think the PDF is getting updated that often because its difficult to create at PDF.

I think Angelo is only able to update the readme.md web page

https://github.com/rogerclarkmelbourne/ ... 20Guide.md

User avatar
4I1RAC
Posts: 149
Joined: Thu Nov 28, 2019 5:25 am
Location: Philippines
Contact:

Re: Update 6th Jan 2020

Post by 4I1RAC » Mon Jan 06, 2020 8:58 am

IU4LEG wrote:
Mon Jan 06, 2020 8:12 am
Roger, just to let you know:
Also... Thanks to Angelo and others, the User Guide has also been updated to include any new functionality over the last couple of weeks.
the user manual, at usual link on github, seems to be still in the previous version.
Thanks for the mention, but I have yet to incorporate major feature additions in the latest documentation. I think we may need to do a bit of overhaul or reorganization, due to the sheer number of new features, functionalites, and UI differences with OpenGD77.

Great work, Roger, Alex, Colin, Daniel, Kai, and team!
Angelo, 4I1RAC / N2RAC
Brandmeister Philippines support team
Talkgroups
- 51518 crosslinked to DX1ARM 431.600 MHz Fusion repeater, Metro Manila
- 98977 Opengd77
- 515 Philippines

https://n2rac.com

Post Reply