Whenever I see "from scratch," I'm always curious to see how from scratch the author actually means so I'll admit I was a bit disappointed to see that the hardware was just RTL-SDR. Still, the protocol decoding was very interesting and the result is great.
> GPS was launched in 1978, which was 45 years ago at time of writing. Five billion people are currently under 40 years old, so well over half the world’s population has never existed in an environment but this.
A note based on this. While GPS was around since 1978 the signal was intentionally degraded with a process known as "selective availability" until 2000. This largely rendered GPS unusable for many many purposes, definitely useless for road navigation, it had some limited utility in areas like backcountry navigation and was definitely useful for marine navigation.
> gypsum can go from a cold start to a fix on the user’s position, and the precise time, in less than a minute of listening to the antenna
This is very impressive and outclasses what I see even commercial receivers doing today, do you have any idea how? I remember on road trips in the early 2000s I would have to sit on the side of the road and wait for the GPS receiver to get a fix (a 15-20 minute process, when it worked) before we could leave. Or, more likely, my mother would just start driving with paper maps.
While we're at SDRs, ITAR is also responsible for takedown of passive radar GNU Radio module made by Kraken RF team.
[1] https://www.space.commerce.gov/itar-controls-on-gps-gnss-rec...
For those interested in the story of the development of GPS, I found “GPS Declassified” by Richard Easton to be an engaging retelling.
- GPS works even in airplane mode (while on a literal airplane) - It works without cell service, or wifi, or anything - The United States of America controls the GPS constellation, and they can (and have!) turned off GPS off certain regions at will when necessary (which has prompted other countries to launch their own GNSS constellations) - GPS satellites don't send down a location, they only send down time
I think it's a really fun exercise to do this with data you receive on your phone. Your phone has a direct link to satellite.
(side note: I recently learned the basic principles of star navigation, and while it is a completely different mechanism, it also relies very much on keeping accurate time, which I thought was a fun symmetry!)
Yes, and I use that to take pictures of features below my as we fly from one place to the other.
If you have a iPhone, when you land, those pictures will be associated with the place you were when the photo was shot. This enables you to locate those curious features you happen to see.
* https://www.youtube.com/playlist?list=PLGvhNIiu1ubyEOJga50LJ...
It just so happens I've got an RTL-SDR, a GPS receiver that outputs raw pseudoranges, and a signal splitter that lets me put the signal from one antenna into two receivers.
So if you like I can get the pseudoranges out of a commercial GPS receiver, and the raw signal from an RTL-SDR at the same time, which might help you pinpoint your last bit of location inaccuracy.
Would you be interested in that? Or do you consider this project complete?
What does a job have to do with publishing hobby projects?
https://github.com/barbeau/gpstest
I've been fascinated for years how badly GPS does altitude (mean-sea-level)
in the USA they had to build an augmentation system for airplanes for altitude (WAAS)
I noticed the opposite, it always fails to locate any satellites, even when GPS is still turned on in aeroplane mode. I'm not sure why.
I didn't finish reading the whole thing but was curious. Is there any way of brute forcing it or some other trick to get the chipping sequence to get the P code for more precise GPS?
C:\dev\gps\gypsum-release>gypsum-cli.py
Traceback (most recent call last):
File "C:\dev\gps\gypsum-release\gypsum-cli.py", line 9, in <module>
from gypsum.receiver import GpsReceiver
File "C:\dev\gps\gypsum-release\gypsum\receiver.py", line 20, in <module>
from gypsum.navigation_message_decoder import EmitSubframeEvent
File "C:\dev\gps\gypsum-release\gypsum\navigation_message_decoder.py", line 8, in <module>
from gypsum.navigation_message_parser import (
File "C:\dev\gps\gypsum-release\gypsum\navigation_message_parser.py", line 62
*bits
^
SyntaxError: invalid syntax
This was true, but not any more. You can get truly impressive “direct RF sampling” or “direct RF conversion” receivers that are more than fast enough for GPS. For example:
Xilinx RFSoc: https://www.mouser.com/datasheet/2/903/ds889_zynq_usp_rfsoc_...
A nice National Instruments article: https://www.ni.com/en/solutions/aerospace-defense/radar-elec...
And their referenced off-the-shelf hardware: https://www.ni.com/en-us/shop/category/flexrio-custom-instru...
One might be forgiven for being a bit puzzled as to why NI thinks that direct RF conversion is cost-effective but nonetheless sells the device for $30k :) That being said, if I were prototyping a system that wanted phase-coherent wideband reception around 3 GHz and I had a proper lab and budget, I’d buy a few of these. If I were to go to production, I’d either wait for costs of a homemade board to come down a bit or see whether a traditional heterodyne receiver could do the trick.
Hmm. For military applications, if I were concerned about really advanced RF-seeking weapons pointed at me, a direct conversion receiver is probably great — there won’t be any leakage of the LO that an enemy device could try to detect.