I checked today how the gnss-sdr project (www.gnss-sdr.org) is working. I’m interested in algorithms used for the L1C/A and this project sounds just the right one to start with. This project aims at providing an open source implementation for GPS/Galileo GNSS (Global Navigation Satellite System). It is provided under GNU GPL V3.0 license and it is mainly targeted for research communities.
The gnss-sdr can use data samples from a file or can use directly USRP and gnuradio for realtime data input. Also it can use the cheap RTL2832U based DVB-T dongle. I tried the gnss-sdr with USRP N210 and the aim was to obtain a position update corresponding to my location.
The HW:
The GPS signal is quite weak and for that reason I used an active GPS antenna and a Bias-T that allows one to inject the necessary DC voltage to the GPS antenna. This is necessary when using the WBX daughterboard or any other daughterboard as long as it does not provide directly the required DC voltage.
The antenna has a magnet inside and has 27dB gain when powered at 3-5V DC.
I tested also the DBSRX2 board from Ettus which is the only one daughterboard having a bias tee onboard. One need to do strap J101 jumper in order to provide 3.3V to the antenna connected directly to the board.
Showed below is the USRP N210 with WBX daughterboard mounted:
The SW:
I like the software that runs without much tweaking and this was the case after I figured out the HW components. Building instructions are provided on the gnss-sdr.org site.
svn co http://svn.code.sf.net/p/gnss-sdr/code/trunk gnss-sdr cd gnss-sdr bjam
One need to have gnuradio and all dependencies installed on your computer in order to have a successful build (dependencies are listed on the gnss-sdr site). In the conf directory one will find several config files and I used gnss-sdr.cong almost unchanged. The executable is installed into install directory and one can use it from there.
Results:
cd gnss-sdr/install
./gnss-sdr
Obtaining a fix requires getting ephemeris from at least 4 GPS satellites and for that a good SNR is required. I observed that sometimes gnss-sdr is not able to obtain a fix even after a long time. The necessary C/N0 seems to be above 40db-Hz in order to obtain an ephemeris from a satellite. Below is a screenshot showing the PRNs 23, 13, 32, 1, 17 and a fix obtained after 64seconds.
Note: The gnss-sdr software requires a lot of processing power so that is why I needed to run it on an i7 2900K machine.
Conclusion:
With little effort someone interested in adding new algorithms for the GNSS can start with gnss-sdr project and advance the current state of the art in this area. Of course this is not a project that can be directly transformed into a product as long as paying at least 2k USD for the HW makes it worthless when an off the shef GPS module is $10. However, for researchers it is a great opportunity in having a framework where new ideas can be implemented and focus could be maintained on a specific area.