jens 51727f9e24 gui: prune stale satellites from sky tab on each NAV-SAT update
Satellites that dropped out of a receiver's NAV-SAT report (set
below horizon, lost signal) were never removed from the sky tab's
store/trail/highlight-timer dicts, only on full receiver removal.
Over a long session this let ghost satellites accumulate without
bound, making table rebuilds and sky-plot rendering progressively
more expensive and the GUI increasingly laggy.
2026-07-17 17:23:57 +02:00
2026-03-29 15:37:18 +02:00

Usage

main.py

python main.py [--project FILE] [--save FILE]
               [--network NAME HOST PORT] ...
               [--serial  NAME DEVICE BAUD] ...
               [--file    PATH] ...
               [--log-dir DIR] [--delay SECS]
Option Default Description
--network NAME HOST PORT Add a TCP/IP source
--serial NAME DEVICE BAUD Add a serial port source
--file PATH Add a log file for replay
--log-dir DIR ./log Directory for recorded frame logs
--delay SECS 1.0 Inter-frame delay for file replay (010 s)
--project FILE Load config from a JSON project file
--save FILE Save current config as a JSON project file

Multiple --network, --serial and --file options can be combined freely.

Examples

# Two network receivers
python main.py --network neo-f9p 192.168.22.93 8721 \
               --network zed-x20p 192.168.22.93 8731

# Save config to project file
python main.py --network neo-f9p 192.168.22.93 8721 --save project.json

# Load from project file
python main.py --project project.json

# Replay a recorded log at 0.5 s per frame
python main.py --file log/2026_05_25_11_05_19_neo-f9p.log --delay 0.5

# Mix live network source with file replay
python main.py --network zed-x20p 192.168.22.93 8731 \
               --file log/2026_05_25_11_05_19_neo-f9p.log

Project file format (JSON)

{
  "log_dir": "./log",
  "delay": 1.0,
  "sources": [
    {"type": "network", "name": "neo-f9p",  "host": "192.168.22.93", "port": 8721},
    {"type": "serial",  "name": "gps1",     "device": "/dev/ttyUSB0", "baudrate": 115200},
    {"type": "file",    "path": "log/2026_05_25_11_05_19_neo-f9p.log"}
  ]
}

NEO-F9P

Data sheet

https://content.u-blox.com/sites/default/files/documents/NEO-F9P-15B_DataSheet_UBX-22021920.pdf?utm_content=UBX-22021920

Integration Manual

https://content.u-blox.com/sites/default/files/documents/NEO-F9P_IntegrationManual_UBX-22028362.pdf

Interface spec

https://content.u-blox.com/sites/default/files/documents/u-blox-F9-HPG-L1L5-1.40_InterfaceDescription_UBX-23006991.pdf?utm_content=UBX-23006991

ZED-20P

Data sheet

https://content.u-blox.com/sites/default/files/documents/ZED-X20P-00B_DataSheet_UBXDOC-963802114-12690.pdf

Integration Manual

https://content.u-blox.com/sites/default/files/documents/ZED-X20P_IntegrationManual_UBXDOC-963802114-12901.pdf?utm_content=UBXDOC-963802114-12901

Interface spec

https://content.u-blox.com/sites/default/files/documents/u-blox-20-HPG-2.00_InterfaceDescription_UBXDOC-304424225-19888.pdf?utm_content=UBXDOC-304424225-19888

Real time Kinematics

ESA Article

https://gssc.esa.int/navipedia/index.php?title=Real_Time_Kinematics

RTCM 3.0

Overview

https://www.geopp.de/pdf/gppigs06_rtcm_f.pdf

Cheat sheet

https://www.use-snip.com/kb/knowledge-base/an-rtcm-message-cheat-sheet/

S
Description
NMEA / UBX Multi Source and Multi Medium Client
Readme
368 KiB
Languages
Python 100%