IIRC, I came to the conclusion that it's a script running in the background that's causing the time to constantly reset. I think it was keepTimeUpdated or something like that. I don't think the system clock is why GPS never goes green though (I don't think there's any code for the GPS to even try updating the system clock).
I think you are correct. I think I might have proof, but I don't think it's (yet) needed. In any case, when I was having trouble running the Calibrate Timebase thing, it turns out the hardware clock (as displayed by hwclock) was set to Jan 1 1970. In other words, it was just counting up from epoch. There is also an 'rtc' module, which
could be the source of our problem: if the RTC is faulty or resetting, then it's possible the RTC or the manager of it is fighting attempts to set the clock.
I have found some code regarding this in the GUI, so I can investigate further.
Has anyone been able to decompile the ARM code? I assume there is little to no hope to decompile the firmware for the Dragonfly chips, but the ARM code (of elgato server) should be easy to decompile. I tried downloading and using
snowman, but it is unfortunately stupid and it runs out of memory at the "regenerating types" stage. It seems to have generated all of the functions from two different binaries, but because I only have 8GB of memory I can't get much further. Does anyone know how to force a process to work from a disk instead of from memory?
You can look at the elgato GUI (siege) source JAR linked here, and it's clear that there are a few checking conditions before you're allowed to enter the timebase recalibration. Also, there appears to be a direct command you can issue to
some command listener to set the new timebase ADC value directly -- this may help N1996A owners. At the very least, you could GET the existing timebase ADC value and then SET a new one, then compare the clocks (though how one would go about this, I have no idea).