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.
Right now the software is at the proof-of-concept stage.
This is prototype code, so excuse the mess.
THERE WILL BE MAJOR CHANGES MADE TO THE CODE.
You have been warned.
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.
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
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
The Portland State Aerospace Society (PSAS) have donated some resource for an open software/hardware GNSS mailing list
. 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.
is available!. I've ordered one.
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
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.
- 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
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.
- Investigating GPStk
- Developing fully functional tracking
- Threshold setup
- Better handling of temporary signal loss