PpRx Display
The PpRx Display provides useful diagnostic information while the software is running. It can be viewed in two ways, depending on how the user configures and runs PpRx:
- When running PpRx from the GUI, the PpRx Display can be viewed by selecting
Tools→PpRx Display. - When running PpRx from the CLI, the PpRx Display will be printed to
stdoutif the user passes the--verboseoption.
When --verbose is not passed, pprx automatically writes a display.log file in the working directory. This file contains the same display content in plain text (no ANSI color codes), updated at each display refresh interval. It is useful for reviewing receiver behavior after the fact without re-running pprx.
A typical display looks as follows (with IMU connected):
――――――――――――― GRID: General Radionavigation Interfusion Device ――――――――――――
RRT: 0 weeks 222.2 seconds Build ID: 4917
ORT: 1490 weeks 146234.0 seconds
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
CH TXID Doppler BCP PR C/N₀ Az El CS
(Hz) (cycles) (meters) (dB-Hz) (deg) (deg)
―――――――――――――――――――――――――――― GPS_L1_CA_PRIMARY ――――――――――――――――――――――――――――
1 5 -3700.2 12948972.2 24923426.7 40.0 41.4 7.3 7
2 14 -2283.5 12629722.8 21977305.3 49.3 110.9 41.4 7
3 16 3269.5 11395962.4 22297488.0 48.9 191.7 34.2 7
4 20 1337.7 11818247.0 22173947.0 49.4 298.4 36.6 7
5 22 -3804.2 12976976.9 25178762.7 38.7 164.5 3.9 7
6 29 1506.3 11785134.9 24108553.8 44.2 85.7 16.4 7
7 30 -2874.0 12758476.0 22460802.6 48.2 49.2 30.5 7
8 31 -330.1 12195832.6 20504836.0 54.5 347.7 76.0 7
9 32 263.7 12057205.4 21387833.5 52.9 274.0 54.2 7
10 -- --------- ------------- ----------- ---- ----- ---- -
―――――――――――――――――――――――――――― GPS_L2_CL_PRIMARY ――――――――――――――――――――――――――――
1 29 1173.8 -219300.8 24108560.8 40.3 85.7 16.4 6
2 31 -257.3 42503.2 20504848.1 54.4 347.7 76.0 6
3 -- --------- ------------- ----------- ---- ----- ---- -
―――――――――――――――――――――――――――― Standard Solution ――――――――――――――――――――――――――――
PX: 1101966.84 PY: -4583482.27 PZ: 4282236.05 δtR: 12584.29
VX: 0.00 VY: 0.00 VZ: 0.00 δtRdot: 8.16
Hσ: 0.81 Vσ: 1.22 εν: 0.36
――――――――――――――――――――――――――――――― IMU Data ―――――――――――――――――――――――――――――――――
AX: 0.43 AY: 5.40 AZ: 8.18
ωBX: -0.28 ωBY: -0.13 ωBZ: 0.08
RRT: 79.992 Temp: 37.0
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
The IMU Data section appears when PpRx is receiving data from --imu-file /dev/radiolion1. It is absent when no IMU source is configured.
With the following abbreviations:
RRT ------- Raw Receiver Time
ORT ------- Offset Receiver Time
CH -------- Channel
TXID ------ Transmitter Identifier
BCP ------- Beat Carrier Phase
PR -------- Pseudorange
C/N₀ ------ Carrier-to-Noise Ratio
Az -------- Azimuth angle toward transmitter
El -------- Elevation angle toward transmitter
CS -------- Channel status
PX -------- Position X coordinate in ECEF (meters)
PY -------- Position Y coordinate in ECEF (meters)
PZ -------- Position Z coordinate in ECEF (meters)
δtR ------- Offset of ORT with respect to true GPS time, in meters equivalent
VX -------- Velocity X coordinate in ECEF (meters/sec)
VY -------- Velocity Y coordinate in ECEF (meters/sec)
VZ -------- Velocity Z coordinate in ECEF (meters/sec)
δtRdot ---- Offset rate of ORT with respect to true GPS time, in meters/sec
equivalent
Hσ -------- Horizontal error standard deviation (meters)
Vσ -------- Vertical error standard deviation (meters)
εν -------- Normalized innovation squared. For a properly-tuned receiver, this
quantity's mean should be near unity.
AX -------- IMU accelerometer X-axis (m/s²)
AY -------- IMU accelerometer Y-axis (m/s²)
AZ -------- IMU accelerometer Z-axis (m/s²)
ωBX ------- IMU gyroscope X-axis (rad/s)
ωBY ------- IMU gyroscope Y-axis (rad/s)
ωBZ ------- IMU gyroscope Z-axis (rad/s)
Temp ------ IMU temperature (°C)
Channel Status (CS) indicator decorations:
s --- spoofing detected
* --- half cycle phase offset possible
c --- data bit container complete (wipeoff will be highly accurate)
- --- phase error detected
e --- no ephemeris valid for navigation is yet available
Transmitter Identifier (TXID) decorations:
? --- Health status unknown
u --- Unhealthy
Channel coloring:
yellow --- steady-state conditions
gray ----- channel's DLL has not yet settled into its steady-state tracking regime
Color cues are only visible in environments that preserve the formatted display output. Plain logs or terminals without color support may not show these distinctions.
Interpreting C/N₀
C/N₀ (carrier-to-noise density ratio) is the primary signal quality indicator. Higher values mean cleaner signal and better ranging accuracy.
| C/N₀ (dB-Hz) | Interpretation |
|---|---|
| ≥ 45 | Excellent — strong, clean signal. Typical for satellites at moderate to high elevation in open sky. |
| 40–44 | Good — healthy tracking. Expected for most satellites in a clear environment. |
| 35–39 | Marginal — tracking but reduced accuracy. May be affected by low elevation, obstructions, or mild interference. |
| < 35 | Poor — signals may drop out, contribute noise to the solution, or fail strict selection. |
Low elevation satellites (El < ~10°) routinely fall into the 35–40 dB-Hz range due to the longer atmospheric path and are normal. A satellite at high elevation with C/N₀ below 35 dB-Hz suggests RF issues (obstruction, interference, or antenna problem).
Interpreting Channel Status (CS)
The CS field shows a numeric tracking state followed by optional letter decorations. The number represents how many tracking-loop conditions have been met:
| CS value | Meaning |
|---|---|
7 | Fully locked — DLL settled, data decoded, eligible for navigation solution. This is the steady-state value for a healthy channel. |
6 | Tracking but data bit container not yet complete (c not yet set). Common on secondary frequency signals shortly after lock. |
4 | DLL transitioning to steady state. Channel is gray; not yet contributing to navigation solution. Typical shortly after initial acquisition. |
3 | Very early tracking — fewer conditions met than 4. Seen immediately after acquisition before the DLL begins settling. |
- | Channel slot empty (no satellite assigned). |
Letter decorations appear appended to the number (e.g., 4*, 7e):
e— No valid ephemeris for this satellite yet. The channel tracks but cannot participate in the navigation solution until ephemeris is received or imported. Using--import-ephemat startup prevents this delay.*— Half-cycle phase offset is possible. The receiver has not yet resolved the half-cycle ambiguity for this signal.c— Data bit container complete. The receiver has collected sufficient navigation message data for accurate carrier phase wipeoff.-— Phase error detected.s— Spoofing detected.
At startup, channels typically begin at CS 4* (transient, health unknown), progress to 4e once health is confirmed but before ephemeris arrives, and reach 7 once fully locked with valid ephemeris.
Interpreting the Standard Solution
The solution section appears once PpRx has enough satellites and ephemeris to compute a navigation fix.
- PX/PY/PZ — ECEF position in meters. To convert to latitude/longitude/altitude, use a standard ECEF-to-LLA formula or a tool like
binflate. - Hσ / Vσ — Estimated horizontal and vertical positioning error standard deviations in meters. Values below ~1 m horizontal are typical in open-sky conditions.
- εν — Normalized innovation squared. A well-tuned receiver produces a mean value near 1.0. Consistently high values (>3–5) indicate measurement-model inconsistency (multipath, interference, or misconfigured noise parameters).
- δtR — Clock offset in meters equivalent (~1 meter ≈ 3.3 ns). Large values are normal and reflect oscillator offset from GPS time; what matters is stability over time.
- ORT showing
9999 weeks— The receiver has not yet solved for time. This disappears once a navigation solution is achieved.