RTL-SDR for Satellite GPS


The GPS Global Positioning System first came on line in 1993 with a constellation of 24 satellites (Ref.1). GPS receivers are ubiquitous now, but it is instructive to see if we can examine the actual GPS signal. I will use an active GPS patch antenna with an RTL-SDR V3 receiver. GPS satellites follow a MEO Medium Earth Orbit at 20,200KM above the Earth’s surface. The L1 carrier is located at 1575.42MHz. The carrier is BPSK modulated by a C/A PN code at 1.023Mbps. Signal strength is designed to be -160dBW (-130dBm) minimum at the earth’s surface (Ref.2). Figure 1 shows the GPS satellite signal block diagram. Lower speed NAV data at 50bps is mod-2 added with the C/A code at 1.023Mbps and BPSK modulates the L1 carrier. Ref.4 is an excellent overview of GPS signals and covers all L1 – L5 carriers.

Fig.1 GPS Signal Block Diagram (Ref.2)

Shannon’s Law outlines the maximum channel capacity based on available bandwidth W & S/N power ratio (Ref.3):

C=W*log2[1 + S/N]=W*1.44loge[1 + S/N] = W*1.44*S/N for S/N<<1

Thermal noise at L band can be calculated:

Pn=Fa + 10*log10(BW_Hz) – 174dBm = Fa -111dBm

This means that we can operate at negative S/N ratios if we make the bandwidth/data rate large enough. For the GPS C/A and NAV data rate this gives an SNR of -48dB! GPS uses so called Direct Sequence Spread Spectrum where a lower speed data signal is mod-2 added to a faster spreading code which in turn modulates a carrier. The spreading codes are chosen in such a way as to have minimal cross correlation so that multiple signals can be distinguished from one anther. This allows all 24 GPS satellites to transmit on the same frequency, each with their own particular C/A spreading code . This is the same principle used in CDMA cellular telephony.

Signal Simulation

To study the GPS signal, let’s first look at BPSK modulation, then examine the noise & auto correlation properties. Figure 2 shows a Scicos simulation of BPSK modulation as used in GPS. For simplicity, the carrier is chosen at 1KHz and the pseudo random data rate at 100bps. The output spectrum is a sinx/x wave shape with nulls at the carrier +/- the data rate. A BPF filter is used to remove all lobes except the main lobe around the carrier. The extension to the GPS signal would be a main lobe at 1575.42MHz with nulls +/- 1.023MHz for an RF bandwidth W=2.046MHz.

Fig.2 Scicos Simulation of BPSK Fc=1KHz Rdata=100bps
Fig.3 Scope Showing 180deg Phase Shift on Every PN Data Transition
Fig.4 BPSK Output Spectrum Showing Nulls at Fc +/- nxBitRate
Fig.5 BPSK Output Spectrum Showing Main Lobe with Nulls at Fc +/- Bit Rate

Figure 6 shows a model of a CDMA telephone channel using DSSS Direct Sequence Spread Spectrum modified to illustrate GPS. Low speed random data (NAV data) is multiplied by a Gold code spreading signal. This in turn BPSK modulates a carrier. A massive amount of noise is added to the modulated signal. The receiver down converts the receive signal and low pass filters the baseband to remove the USB component. A de-spreading code equal to the transmit spreading code multiplies the recovered signal and this is integrated and correlated to recover the original data. Despite the noise the signal is perfectly recovered. The YouTube video demonstrates the process.

Fig.6 Model of Direct Sequence Spread Spectrum Channel + Noise
Fig.7 DSSS Tx
Fig.8 DSSS Rx
Fig.9 Noise vs. GPS Signal Waveforms
Fig.10 Correlator Output vs. Original Information Signal
Fig.11 Received Data Output Delayed vs. Input Data

Signal Reception

Fig.12 GPS Patch Antenna (3-5VDC) & RTL_V1 Whip Antenna
Fig.13 RTL-SDR V3 BiasT Setup
Fig.14 L1 Noise Level from Signal Hound Spectrum Analyzer
Fig.15 RTL-SDR V3 BiasTee Activation = 4.7VDC

Figure 12 shows my antenna receive setup and Figure 13 shows the receiver setup. I first used the small whip antenna supplied with the RTL_V1. This whip has an mcx connector, so I inserted an mcx/sma adapter into the RTL_V3 receiver. Prior to the test, I scanned the L1 frequency using the whip antenna and a Signal Hound spectrum analyzer. The ambient noise level was -110dBm. I did this because there is no absolute calibration on the receiver SDR# software. Before scanning the frequencies, I checked the V3 calibration using Toronto Marine weather on 162.4MHz. The calibration factor was between 0 and -1ppm.

So with the whip antenna I scanned all GPS frequencies from L1-L5 and not surprisingly I didn’t see any signal lobes since -130dBm is way below the noise level of -110dBm. I then turned on the RTL_V3 bias voltage (Fig.15) using the batch file (Ref.5) and switched to the GPS patch antenna. It has a gain of 3dBi, and the LNA has a gain of 28dB. The RG-174, however, has a massive of loss of at least 10dB. Even with the patch antenna, GPS signals were still buried beneath the noise as can be seen in the YouTube video. The noise level increased with the added gain.

GPS Decoding

Fig.16 GNSS/RTK Decoding GPS

Several methods can be used at this point to decode the GPS signals. Reference 6 describes using two programs GNSS & RTK (Fig.16). I found I had to check off only GPS and tweak a bit with the ppm correction on GNSS to get RTK to sink up.

Fig.17 YouTube Video RTL-SDR for GPS

Please send your comments, questions and suggestions to:

YouTube Channel
YouTube Channel


#1. – “Global Positioning System”

#2. “GPS Signal Specification”

#3. – “Spread Spectrum Systems”, R.C. Dixon, J.Wiley 1976, ISBN 0-471-21629-1

#4. – “Understanding GPS Signals & Codes”, Rohde & Schwarz

#5. – “RTL-SDR V3 User Guide”

#6. – “RTL-SDR GPS Decoding Tutorial”

#7. – “RTL-SDR Front End Simulation”

#8. “RTL-SDR Antennas & Connectors”,

#9. -“RTL-SDR for VHF Air & Marine Bands”,

By Jeremy Clark

Jeremy Clark is a Senior Telecommunications Engineer and Advanced Amateur Radio Operator VE3PKC. He is the author of E-Books on Telecommunications, Navigation & Electronics.