Maritime trust
Can the bridge trust this fix?
Open a kshana receiver-trust run for a vessel. Kshana scores every position fix from 0 to 100 from what the receiver already puts on the bus, and says which checks reduced it. Files you open here are read in this page and never uploaded.
Advisory software. Kshana is not type-approved navigation equipment (IEC 61108, IEC 61162) and has not been assessed against any performance standard. The score and the gate are aids to the navigator's judgement. The operator stays responsible for the safe navigation of the vessel and for any decision to rely on, or stop relying on, a fix. A fix with no alarm is not thereby a good fix.
Open a run
Pick a result JSON (session.result.json) or the live JSON lines (--json trust.jsonl). A stream carries no position: add the NMEA log it came from to draw the track. A truth file (t_s,true_lat_deg,true_lon_deg) exists only for synthetic data and adds the true track.
Nothing open yet.
Score an NMEA log here
Run the engine in this browser on a vessel's NMEA 0183 log and see the result in the view below. The log is read in this page and never uploaded. It must be an excerpt of at most 2 MiB (about 20,000 epochs) and must hold the five-minute calibration window. The settings are the vessel's limits and the score's weights, as in a session file.
Session settings (TOML)
Starts from the demo's settings: edit the vessel's speed, acceleration and turn-rate limits to match yours. A settings file for your own vessel can be pasted here.
Jammertest scorecard
Open the scorecard kshana jammertest score writes: a receiver-trust run scored against the scheduled slots of a published test plan, per test (detected, late, missed, not evaluable) with latency and recovery, and the false alarms outside the slots. The slots are the plan's, not recorded on-air times, so every figure is MODELLED. The file is read here and never uploaded.
No scorecard open.
Generic receiver-trust run (not a vessel)
For a fixed or unspecified receiver, kshana receiver-trust checks a GNSS log against its own calibration window and says when it stopped looking like itself. It gives states and alarms, not the 0 to 100 vessel score. Run the illustrative example (a made-up log with a jammer from 120 s to 240 s) or your own NMEA log under the same settings. The log is read here and never uploaded.
Advisory software. Not type-approved navigation equipment. An alarm is an observation about the log, not a finding about the cause, and no alarm is not a guarantee that a fix is good.
The format is guessed from the file name; change it here when it is wrong, then assess again. NovAtel OEM7, RTCM 3 and Septentrio SBF are binary formats; they are sent to the engine as they are, in this browser.
IMU file (optional): a second sensor for the heading
An IMU log on the receiver log's clock fills the heading the heading-versus-course monitor reads wherever the receiver log carries none. Only a vessel session uses it.
No IMU file.
Session settings (TOML, the log is supplied inline)
Receiver-reported track
Sky at the cursor
The satellites the log's own GSV lists. A filled marker has a signal strength; a hollow one is listed with none; a shaded sector is where the log lists satellites and hears none of them (a blocked sky and a jammed signal look the same here). Nominal constellation, not an ephemeris for the log's date.
Score over time
Score 0 to 100. Dashed lines are the band edges; the strips underneath are the band and the gate. Drag or click to move the time cursor; the arrow keys step it.
Monitors
Reasons at the cursor
Points each check took off this epoch, largest first. Click a check to mark where it was above its onset.
Gate
Latest $PKSHT
Geometry at the cursor
The satellite geometry, always shown: its label (good, fair or poor) and the DOPs. A masked sky (a hull, a quay, a fjord wall) is natural degradation, told apart from attack-like inconsistency. The score takes points for geometry only when it is poor, at most 15, and never below the degraded band.
The receiver's own flag
What the receiver itself says about spoofing and jamming (u-blox UBX-NAV-STATUS and UBX-SEC-SIG), set beside Kshana's monitors. The codes are the receiver's; neither detector is ground truth, and agreement is not validation. The flag changes no score.
Over the run
What the score used
Read from the run, read-only.
What this view does and does not show
- The demo is synthetic text: a made-up NMEA log of a ferry on an illustrative Tallinn to Helsinki route, with a made-up position drag-off partway through. It models no radio signal and is not a measurement or a chart.
- In the demo the receiver reports a valid fix throughout (GGA quality 1, RMC status A). The trust score is what falls. The gap between the reported and the true track is the point of the view.
- NMEA-only checks cannot see a spoofer that reproduces the whole constellation with a self-consistent position, velocity, heading, power and clock, nor a replay of recorded real signals. A fix with no alarm is not thereby a good fix.
- Geometry (runs from engine 0.36): a deduction classed as geometry is a statement about the sky the log reports, not a finding that no attack occurred. A spoofer can fake a poor sky; a stated HDOP the reported sky does not explain is therefore classed as inconsistency, never as geometry. "Geometry unknown" means the log has no GSV or GSA; it is not a good sky.
- Nothing on this page is a measure of how the checks perform on real interference. The score mapping and every weight are fixed before a log is scored, with no learning and nothing fitted to events.