The main reason for software GPS is a cheap base station, generating RTCM messages to correct altitude measurements.  The aircraft would use a standard hardware module.

#1 the MAX2769 front end is just an analog to digital converter.  It outputs a 1 - 3 bits per sample, digitized form of whatever is on the carrier frequency.

There's no schematic or source code for the MAX2769.  1 datasheet has I0 used as a clock.  Another datasheet has I0 as a differential output.  Fortunately, it has some preset configurations.

You can gather from the presets & reference designs, that only the I1 pin in 1 bit CMOS logic mode & the CLKOUT pin are needed to make a receiver.

#2 the minimum output rate is 1 bit at 16 Mhz.

#3 that requires a high speed USB microcontroller, which mercifully started appearing in 2010, for $9.

#4 the GPS front end doesn't capture WAAS information, so you wouldn't get far with absolute waypoints.

There are many GPS libraries, but fastgps is the only one we've found, which inputs baseband data.

Fastgps is part of a book you probably need to buy to get very far with it.

Sample baseband data files & some changelogs are on

The book's $139 tag undoubtedly covers bandwidth & quantitative easing.  It would be only $20 if the data files were compressed & houses were free.

The data format is 1 byte per sample.  Dividing the file size by 16367574 gives the total seconds recorded.  The example files use 2 bits per byte.  Bit 0 is always 1.  The 2 bits are left shifted 1.

Converting the file to 1 bit made no difference.  Here we have altitude from a sample file.



Here we have position.


We supplied the .sp3 file, which should have made more accurate readings, but this was an urban environment with only 6 satellites.  It gave the same result without the .sp3 file, so it's probably only speeding up initialization.


Fuggedabout downsampling it to 4 megabits.

Tracking just 8 satellites, our 3.6Ghz computer runs fastgps at 2/3 realtime.  Tracking 6 satellites, it's almost realtime.

That's without acquisition.  It would take a 4 core 3.6Ghz laptop to make a roving station.  Fortunately, the base station's job is a bit easier.  If the goal is just refining altitude, there may be a way to skip samples to make just enough readings for refining altitude.  The processing requirement has still put us off from software GPS.




Views: 363

Comment by MarcS on April 13, 2011 at 1:04am

I´m not really into that, but what is the hard part in the DGPS systems?

There are commercial ones around since years (Got some at work... Increadible! 1cm in all directions at 10Hz...).

All in a small piece of hardware. With a big price tag...

Nothing seems to come close or in between these and standard GPS units. Why?

Comment by kristian.paul on April 14, 2011 at 7:19am

Nice post, i always wanted to test this 1bit vs 2bit setup. I guess will make sense source 4 bits or more receivers for in-door applications.


Btw what is the compression format are you using? i mean, how many I/Q samples do you ship per byte?


Are you using the cypress usb-like microcontroler as in the USRP?


All this is planed to be open source licensed and published to public somewhere?





You need to be a member of DIY Drones to add comments!

Join DIY Drones


Season Two of the Trust Time Trial (T3) Contest 
A list of all T3 contests is here. The current round, the Drone Delivery Challenge, is here

© 2015   Created by Chris Anderson.

Badges  |  Report an Issue  |  Terms of Service