krys‎ > ‎

kkGPS (for lack of a better name)

kkGPS will be/is a pure (well almost, you still need a front-end and an A/D converter) software GPS receiver.
This means it uses software correlators instead of the power efficient and cheap hardware correlators.
(If anybody has some acquisition hardware for sale (cheap or free) or some sample data please contact me [krys at this domain name])


Right now the software is at the proof-of-concept stage.
This is prototype code, so excuse the mess.
You have been warned.

Current Status

The project has been on hold since the beginning of the year do to lack of free time, caused by my move into a real house, the birth of my son, and my new job. (Mainly the new job, the kids have settled into a routine and go to bed early, but then I work some more).
Email me with any questions, responses may be delayed.
I would really like to see a pure software GPS receiver licensed under GPL developed even if somebody else has to do it, I'll help were I can to make this happen.

I'm moving into my new house next week. To celebrate (my complete lack of time) I have uploaded the first pass integration of kkGPS with GNURadio README and Archive.
Acquiring and tracking real signals is not working properly, my guess is my PLL and DLL loops are to sensitive to noise.
Email me if you have any question, but it may take a couple of days to get a response

I have integrated the GPS signal source and the tracking correlator with GNURadio. I experimented briefly with the DBSRX USRP daughter card (receives 800MHz to 2400MHz) without any luck. This could have something to do with using a spare PC power supply to power the active antenna (I've been packing for move 1 of 2 this weekend, so all of my tools and parts are packed away)

So I have gone back to simulated and recorded data for now. I have found that a correlator setup for one SV will acquire and track any SV. This seems to be because of the cross-correlation of the PRN codes and my changes to the acquisition and tracking algorithms to use inter-symbol phase shifts as one of the lock criteria while lowering the threshold of the signal magnitude criteria.

The Portland State Aerospace Society (PSAS) have donated some resource for an open software/hardware GNSS mailing list and wiki. Join now and talk to people, who unlike me, know what they are doing and have the time to do it.

I received some raw data! The files are about 1.3MiB compressed, so to conserve webserver bandwidth I will email them to anyone who is interested. My threshold algorithm was not happy with the data, but the correlators had no problems. Here is an image from a +-8kHz search (with multi symbol averaging) for PRN #27 around the IF frequency.

The USRP is available!. I've ordered one.
David Bengtson is looking into GPS frontend options, both dedicated and wideband.
I'm looking into removing (or only using for basic debugging) my position calculation algorithms and replacing them GPStk. At the same time I will break up the various correlation, tracking, and framing (bit, word, subframe) algorithms for possible integration with GNURadio.

I want to point out that this project is not dead (yet :), I'm just waiting for affordable hardware to appear (any day now). The most likely candidates are the USRP and SSRP
I have also been playing with with threshold calculation based on the use of a "control" (in the scientific sense) channel that searches/tracks a non-visible or non-existent satellite.

Current Features

  • Simulated Signal
    • 5MS/s signal from six simulated satellites
    • Carrier I.F. is ~1.25MHz
    • Looped transmission of actual frame from real satellites
  • Software Correlator(s)
    • Generic C++
    • SSE1 Intrinsics (functions correctly, but is a work in progress)
  • Signal Tracking
    • Place holder Carrier PLL
    • Place holder Code DLL
    • Fixed Threshold
  • Subframe Decoding
    • Subframe 1,2,3 are fully decoded
  • User 4D position calculation
    • The Least Squares method is used, currently with all satellites in view

Current Performance

 Both the C++ and SSE1 correlator runs at about 4x slower then needed for a realtime 12 channel receiver on my P3 550MHz with PC100 RAM.
On a P4-HT 3.2GHz with PC3200 RAM that I have access too seems to be able to run a ~30 channel receiver in realtime.

Current Tasks

  • "Refactoring"
  • Investigating GPStk
  • Developing fully functional tracking
    • Threshold setup
    • PLL
    • DLL
    • AGC
    • Better handling of temporary signal loss

Release Log

2004-03-09 2:30AM:
    Initial Release 0.0


kkGPS: Version 0.0: Proof-Of-Concept Initial Release
grkkGPS: Version 0.1: Initial Integration with GNURadio

Links of interest

GnuRadio: A GPL software defined radio project
OpenGNSS Mailing List: A mailing list for people working on various types of open source / open hardware GNSS projects
OpenGNSS Wiki: The wiki for the OpenGNSS Mailing List
OpenSourceGPS: A open source GPS project that works with hardware correlators
OpenGPS: Another open source GPS project that works with hardware correlators
GPS Front End Info: David Bengtson's GPS front end information page
GPStk: A (L)GPL GPS software toolkit
ASYNC & GAR2RNX: Software for downloading and processing raw information from Garmin GPS receivers General GPS information from the U.S. Coast Guard U.S. Air Force GPS Support Center
"A Complete IF Software GPS Receiver: A Tutorial about the Details"
"A 12-Channel Real-Time GPS L1 Software Receiver" (Patent Pending)
"A Real-Time GPS Civilian L1/L2 Software Receiver"
"Adaptive PN Code Acquisition Using Instantaneous Power-Scaled Detection Threshold Under Rayleigh Fading and Pulsed Gaussian Noise Jamming"


Krzysztof "I am no web-monkey" Kamieniecki (email to krys at this domain name)

Change Log
2009-11-22 15:30 E?T: Moved to google
2006-06-05 22:00 E?T: status update.
2005-11-13 22:00 E?T: added grkkgps information
2005-09-23 00:30 EST: status update. Added line to openGNSS wiki and mailing list
2005-06-03 01:00 EDT: added "A Real-Time GPS Civilian L1/L2 Software Receiver"
2005-05-31 21:51 EDT: updated David Bengtson website links
2005-03-17 21:30 EST: added update about raw data, including a plot
2005-01-09 00:50 EST: added link to David Bengtson website
2004-12-31 10:30 EST: status update, link cleanup, current tasks update
2004-11-10 22:42 EST: various edits
2004-09-22 21:42 EDT: various edits, added current status
2004-05-31 22:25 EDT: added links for Software GPS papers
2004-03-14 20:00 EST: ~created

free hit counters