I've now pretty much read through the entire thread. I did read the particular post about applying the patch per the quote below:
Apply following patch to elgato binary to fix GPS time synchronisation:
0x0122880: replace 4b2585e2152882e2 with de2585e23f2882e2
As a non-programmer, that is fully above my head. If there is a set of Linux commands that do this, I would greatly appreciate some instruction on how to do this. Otherwise, whatever other instructions for specifically how to do this. I realize this thread is mostly for techno types who experiment with these things. I am a techno type in metrology. I have deep understanding of how accuracies work. And I am a fast learner. But unfortunately, even with my decades in metrology, communications/navigation systems/RADAR systems/instrument calibration, this is a weak zone for me.
If anyone could explain is some detail how to apply this patch, I would be forever grateful.
The original poster is basically telling us to do a binary patch on the file ("elgato" binary). The first thing you would do when doing any patch of any file (binary or not) is to make sure you have a good copy of the original, of course.
All of the important files on the device are in
/flash. In prose, they are in a subfolder in the root of the filesystem. This is certainly unusual in most Linux systems. In this case, there are also a bunch of other folders in /:
bin, dev, etc, lib, mnt, home, nfs, root, tmp, var, sbin, usr, xdrive. These are the usual thing you are used to in Linux systems. I think these files are generated out of files located in the /flash directory, though; but that's not important. When listing files, make sure to do
ls -l so you see where the files point to (many important files point to e.g.
/flash/linux/etc/...).
As for the "elgato" binary, that's in
/flash/egServer/elgato. This file is the actual instrumentation server. This is what the GUI communicates with to control the hardware. (The GUI is located in
/flash/egGui, by the way).
Now that we have the location and context of the file, all we need to do is interpret the original instruction:
Apply following patch to elgato binary to fix GPS time synchronisation:
0x0122880[location]: replace
4b2585e2152882e2[old value] with
de2585e23f2882e2[new value].
This line is telling us to use a hex editor (vi/vim has a hex edit mode, emacs has one, there are probably command line tools to hex edit too). It's telling us to starting changing the actual file (though we are representing this in hex for convenience) on disk at [location] bytes from the start of the file. It further specifies that we should see, at this location, the value [old value]. And we should change [old value]
[A] to [new value], then save the file.
Some/most editors are usually used to operate on text files, so you may need to tell the editor to load the file in binary (e.g. vi -b). Then once you open the file, you use
some command to convert the binary to hex. Then you find the [old value], replace it with the [new value], convert the file
back to binary from hex, and then save the file.
Since you have a backup, you can afford to make a mistake in this process. You'll probably get it right on the first try though. Note there are two hex changes (at two different locations) listed in this thread: one which changes the program which handles licensing to automatically allow all license options that are listed (regardless of them having a correct key). The other corrects the clock issue. Presumably there will be more of these in the future.
We go through all of this trouble for basically two reasons, in order:
- We don't have access to the source code for this file, so we can't tell you a change in code to fix the problem.
- Once you have found some change to make, you have to make the appropriate change in the binary file. People typically don't distribute the binary file since it is covered by copyright and various other things. So patch instructions are used instead.
I hope this is cleared up. Hopefully, you or someone else can find all of the binary file changes to allow the signal generator to go down to whatever the true lower limit of the hardware is, one day.
[A]: Notice that it was not necessary here to actually give the old value for this process to work (since you were told the location to start the edit). It's given as a checksum: if the value you see in your file is not [old value], then you are either at the wrong location in the file, are editing the wrong version of the file, or both.