UPDATE: Roll your own GPS can now track twice as many satellites


[Andrew Holme] wrote in to tell us about some work he’s done to improve his scratch-built GPS receiver. He figured out a way to use the same hardware but double the number of satellites it can track to a total of eight. When we looked at the original hardware about a year ago it was limited to monitoring just four satellites. That’s the bare minimum for calculating position data. This will not only help increase the accuracy, but remove the problems that would have been cause if just one satellite was dropped because of an obstruction or other issue.

His solution is based entirely on using the FPGA in a different way. He had taken up almost all of the gates available in the Xilinx Spartan 3 chip. Now he’s implemented a CPU on the chip and is able take some of the work off of the hardware gate design by running code on it. He also found and squashed a bug in how the data was processed. He says his original work wasn’t taking into account the rotation of the earth when determining position. All of these improvements put his accuracy at +/- five meters even when he’s not tracking all eight satellites!


  1. what is military resolution?

    • jcg says:

      640×320 and cost about 10 times what a full HD the civilian version would cost

    • M4CGYV3R says:

      There are quite a few different methods of resolving position from GPS signals. The most common is SPS – standard positioning system – which uses a single frequency from multiple satellites. This is what most of your phone and car GPS units use, and it is accurate within about 10m. There is a military/government grade version, called PPS – precise positioning service – which uses two frequencies to perform ionospheric correction and gives an accuracy of around 1m when alone.

      You also have additional features such as Wide-Area Augmentation Service(WAAS) and ground based Differential GPS(DGPS) which uses a known-position receiver to broadcast in real time the correction to the satellites’ signals. This works within about 100km of the broadcasting correction station. Using the phase of the radio signal as a measurement of its own, you can get down to 4-10cm resolutions with these in higher-end kinematic and survey receivers.

      Contrary to popular belief and urban legend, the government is not trying to prevent you from accurately determining position using GPS by limiting the methods and technology you can use. Ever since 2000 the SPS and PPS have been basically identical for accuracy.

  2. graudējs says:

    Now that is a real hack. Thanks

  3. imoge says:

    make sure to implement COCOM limits unless you want to face a long time in prison.

  4. redbeard says:

    So at what point can it cross reference GLONASS data?

  5. dhvfrtikwm says:

    Two satellites are required for a 2D fix. 3 satellites are required for a 3D fix. Not 4.

    • No, 4 are definitely required for a 3D fix. This is because not only 3 dimensional position , but also time is being solved for, since GPSes don’t have an accurate clock.

    • Only if you happen to know exactly what time it is locally. Two satellites only constrain you to a 2D space, since all you can say is that you are x numbers of meters further away from one satellite than the other. Three then puts you on a 1D line. The fourth satellite lets you resolve true time, so that you can calculate absolute distance from the other three satellites, instead of only relative difference between satellites.

      So no, you need four satellites.

      • nybbler905 says:

        To add accuracy, use 4 satellites and do the math with each of the 3 pairs you have to create a ” zone ” you are in ( including orientation of pitch, roll, yaw vs sat position ) and the error between the 4 locations is your error rate. Being in 25 meters is pretty good for ” comercial ” units ( have an iWay 250 that i got for $15Cdn due to charge issues ) and I have to hack that one day to find out why it takes soooo long to get under 95k error for position. 15 minuets on in a field on top of the car should get the error down to less than the 20m I get with it tracking 4 solid and ‘ knowing ‘ another 5 on the graph ( but not indicating that it’s using them to track ). Good work on this build in getting the error down!

    • redbat says:

      2 sats to _maintain_ a 2d fix, 3 sats are needed to get the 2d fix in the first place. Likewise, 3 sats to maintain a 3d fix, 4 sats to get a 3d fix.

  6. jc says:

    Awesome :)

  7. Astroza says:

    an incredible work!

  8. tlalexander says:

    Hacks that are improved by fixing a bug that forgot to take into account the rotation of the earth? Awesome.

    Bravo hack man, bravo.

  9. Fernando says:

    Congratulations Andrew. Excellent work!! very detailed blog, thanks for taking the time to write it up.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s