Galmon – Galileo/GPS/GLONASS/BeiDou open source monitoring
galmon.eu
galmon.eu
https://news.ycombinator.com/item?id=21067915
Nice talk about the project by the maker:
https://media.ccc.de/v/mch2022-17-how-do-gps-galileo-really-...
Link to html but ultimately a 49min video
Very interesting, because it is not just the usual gps talk
At the end he casually mentions so many things that he could also talk about, including that apparently the encryption on GLONASS military signals was already hacked, and that many parts of the mil-spec GPS are "securiy through obscurity"... Is this true? If so, where can I find more reading material about this? It was my understanding that the P(Y) code in GPS is encrypted using (basically) a OTP, and not based on obscurity at all? Doesn't GLONASS use a similar system?
Could you please comment on this:
https://twitter.com/erikkannike/status/1612729957851054080
How does he track the jamming?
How do the russian jam?
How could they ever jam up such a large swath?
Does that even have a discernible effect on modern GPS receivers in smart phones?
Surely it doesn’t effect military systems, they would anticipate jamming, right?
Sometimes the interference seen on those maps does affect phones, sometimes it doesn't.
Coincidentally there's a huge region of GPS (at least) interference this week over the New Mexico area, from a military test. My guess is that people on the ground won't be affected, unless maybe they're very close to White Sands Missile Range between 18:30 and 22:30 GMT. See https://twitter.com/lemonodor/status/1611812892969664515 for more info.
"The internet and the availability of stunningly capable chipsets has made it possible to create a monitoring network that spans the world & successfully receives almost every bit transmitted by the close to 100 navigation satellites currently in orbit."
Maybe clarify the above sentence with "an enthusiast-run, open source navsat monitoring network" and perhaps it sums up the project well AFAIUI.
constexpr double mu = 3.986004418 * pow(10.0, 14.0);
which is used in the the explanatory blog post and presumably the code, and constexpr double mu = 3.986004418e14;
which is how I would have written it?FWIW the following prints 1, so it's probably a matter of taste:
int main() {
printf("%d\n", 3.986004418e14 == 3.986004418 * pow(10.0, 14.0));
}
I prefer the second one for sure.I'm more interested in altitude accuracy than position which seems to be a challenge for GPS
It's odd to me that most devices support/trust GLONASS which shouldn't be trusted while not (yet?) supporting/trusting Beidou
(like Garmin watches have no Beidou support)
neat https://upload.wikimedia.org/wikipedia/commons/b/b4/Comparis...
network comparison https://en.wikipedia.org/wiki/Satellite_navigation#Compariso...
Is there a 3d realtime model online of the earth that shows where every satellite is?
Would be an interesting project if doesn't exist yet.
Russia requires GLONASS support, so a worldphone needs it. China requires a lot of things, so a worldphone isn't going to work anyway.
Annnnd there goes another app into my 'toys for waiting in lines' folder.
"Everyone knows" since day 1 of GPS back in the 80s that tree leaves and rain storms ruin GPS reception, but rather than complaining about it and/or avoiding it, why not use it as a data source?
Turns out I had trouble pulling a useful signal out of the noise. Maybe with a lot more data or a lot more RX running in parallel or ... There are of course inherent limits as discovered by Air Forces over the decades where bistatic radar works best directly overhead whereas I was interested in "storm clouds on the horizon" exactly where it didn't work.
I had some optimistic imagination in that if heavy rain causes 30 dB of attenuation, then extreme data analysis might indicate something as trivial as cloud cover, or even fog, might cause 0.01 dB of attenuation and I could map out regular non-rain clouds or something. That data could not be pulled out of the noise.
Very optimistically, if I placed antennas on corners of my property, I could "edge detect" even if the signal level varied randomly-ish by comparing the multiple RX and doing some trig. I live close enough to an airport that occasionally a plane should be between me and a satellite. That did not work either.
Anyway, the linked distributed project is my merely a thousand times larger than my playing around experiment.
However, that's all long-term stuff. Moment to moment, GNSS receivers try very hard to mask momentary blips in data. I think you'd need to be down at the RF/baseband level to see the stuff you're trying to see, rather than taking "cooked" data from the receivers.
The SDR GPS receiver in the KiwiSDR may be a good start.
https://www.armscontrolwonk.com/archive/1216884/detecting-mi...
has more info on that. Essentially the corrections for each satellite can give you a map of what the ionosphere looks like, and so having more satellites is better. If there were publicly available dGPS- or dGLONASS/dBeiDou etc. archives available in other countries it would make this even more useful. If China or Russia published these it would be very useful indeed for triangulating the flight path through the ionosphere.
But it's not exactly hidden, you can infer quite a lot of things about the satellite status, if you just listen to what they're telling you. The trouble is, they're all over and moving fast, so you need a lot of friends with receivers to feed you the data, then you can put together a picture of the constellation health.
Ergo, Galmon.
Since then, it's turned out that a bit of sunlight on the operation of all four GNSS constellations, not just Galileo, has revealed quite a lot about their inner workings, availability, and health of individual satellites.
One bird in particular was launched into a wrong-but-not-useless orbit by a rocket failure that juuuuust barely got it up there but didn't finish the job. Trouble is, most receiver software assumes the orbits are very nearly circular, and a highly elliptical orbit is both problematic if used for general navigation, and a useful source for testing more robust receiver software that can compensate for it. (Maybe the software wasn't correcting for other satellites' slight ellipsity as well as it could either.) So Galmon provides a view of that satellite's status as observed by receivers all over.
Should the gps data be shared between these two projects/networks?
There might be an alternate firmware for it, or there might be a drop-in upgrade from another model in the series, but at that point you might as well just get a real F9P and make it a separate project sitting on the same shelf.
This goes on a bookmark for future reference.
There seem to be issues with stepping time, and long term alignment seems to be deprioritized over short term quality. Better to have better data today than to have better long term drift over a decade. So all the systems kind of "free run" very close to each other but measurably different. It does not seem that very long term drift adjustment was baked into the cake of any nav protocol, probably because its not navigationally useful.
I compiled the git source on my own pi. Bert knows who I am.
https://en.wikipedia.org/wiki/Wide_Area_Augmentation_System
Greatly improves altitude accuracy in North America