GPS/GNSS (1575 MHz)
Every GPS receiver on Earth uses an omnidirectional antenna that sees the whole visible sky at once. That is the right design for navigation — you want as many satellites as possible. But it also means every satellite’s signal competes with every other satellite’s signal, plus noise from the entire sky hemisphere.
Pointing a directional dish at a single GPS satellite changes the equation entirely. You gain 12+ dB on the target signal while rejecting interference from other satellites and ground-based noise sources. This turns a routine navigation signal into a tool for studying individual satellite transmissions, measuring atmospheric propagation effects, and surveying constellation coverage at a level of detail that omnidirectional receivers cannot provide.
This is not a practical navigation receiver. It is a GNSS research instrument.
The signal
Section titled “The signal”GPS L1 transmits at 1575.42 MHz using direct-sequence spread spectrum (DSSS). The civilian C/A code is a 1.023 Mchip/s pseudo-random noise (PRN) sequence that spreads the signal across approximately 2 MHz of bandwidth. Each satellite uses a unique PRN code, allowing the receiver to separate satellites via code correlation even when they share the same frequency.
The signal power at Earth’s surface from a single GPS satellite is approximately -130 dBm — about 20 dB below the thermal noise floor in a 2 MHz bandwidth. Standard GPS receivers recover the signal through correlation gain (the 1023-chip C/A code provides ~30 dB of processing gain when correctly aligned). With a directional dish adding another 12 dBi of antenna gain on top of this, the post-correlation SNR improves significantly.
Other GNSS constellations share the L1 neighborhood:
| System | Frequency | Signal | Notes |
|---|---|---|---|
| GPS L1 | 1575.42 MHz | C/A (BPSK), L1C (BOC) | 31 active satellites |
| Galileo E1 | 1575.42 MHz | OS (CBOC) | Overlaps GPS L1 exactly |
| BeiDou B1C | 1575.42 MHz | Pilot + data (BOC) | Same center frequency |
| GLONASS L1 | 1598.0625-1605.375 MHz | FDMA (0.5625 MHz spacing) | Offset from GPS by ~25 MHz |
| SBAS (WAAS) | 1575.42 MHz | Same as GPS L1 | Geostationary augmentation |
The GPS/Galileo/BeiDou overlap at 1575.42 MHz means a single dish pointing can capture signals from all three constellations simultaneously.
Link budget
Section titled “Link budget”| Parameter | Value | Notes |
|---|---|---|
| Frequency | 1575.42 MHz | GPS L1 |
| Wavelength | 19.0 cm | |
| Dish diameter | 84 cm (major axis) | ~4.4 wavelengths across |
| Estimated dish gain | ~12 dBi | Small dish relative to wavelength |
| Beamwidth (est.) | ~18 degrees | Broad enough to contain satellite motion during dwell |
| GPS satellite EIRP | ~26 dBW (+56 dBm) | Varies by satellite block and position in beam |
| Orbital altitude | 20,200 km | MEO orbit |
| Path loss | ~182 dB | Free-space at 20,200 km |
| Signal at antenna | ~-130 dBm | Before antenna gain |
| Signal after dish gain | ~-118 dBm | 12 dBi improvement over isotropic |
| LNA noise figure | 0.6 dB | Nooelec SAWbird GNSS |
| Noise floor (2 MHz BW) | ~-111 dBm | kTB at ~100 K, 2 MHz |
| Pre-correlation SNR | ~-7 dB | Signal below noise, as expected |
| C/A correlation gain | ~30 dB | 1023-chip code, 1 ms integration |
| Post-correlation SNR | ~+23 dB | Easily detected after despreading |
The dish gain doesn’t help with the despreading (that is a code-domain operation), but it does improve the pre-correlation SNR by 12 dB compared to an omnidirectional antenna. This matters for several reasons: better carrier phase tracking, faster acquisition, and the ability to detect weaker signals that a standard antenna would miss entirely (such as reflected multipath components or signals from satellites at extreme off-boresight angles).
Hardware requirements
Section titled “Hardware requirements”| Component | Recommended | Alternatives |
|---|---|---|
| Feed | RHCP patch antenna for 1575 MHz | RHCP helical (wider bandwidth, covers GLONASS too) |
| LNA | Nooelec SAWbird GNSS (1575 MHz filtered, 0.6 dB NF) | Any filtered GNSS LNA |
| SDR | RTL-SDR V4 (2.56 MHz stable BW covers C/A code) | BladeRF (wider BW captures GLONASS simultaneously) |
| Bandwidth needed | 2.048 MHz minimum (C/A code) | 4+ MHz to include GLONASS L1 |
Proposed procedure
Section titled “Proposed procedure”Single-satellite acquisition
Section titled “Single-satellite acquisition”-
Mount the 1575 MHz feed. An RHCP patch antenna designed for GPS L1, mounted at the dish focal point. GPS is RHCP; using the correct polarization avoids 3 dB mismatch loss.
-
Connect the signal chain. Feed to SAWbird GNSS LNA, LNA via coax to RTL-SDR. Power the LNA via bias tee. Apply a DC block if routing through the dish’s internal coax.
-
Identify a target satellite. Use Gpredict or any GNSS prediction tool to find a GPS satellite currently above 30 degrees elevation at your location. Note its PRN number and AZ/EL position.
-
Point the dish at the satellite. Use the Birdcage TUI or CLI to slew to the target AZ/EL. GPS satellites in MEO orbit move slowly — roughly 0.01 degrees/second as seen from the ground — so the dish can hold a fixed position for several minutes without losing the satellite from the beam.
-
Record IQ samples. Capture 30-60 seconds of raw IQ data at 2.048 Msps or higher, centered on 1575.42 MHz.
-
Process with gnss-sdr. Configure gnss-sdr to search for the specific PRN of the satellite you pointed at. It should acquire and track the signal with higher C/N0 than a standard antenna would produce.
Constellation survey (step-and-dwell)
Section titled “Constellation survey (step-and-dwell)”-
Define a sky grid. Divide the visible sky into grid cells matching the dish beamwidth (~18 degrees). For a hemisphere survey: approximately 10 elevation steps from 18 degrees (firmware minimum) to 90 degrees, with AZ steps that decrease as elevation increases (fewer cells near zenith).
-
At each grid position, record 60 seconds of IQ. The gnss-sdr post-processing will search for all PRN codes in each recording.
-
Build a detection map. For each grid position, record which PRNs were detected and at what C/N0. Compare with the predicted satellite positions from the GNSS almanac.
-
Analyze spatial selectivity. The dish should detect satellites within the beam and reject those outside it. Plotting detected C/N0 vs. angular distance from beam center characterizes the dish’s spatial filtering at L-band.
Software pipeline
Section titled “Software pipeline”| Software | Role |
|---|---|
| gnss-sdr | GPS/Galileo/GLONASS signal acquisition, tracking, and PVT |
| SDR++ | Spectrum monitoring and IQ recording |
| GNU Radio | Custom acquisition flowgraphs |
| RTKLIB | Post-processing of RINEX observables from gnss-sdr |
gnss-sdr is the core tool. It implements a complete GNSS receiver in software: acquisition (finding the satellite signal), tracking (maintaining code and carrier lock), and navigation (computing position/time from the tracked signals). It reads IQ samples from a file or live SDR source and outputs standard RINEX observation files that RTKLIB and other geodetic tools can process.
For the single-satellite experiment, configure gnss-sdr to search only the target PRN — this speeds up acquisition and avoids false locks on satellites outside the beam that leak in through sidelobes.
gnss-sdr configuration
Section titled “gnss-sdr configuration”gnss-sdr uses a configuration file to define the signal source, acquisition parameters, tracking loops, and telemetry processing. A minimal configuration for single-satellite capture with an RTL-SDR:
[GNSS-SDR]GNSS-SDR.internal_fs_sps=2048000
;--- Signal Source ---SignalSource.implementation=Osmosdr_Signal_SourceSignalSource.item_type=gr_complexSignalSource.sampling_frequency=2048000SignalSource.freq=1575420000SignalSource.gain=40SignalSource.rf_gain=40SignalSource.if_gain=40
;--- Acquisition ---Acquisition_1C.implementation=GPS_L1_CA_PCPS_AcquisitionAcquisition_1C.doppler_max=5000Acquisition_1C.doppler_step=250Acquisition_1C.threshold=2.0
;--- Tracking ---Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_TrackingTracking_1C.pll_bw_hz=30.0Tracking_1C.dll_bw_hz=2.0
;--- Telemetry ---TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_DecoderFor file-based processing (recorded IQ), replace the SignalSource block with a File_Signal_Source pointing to the raw capture file.
Expected results
Section titled “Expected results”Single-satellite pointing
Section titled “Single-satellite pointing”- C/N0 improvement of 10-12 dB compared to an omnidirectional patch antenna on the same satellite. A typical GPS patch reports 40-45 dB-Hz for an overhead satellite; the dish should produce 50-57 dB-Hz.
- Sidelobe rejection. Satellites more than ~20 degrees off-boresight should show significantly reduced C/N0 or fail to acquire entirely. This confirms the dish is providing spatial selectivity.
Constellation survey
Section titled “Constellation survey”- A sky map of C/N0 vs. position showing each detected satellite as a blob whose brightness corresponds to received signal strength. Satellites near beam center appear strong; those at the edges of the beam are weaker.
- Atmospheric delay vs. elevation. By pointing at the same satellite at different elevation angles over time (as it traverses the sky), you can measure how C/N0 degrades at low elevations due to tropospheric and ionospheric path effects. This replicates a technique used in professional GNSS atmospheric monitoring.
Timing
Section titled “Timing”gnss-sdr can output pulse-per-second (PPS) and time-of-week data. With the dish pointed at a single satellite and providing 50+ dB-Hz C/N0, the timing solution should be more stable than a standard antenna — fewer satellites but higher SNR on each yields cleaner pseudorange measurements.
Atmospheric propagation measurement
Section titled “Atmospheric propagation measurement”This may be the most scientifically interesting application of the directional GPS setup. By tracking a single satellite as it traverses different elevation angles over several hours, you can measure the elevation-dependent C/N0 degradation curve. This curve encodes:
- Tropospheric delay — the wet and dry components of atmospheric refraction, which increase at low elevation angles (approximately as 1/sin(elevation))
- Ionospheric delay — frequency-dependent group delay from free electrons, also elevation-dependent
- Ground multipath — reflections from the surface near the antenna that cause constructive/destructive interference patterns
Professional GNSS monitoring stations measure these effects routinely using omnidirectional antennas and multiple satellites. The directional dish approach isolates a single satellite, removing the multi-satellite geometry complications and providing a cleaner measurement of the propagation channel along one specific line of sight.
Open questions
Section titled “Open questions”- gnss-sdr with narrow beam. gnss-sdr normally expects to see 4+ satellites simultaneously for a position fix. With the dish pointed at one satellite, it may produce tracking output but fail to compute a navigation solution (not enough geometry). This is fine for our purposes — we want the raw observables, not a position fix — but it may require configuration changes to disable PVT requirements.
- Feed bandwidth. A narrowband 1575 MHz patch won’t cover GLONASS L1 (1598-1606 MHz). A wideband RHCP helical feed could cover both but with lower gain at each frequency. The choice depends on whether GLONASS observation is a priority.
- Multipath experiments. With a directional dish, you could deliberately point slightly off the direct satellite line-of-sight to study multipath reflections from buildings, terrain, or the ground. This is an advanced experiment but could produce interesting data on multipath geometry.
- SBAS detection. WAAS satellites (geostationary, 1575.42 MHz, RHCP) are fixed in the sky and always transmitting. They make excellent first targets — point the dish at a known WAAS satellite position and verify detection before attempting the moving GPS constellation.
- Interference from off-beam satellites. With 8-12 GPS satellites visible at any time and an 18-degree beamwidth, 1-3 satellites may fall within the main beam simultaneously. The code-domain separation (each satellite uses a unique PRN) means they don’t interfere in the conventional sense, but the total received power from unwanted PRNs raises the noise floor slightly. This is the “near-far problem” in CDMA systems — the dish mitigates it by spatially filtering, but doesn’t eliminate it.
- L2/L5 bands. GPS also transmits on L2 (1227.60 MHz) and L5 (1176.45 MHz). These frequencies are lower, meaning higher dish gain (larger effective aperture relative to wavelength). A future experiment could use a wideband feed to capture L1 + L5 simultaneously with the BladeRF’s wide bandwidth.