Skip to content

Releases: semuconsulting/PyGPSClient

v1.5.18

04 Nov 09:50
d9fca43

Choose a tag to compare

What's Changed

ENHANCEMENTS:

  1. 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.

  2. 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-VALSET commands supplied all take effect in the volatile RAM memory layer - to persist these configurations, select 'Save Configuration to BBR' (or other non-volatile memory).

  3. 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 variable PYGNSSUTILS_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
  4. Update list of 'recognised' GNSS receiver serial port designators to include IOUSBHostDevice (Sparkfun ZED-X20P breakout) and USB Dual_Serial (Sparkfun Flex Breakout).

FIXES:

  1. Fix "SQLError Database not open" issue on initialisation.
  2. Fix issue where TTY Console would not refresh immediately if Echo was enabled.
  3. Fix issue where ValueError (unknown protocol) from GNSSReader would cause streaming to terminate (requires pygnssutils>=1.1.20).
  4. Fix issue with some ZED-X20P configuration commands not taking effect with firmware HPG 2.02.
  5. Fixed issue which prevented some warning messages being shown during initialisation.

Full Changelog: v1.5.17...v1.5.18

v1.5.17

22 Oct 08:15
9983632

Choose a tag to compare

What's Changed

  1. 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_b configuration setting.
  2. 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).
  3. Utilise pygnssutils.GNSSReader class 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.
  4. Streamline IMU widget; add additional NMEA message sources.
  5. Various minor enhancements to GUI performance.
  6. 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

04 Oct 14:20
c432ccc

Choose a tag to compare

What's Changed

  1. "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

04 Oct 06:46
1816c1f

Choose a tag to compare

What's Changed

ENHANCEMENTS:

  1. Add support for Quectel LC29H base station configuration in NTRIP Caster mode.
  2. Enhance support for Quectel PAIR commands in NMEA configuration panel.
  3. Minor refinements to UI on lower resolution screens.

FIXES:

  1. Fix GPX add trackpoint exception handling - Fixes #213
  2. 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

18 Sep 16:45
042ab3b

Choose a tag to compare

What's Changed

FIXES:

  1. Fix Chart update issue #210
  2. Fix Exit button not invoking on_exit() clean up routines (causing any in-progress GPX track recording to be unterminated).
  3. Fix IndexError when loading GPX tracks with no <time></time> elements - a synthetic timestamp sequence wil be used instead.

ENHANCEMENTS:

  1. 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 table pygpsclient is 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-extensions option. 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 (or LD_LIBRARY_PATH on 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 PATH or LD_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-extensions flag set and the libspatialite package installed e.g.

    brew install [email protected] libspatialite

    On 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.

  2. Enhance elevation profile and metadata rendering in GPX track viewer.

  3. Add support for Quectel proprietary $PAIR NMEA commands in NMEA Configuration dialog (Quectel LC29H/LC79H) - requires pynmeagps>=1.0.53.

  4. Various minor improvements to file exception handling.

  5. BSD 3-Clause license attribution clarified in all modules.

Fixes: #210

Full Changelog: v1.5.13...v1.5.14

v1.5.13

23 Aug 07:51
7879a46

Choose a tag to compare

What's Changed

ENHANCEMENTS:

  1. Internal streamlining and rationalisation of map handling across all dialogs and widgets which display maps (Mapview widget, GPX Track Viewer dialog, Import Custom Map dialog).
    • Location-centered zooming is now available for both offline and online maps (previously only online maps could be zoomed via MapQuest API). For offline maps, the minimum and maximum viable zoom levels will depend on the resolution and extents of the imported geo-referenced image(s).
    • For both online and offline maps, each zoom level (1-20) corresponds to a pre-calculated lat/lon bounding box. If you see black borders around an offline map, this signifies that the geo-referenced image does not extend to the current zoom level bounds - try increasing the zoom level until the map fills the canvas.
    • A new boolean configuration setting mapzoom_disabled_b governs the location-centered zoom behaviour for offline maps. To enable zoomable custom maps, set this to 0 (the default). To revert to the previous map-centered static handling, set this to 1.
    • NB: the MapCanvas class can only display one offline image at a time - it cannot 'tile' multiple images to form a single larger image on the canvas. The largest single image the map viewer can handle is around 150 million pixels (roughly 430 MB), though one would need an extremely high resolution screen (8K) to take advantage of images of such resolution.
  2. 'Map Type', 'Zoom' and 'Show Track' options moved from settings panel to mapview widget, allowing these to be altered even if the settings panel is hidden.
  3. A new boolean configuration setting transient_dialog_b (default 1) governs whether Toplevel dialogs are 'transient' (i.e. always on top of main application dialog) or not. A setting of 0 allows pop-up dialogs to be minimised independently of the main application window, but be mindful that some dialogs may end up hidden behind others e.g. "Open file/folder" dialogs. If a file open button appears unresponsive, check that the "Open file/folder" panel isn't already open but obscured. Applies to all Toplevel dialogs (UBX Configuration, NMEA Configuration, NTRIP Client, SPARTN Client, About, GPX Viewer, Import Custom Map, TTY Presets).

Full Changelog: v1.5.12...v1.5.13

v1.5.12

11 Aug 09:48
b6d1619

Choose a tag to compare

What's Changed

FIXES:

  1. Fix GPX Custom map loading error.

Full Changelog: v1.5.11...v1.5.12

v1.5.11

11 Aug 07:38
9929038

Choose a tag to compare

What's Changed

FIXES:

  1. Clarify interpretation of SPARTN decryption basedate integer values in *.json configuration file; -1 signifies 'use current datetime' (basedate=None); 0 signifies 'use gnssTimeTag from incoming SPARTN data stream' (basedate=pyspartn.TIMEBASE); any other integer value represents an explicit gnssTimeTag value.
  2. Fix minor bugs in GPX Viewer custom map handling.

ENHANCEMENTS:

  1. Make all Toplevel dialogs scrollable and resizeable, depending on effective screen resolution. Applies to: UBX Config, NMEA Config, NTRIP Client, SPARTN Client, Display GPX Track, Import Custom Map, TTY Commands. This allows the dialogs to be usable on low resolution screens( 600 <= width <= 1024 pixels).
  2. Make SPARTN L-Band configuration panel optional - disabled by default (ublox PointPerfect SPARTN L-Band service was discontinued in May 2025, though the panel can still be used for other generic L-Band modem configuration purposes). Panel can be re-enabled by setting lband_enabled_b to 1.
  3. Make cryptography library dependency optional (it is only required to decrypt encrypted MQTT SPARTN payloads). If the cryptography library is not installed, the "Decode SPARTN in console" option will be greyed out in the SPARTN MQTT Client dialog.
  4. Allow datalogging and track recording to be enabled or disabled while connected (previously only available while disconnected).
  5. Update minimum pyubx2, pysbf2 and pygnssutils versions to take onboard latest fixes and enhancements.

Full Changelog: v1.5.10...v1.5.11

v1.5.10

25 Jun 19:51
57233e7

Choose a tag to compare

What's Changed

FIXES:

  1. Fix issue with type formatting in banner_frame.py #202 - thanks to @davidtlascelles for contribution.
  2. Fix issue which would cause console to flicker between fixed and dynamic fonts when filtering data.
  3. Fix issue with reset widget layout menu option not updating stored configuration.

ENHANCEMENTS:

  1. Add support for Septentrio Mosaic X5 Base Station configuration in NTRIP Caster mode (supplementing the existing u-blox ZED-F9P/X20P and Quectel LG290P options). Note that the Mosaic X5 is configured via ASCII TTY commands - to monitor the responses, set the console protocol to "TTY" (remember to set it back to "RTCM" to monitor the RTCM3 output). Note also that the input (ASCII command) UART port may be different to the output (RTCM3) port - ensure you select the appropriate port(s) when configuring the receiver and monitoring the RTCM3 output.
  2. Add base station location update - automatically updates NTRIP CASTER Survey-in base station location from RTCM 1005/6 message.
  3. Chart Plot widget streamlined to reduce memory footprint and simplify CSV cut-and-paste (double-right-click) function.
  4. Minor enhancements to ubx2preset() and nmea2preset() helper functions; added \examples\convert_ubx_preset.py example.
  5. Dependency versions updated to incorporate latest fixes and enhancements.

Fixes: #202

New Contributors

Full Changelog: v1.5.9...v1.5.10

v1.5.9

05 Jun 06:47
93487c1

Choose a tag to compare

What's Changed

FIXES:

  1. Fixes MON-SPAN RF3 spectrum offset issue #193.

ENHANCEMENTS:

  1. Add support for Septentrio SBF binary GNSS protocol (via the underlying pysbf2 library). If SBF protocol is selected, the console can now display parsed SBF data e.g. from Septentrio Mosaic X5.
    • NB: At present, either UBX or SBF protocols can be selected, but not both at the same time.
    • NB: At present, with the exception of the SBF PVTGeodetic message, SBF data is not used to update the various user-selectable PyGPSClient widgets. This functionality may be enhanced in future releases.
    • NB: Serial connection must be disconnected before switching between SBF, UBX or TTY protocols.
  2. Enhancements to TTY Command mode - will now work with a wider variety of TTY-configured devices, including Septentrio Mosaic X5 (see example tty_console.png screenshot) and Feyman IM19.
  3. Delay checkbox added to TTY Preset Commands dialog - if checked, inserts small delay between individual TTY commands.

Fixes #193

Full Changelog: v1.5.8...v1.5.9