Updates to the Community GD77 CPS

posted in: c#, Ham radio | 58

Guys

I’ve updated the ‘development’ version of the Community CPS

 

https://github.com/rogerclarkmelbourne/radioddity_gd-77_cps2.0.5/raw/development/installer/RadioddityGD77CPS306CommunityEditionInstaller.exe

Its installed into Program files x86 by default

It no longer uses setup.ini to store the settings as these are now stored in the windows registry as they should be retained when updating to newer versions (though this doesn’t always seem to work, and currently I”m not sure why)

If you want to install elsewhere that is also possible and if you want to use setup.ini I’ve added a “Portable” installation option in the installer which uses setup so the CPS should be able to run on a memory stick etc for use where perhaps you use it at work and can’t install programs.

 

I got fed up with having to open my code plug each time, so it now remembers the last codeplug you saved and will re-open that one again when the CPS opens.
if you want a blank codeplug, you can still press the New codeplug button or select it from the menu

I’ve changed the version number from 2.0.5 to 3.0.6 as Radioddity now seem to be using the same version number for the CPS and the firmware, so it makes sense to change my version in preparation for when Radioddity finally release firmware 3.1.x (and the matching 3.1.x CPS)

I’ve fixed a bug where the development version ‘Build’ date was not actually the date I built the exe but it was using the current date, which was mistake in my code. I’ve now switched this to using the built in version numbering supplied with the Visual Studio development environment which and the build version will appear as 1.0.xxx.yyy. (xxx is the number of days since 01/01/2000 . Ignore the yyy part as I think its the number of seconds since midnight divided by 2)

I’ve also changed the title bar on the CPS to show the full path of the file that is currently loaded, except for when it has no user file loaded (and has Default.dat loaded)

 

I also got fed up with having to agree to terms each time the CPS opens, so if you agree the terms this value is now saved and it won’t ask again.

One other change which has been in the code for some time is that it is possible to perform a file association between the .dat file or a .g77 (I made up a new file extension ;-), to the CPS.
I’ve not been able to get the installer to automatically setup the file association, but you can manually do this in Windows and it should work if you double click on a .dat to open the CPS and load that file

 

I also made some changes ‘under the hood’, so that the structures that store the Rx Group Lists are in separate code source files, as I hoped that when Radioddity release a final version of 3.1.x, which I presume will have the changes to Rx Group Lists, I may be able to allow the CPS to handle both the old and new structures.
However it looks like this won’t be possible, because the code is not structured to allow this, and would require a major re-write to make that work.
So when CPS 3.1.x is finally released by Radioddity, I’ll probably have to do a more hack solution where the data for the Rx Group list pre-processed if the codeplug from 2.0.5

 

I think its fairly stable,and if you’ve not updated for a while you may notice other changes which I did a few weeks ago, including the ability to update your Digital Contacts from the Ham-digital.org “Last heard” database etc.

I’d appreciate if anyone can test and let me know if they experience any problems

 

BTW. I’ve left the old installer on github https://github.com/rogerclarkmelbourne/radioddity_gd-77_cps2.0.5/raw/development/installer/RadioddityCPS2.0.5CommunityEditionInstaller.exe

In case anyone has issues with this one.

58 Responses

  1. Sean. the slow kid
    |

    radioddity GD-77

  2. Roger Clark
    |

    @Sean.

    I think you didnt post your whole comment 😉

  3. Tracy c goodlett
    |

    @ Sean. the slow kid

    I got a model mismatch error when I didn’t have the correct firmware version installed. I suspect that is your problem as well.

  4. Roger Clark
    |

    What firmware did you manage to load that the wrong model number in it ??

    I know the GD77S is not compatibility as its firmware returns a different model number, but AFIK its not possible to upload the GD77 firmware into the GD77S (though perhaps there is some way to do this)

    Also the GD77S codeplug format is different from the GD77 codeplug format, as it appears to be based on an older version of CPS.

  5. Ohan Smit
    |

    Good day

    Thanks for the great work.

    I opened my RD-5R and it uses the same components as the GD-77
    Back
    https://mega.nz/#!rXRyiaSA
    Front 1
    https://mega.nz/#!ObRmFAxb
    Front 2
    https://mega.nz/#!meJUEIxK

    Would there be a way to modify your CPS to support the RD-5R?

    Sorry if this is the wrong place to ask.

    Kind Regards
    Ohan Smit
    ZS1SCI

  6. Roger Clark
    |

    I did briefly look at the RD-5R CPS, and I think its also written in C# and is similar to the GD-77 CPS, however the codeplug data structure is quite different, so its not possible to modify the GD-77 CPS to work with the RD-5R

    It may be possible to reverse engineer the RD-5R CPS from scratch, like I did for the GD-77, but its hundreds of hours of work, and since I don’t own a RD-5R and I’m not likely to buy one, since I already have 2 x GD-77 and a MD-380.

    You’d need to find someone else with a RD-5R that’s an experienced C# programmer with reverse engineering skills and plenty of time on their hands 😉

  7. Ohan Smit
    |

    Gosh

    i see I didn’t include the key for the jpegs

    https://mega.nz/#!jSZlHSyB!ACwB00zIx4XNCxGCWEgxLmsiZKBSKAaS9w-X4kdavME
    https://mega.nz/#!ObRmFAxb!GEPfaEZpSakl55nsCBPPxIocQ-p0yyP1xf_SHIVaqEg
    https://mega.nz/#!7XRW0BZZ!0h8bhPHgsEAftPWPUrHFkHx28ganEbV8zjApEN9Vpz8

    Okay great, I have no C# experience, I do have lots of time on my hand and experience with reverse engineering 🙂

    I do see it does read a bunch of HID requests if I read the codeplug from the device using the current CPS.

    [3, 0, 1, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 0, 16, 0, 66, 70, 45, 53, 82, 255, 255, 255, 86, 50, 49, 48, 0, 4, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 0, 1, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 0, 12, 0, 82, 1, 0, 8, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 0, 1, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 0, 1, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 0, 16, 0, 66, 70, 45, 53, 82, 255, 255, 255, 86, 50, 49, 48, 0, 4, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 0, 1, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 0, 20, 0, 82, 55, 128, 16, 63, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 0, 20, 0, 82, 177, 176, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 0, 20, 0, 82, 205, 192, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 0, 20, 0, 82, 233, 208, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

    Thanks for your response.

    I will make a repo if I find some more interesting things.

    Kind Regards
    Ohan Smit
    ZS1SCI

  8. Roger Clark
    |

    Its likely the comms protocol over USB is identical or very similar to the GD-77.

    However AFIK the codeplug data file structure is quite different.

    You best bet is probably to try de-obfucating and then decompiling the exe and then trying to fix the decompiled files so that they will recompile in Visual Studio (2017).

    There are probably tutorials on the web that show how to do that.