Releases: semuconsulting/PyGPSClient
v1.5.23
What's Changed
- Rc 1.5.23 by @semuadmin in #230
FIXES:
- Fix PUBX003 & NAV-SVINFO file input parsing error #229
ENHANCEMENTS:
- Move Configuration Command Load/Save/Record facility from UBX Configuration Panel to separate dialog, selectable from Options menu. Can now be used to record and replay UBX, NMEA and TTY configuration commands.
- Reduce minimum File Delay spinbox setting to 2 ms (was previously 20 ms).
Full Changelog: v1.5.22...v1.5.23
v1.5.22
What's Changed
- RC 1.5.22 by @semuadmin in #228
FIXES:
- Fix KeyError in UBX Legacy Dynamic Config Panel #227
ENHANCEMENTS:
- Make maximum individual data log file size (in bytes) manually configurable via
logsize_nsetting in json configuration file. Default is 10 MB. - Tolerate unrecognised configuration settings in json file with warning "Consider re-saving" (previously json file would have been rejected). Unrecognised settings will be logged as INFO messages (--verbosity 2).
- Internal enhancements to thread handling to improve dialog response at high transaction rates.
Full Changelog: v1.5.21...v1.5.22
v1.5.21
What's Changed
- fix datalog issue Fixes #224 by @semuadmin in #225
- Fix issue with datalogging
- Fix issue with typo in older chartsettings_d configuration settings causing error on startup.
Fixes #224
Full Changelog: v1.5.20...v1.5.21
v1.5.20
What's Changed
- restore manifest by @semuadmin in #223
- Restore missing manifest file.
Full Changelog: v1.5.19...v1.5.20
v1.5.19
What's Changed
- Release candidate 1.5.19 by @semuadmin in #222
FIXES:
- Fix typo in initial chart configuration settings, which could cause a
TypeErroron startup if no json config file exists.
ENHANCEMENTS:
- Add 'File Delay' setting to control delay between input file reads - effectively a 'throttle' for file input. Default (previously fixed) is 20 milliseconds.
- Improved exception handling in several panels.
- Internal streamlining and rationalisation of compass and graph canvas draw routines to improve GUI look and consistency.
- Add Control-K "kill switch" key binding to immediately disconnect and terminate all running threads.
Full Changelog: v1.5.18...v1.5.19
v1.5.18
What's Changed
- Rc 1.5.18 by @semuadmin in #220
ENHANCEMENTS:
-
Add TTY Config button to main Settings Panel and remove SPARTN Config button (SPARTN Config can still be accessed via Menu..Options..SPARTN Configuration but is now deprecated). TTY Config uses traditional TTY (ASCII) commands to configure devices such as the Septentrio Mosaic X5.
-
UBX, NMEA and TTY user-defined preset configuration settings
"ubxpresets_l","nmeapresets_l"and"ttypresets_l"are now pre-populated with an initial set of commands on startup. Once saved to a *.json configuration file, these initial commands can be removed, amended or supplemented in accordance with the user's preferences.To reinstate the initial set of user-defined presets at a later date, insert the item
"INIT_PRESETS"at the top of the"ubxpresets_l"."nmeapresets_l"or"ttypresets_l"configuration setting.In the case of UBX, these initial commands replace the existing 24 'hard-coded' UBX commands (some of which are now out of date). NOTE the initial UBX
CFG-VALSETcommands supplied all take effect in the volatile RAM memory layer - to persist these configurations, select 'Save Configuration to BBR' (or other non-volatile memory). -
Allow self-sign certification for TLS (HTTPS) connections (requires
pygnssutils>=1.1.19) - previously these would have been rejected with an SSL error. Self-sign certificate/key location can be set via environment variablePYGNSSUTILS_PEMPATH; default is$HOME/pygnssutils.pem. A self-signed pem file suitable for test and demonstration purposes can be created interactively thus:openssl req -x509 -newkey rsa:4096 -keyout pygnssutils.pem -out pygnssutils.pem -sha256 -days 3650 -nodes
-
Update list of 'recognised' GNSS receiver serial port designators to include
IOUSBHostDevice(Sparkfun ZED-X20P breakout) andUSB Dual_Serial(Sparkfun Flex Breakout).
FIXES:
- Fix "SQLError Database not open" issue on initialisation.
- Fix issue where TTY Console would not refresh immediately if Echo was enabled.
- Fix issue where ValueError (unknown protocol) from GNSSReader would cause streaming to terminate (requires
pygnssutils>=1.1.20). - Fix issue with some ZED-X20P configuration commands not taking effect with firmware HPG 2.02.
- Fixed issue which prevented some warning messages being shown during initialisation.
Full Changelog: v1.5.17...v1.5.18
v1.5.17
What's Changed
- RC 1.5.17 by @semuadmin in #219
- As of October 2025, u-blox have discontinued their MQTT SPARTN service (having previously discontinued their L-Band SPARTN service earlier in the year) so SPARTN Client functionality is now effectively redundant and has been disabled by default in PyGPSClient in this release. It may be removed altogether in a subsequent release. It can be re-enabled by manually editing the
lband_enabled_bconfiguration setting. - Add provisional support for Quectel QGC binary message protocol (requires pyqgc>=0.1.2). Currently only Quectel LG290P / LG580P / LG680P RAW and LU600 IMU QGC message types are implemented, but this may be enhanced in future releases (contributions welcome).
- Utilise
pygnssutils.GNSSReaderclass to allow seamless selection of streamed protocols- supports NMEA, RTCM3, UBX (u-blox), SBF (Septentrio), QGC (Quectel), TTY (ASCII) - UBX and SBF are no longer mutually exclusive. - Streamline IMU widget; add additional NMEA message sources.
- Various minor enhancements to GUI performance.
- Active support for Python 3.9 dropped, 3.14 added (3.9 EOL as at 31 October 2025).
Full Changelog: v1.5.16...v1.5.17
v1.5.16
What's Changed
- fix About Check For Updates homebrew check by @semuadmin in #218
-
"Check for Updates" function in Menu..About panel updated to cater for potential critical segmentation errors caused by some Homebrew Python installations when executing shell subprocesses.
NB: if the user has already installed PyGPSClient==1.5.15, it may be necessary to install the update to 1.5.16 via the command line rather than via the Menu..About..Check for Updates function. Subsequent updates will work as expected.
Fixes # Issue with spurious "Function unavailable under Homebrew" message on About..Update function.
Full Changelog: v1.5.15...v1.5.16
v1.5.15
What's Changed
- Rc 1.5.15 by @semuadmin in #215
ENHANCEMENTS:
- Add support for Quectel LC29H base station configuration in NTRIP Caster mode.
- Enhance support for Quectel PAIR commands in NMEA configuration panel.
- Minor refinements to UI on lower resolution screens.
FIXES:
- Fix GPX add trackpoint exception handling - Fixes #213
- Send NTRIP (RTCM) and SPARTN data via socket connection as well as serial connection - Addresses #214.
Full Changelog: v1.5.14...v1.5.15
v1.5.14
What's Changed
- Add spatial database recording facility by @semuadmin in #209
FIXES:
- Fix Chart update issue #210
- Fix Exit button not invoking on_exit() clean up routines (causing any in-progress GPX track recording to be unterminated).
- Fix
IndexErrorwhen loading GPX tracks with no<time></time>elements - a synthetic timestamp sequence wil be used instead.
ENHANCEMENTS:
-
Add facility to write gnss status data to a spatialite (sqlite3 with spatial extension) database, which can be utilised by many standard GNSS visualisation and analysis applications e.g. QGIS, GDAL, GRASS, GeoPandas etc. The facility may be enabled via a new 'Database' checkbox on the Settings panel. The default database path is
$HOME/pygpsclient.sqlite. A single tablepygpsclientis populated with all the information displayed in PyGPSClient's banner panel, with lat/lon/hmsl available as a POINTZ (3D) geometry. Note that, when first created, the database spatial metadata will take a few seconds to initialise (up to a minute on ARM-based SBC platforms like RPi).NB: This optional facility is subject to the following Python environmental pre-requisites:
- The Python environment must support the loading of sqlite3 extensions i.e. it must have been compiled with the
--enable-loadable-sqlite-extensionsoption. This is true by default for most Windows and Linux platforms but NOT for most MacOS platforms. - The mod_spatialite module (.so, .dll or .dylib) must be installed and in
PATH(orLD_LIBRARY_PATHon Linux). - The 'About' dialog displays a new Spatial version/status - 'No ext' signifies the platform's Python does not support sqlite3 extensions; 'No m_s' signifies Python does support extensions but mod_spatialite is not installed or cannot be found in
PATHorLD_LIBRARY_PATH.
On MacOS platforms, it may be necessary to install (e.g. via Homebrew) a custom version of Python with the
--enable-loadable-sqlite-extensionsflag set and thelibspatialitepackage installed e.g.brew install [email protected] libspatialiteOn Linux platforms which do not support sqlite3 extensions out of the box, it may be possible to compile from source a suitable version of Python and/or libspatialite.
- The Python environment must support the loading of sqlite3 extensions i.e. it must have been compiled with the
-
Enhance elevation profile and metadata rendering in GPX track viewer.
-
Add support for Quectel proprietary $PAIR NMEA commands in NMEA Configuration dialog (Quectel LC29H/LC79H) - requires pynmeagps>=1.0.53.
-
Various minor improvements to file exception handling.
-
BSD 3-Clause license attribution clarified in all modules.
Fixes: #210
Full Changelog: v1.5.13...v1.5.14