Repository navigation
Signal analyzer GPS L1
The GPS L1 analyzer receives the civilian GPS L1 C/A signal at 1575.420 MHz from a live I/Q stream or a supported I/Q recording. It searches for individual satellites, decodes their legacy navigation messages and, when enough usable observations are available, calculates a position and GPS time.
This mode currently supports GPS C/A codes PRN 1–32. It does not decode other GNSS constellations such as Galileo, GLONASS or BeiDou, or other GPS signal types.
- Open the I/Q analyzer from a live capture or an I/Q replay and select GPS L1 in the signal-analyzer list. Open it with ANALYZE.
- Ensure the I/Q channel covers 1575.420 MHz and at least 1.05 MHz on either side. The GPS analyzer requires at least 2.2 MS/s; its acquisition window also has an upper sample-rate limit. For example, a channel centered on 1575.420 MHz at 3 MS/s fits these limits. The analyzer does not retune the receiver automatically.
- Use a GPS-capable antenna with a clear view of the sky and appropriate gain. Avoid clipped samples. The analyzer needs a continuous, sufficiently strong signal to acquire satellites and collect navigation data; acquisition alone does not guarantee a position fix.
At least four suitable, healthy satellites with decoded, consistent ephemerides and usable timing are needed for the implemented 3D position solution. It may take time to collect the required navigation data. Weak signals, obstructions, interference, multipath or interruptions in the I/Q stream can delay or prevent a fix.
The upper panel describes the current channel and, when available, the calculated solution:
- Fix – current position-solver status. Four satellites give a solution without redundant measurements; additional usable satellites provide redundancy.
- Position – latitude and longitude in decimal degrees.
- Altitude – height above the WGS84 reference ellipsoid, in metres. It is not height above mean sea level.
- UTC – Coordinated Universal Time, including date, when the position and the necessary GPS-to-UTC parameters have been decoded. It can remain unavailable even after a fix.
- GPS time – GPS system date and time after a usable fix. This is not UTC: GPS time is continuous and does not incorporate UTC leap seconds.
- GPS TOW – GPS time of week, the receiver time in seconds within the GPS week.
- Locked / used – number of PRNs with a short-window prompt lock and number used in the current position solution, respectively. A prompt lock is not itself proof that navigation data has been decoded.
- DOP (P / H / V) – dilution of precision for the position, horizontal and vertical components (PDOP, HDOP, VDOP). These describe the effect of satellite geometry; lower values generally indicate better geometry, not a guaranteed error in metres.
- Range RMS – root-mean-square residual of the fitted pseudoranges, in metres. It is shown only when at least five satellites are used; with four there is no measurement redundancy. A small residual does not guarantee an accurate position.
- Channel – acquisition and tracking status or a message explaining why the current I/Q channel cannot be analyzed.
- IQ resets – number of processing-queue overflow resets. An increasing count indicates that processing could not keep up and the stream had to be reacquired.
- L1 / center – GPS L1 reference frequency and actual I/Q channel center, in MHz.
- Rate – I/Q sample rate in MS/s (million complex samples per second).
- C/A interval – number of samples in the 1 ms GPS C/A code interval.
- Doppler search – initial frequency-offset search range of ±5 kHz in 500 Hz steps. A tracked estimate can be refined beyond this coarse step.
The input level and general RMS dBFS/peak indicators describe the combined I/Q signal, not an individual satellite. dBFS is relative to digital full scale, not calibrated RF power.
GPS time and UTC are deliberately displayed separately. UTC conversion requires the broadcast UTC parameters, including leap-second information, in LNAV subframe 4, page 18. That page is transmitted much less often than the main ephemeris data and may be missed under weak reception, so UTC can take considerably longer than the position or remain unavailable. A pending leap-second change is not converted by the current implementation.
The legacy message contains a 10-bit GPS week number, which repeats every 1024 weeks. The analyzer uses the computer's approximate date to select the nearest week era; the time of week itself comes from the GPS solution. An incorrect computer date, or an old replay far from the computer's date, can therefore produce a date in the wrong era.
Each row describes a GPS code currently visible to the acquisition stage. When no PRN is acquired, the strongest candidates are shown. As reception changes, rows can appear or disappear.
| Column | Meaning |
|---|---|
| PRN |
Pseudorandom noise code identifying the GPS signal, displayed as G01 to G32. |
| C/A state | Candidate is a correlation candidate; C/A acquired crossed the acquisition threshold; Prompt tracked also passed the short-window tracking check. C/A means coarse/acquisition, the civilian spreading code. |
| Doppler | Estimated carrier-frequency offset in Hz. It can include both satellite Doppler shift and receiver frequency error. |
| Code phase | Estimated position of the C/A code in its 1 ms cycle, in chips (spreading-code elements). |
| C/N0 est. | Estimated carrier-to-noise-density ratio in dB-Hz, derived from a 1 ms acquisition. It is an approximate indicator, not calibrated per-satellite RSSI or RF power. |
| Prompt lock | Short-window prompt-correlation phase-stability indicator, shown as a percentage. It is not a probability of an accurate position. |
| NAV | Navigation tracking state: Not tracked, Timing, Collecting, or LNAV SF followed by the last validated subframe number. A subframe is displayed as decoded only after its parity checks pass. |
| Health | Broadcast satellite health from subframe 1. Healthy means zero health bits; a nonzero hexadecimal code indicates a reported issue. -- means not yet known. |
| Ephemeris | Progress assembling the satellite orbit and clock data from subframes 1–3: n/3 SF, Complete, IOD mismatch, or Time mismatch. Complete data still needs to be usable for the position solution. |
| Used | Yes if this PRN is used in the current accepted position solution; otherwise No. |
Up to six PRNs can be continuously tracked for LNAV (legacy navigation message) decoding at once. Hovering over Health or a completed Ephemeris provides additional broadcast details, including IODE/IODC (issue-of-data identifiers for ephemeris and clock), Toe/Toc (orbit and clock reference times), and URA (user range accuracy index). An ephemeris contains satellite orbit and clock parameters; its subframes must be recent and mutually consistent.
Click a row to select it. Selection is maintained across refreshes while that PRN remains in the table. Click column headings to sort by multiple keys: coloured headings, arrows and priority numbers indicate the active order. Right-click a sorted heading to remove that key, or an unsorted heading to clear the sort. Column order, widths and sort settings are saved in hackrf-iq-analyzer.ini.
The position is a single-frequency code-based solution. It does not use an atmospheric correction model or RAIM (receiver autonomous integrity monitoring), and it is not a substitute for a calibrated or safety-certified navigation receiver. Multipath, interference, receiver clock/frequency errors and poor satellite geometry can affect the result. The analyzer does not implement a three-satellite 2D fix, differential GPS or RTK.
-- or a waiting message means a value has not yet been decoded or a suitable solution is not currently available. A valid-looking candidate or ephemeris alone does not guarantee a valid position.