From 5aa84e3143a4324ba51ef59e6d48ba351a98a741 Mon Sep 17 00:00:00 2001 From: SEMU Admin <28569967+semuadmin@users.noreply.github.com> Date: Wed, 15 Jul 2026 08:14:04 +0100 Subject: [PATCH 1/6] fix long term stability issues --- INSTALLATION.md | 16 +- README.md | 29 +- RELEASE_NOTES.md | 14 + images/rover_widget.png | Bin 68421 -> 62813 bytes pygpsclient.json | 4 +- pyproject.toml | 4 +- src/pygpsclient/__main__.py | 9 +- src/pygpsclient/_version.py | 2 +- src/pygpsclient/about_dialog.py | 35 +- src/pygpsclient/app.py | 444 +++++++------------- src/pygpsclient/attitude_frame.py | 11 +- src/pygpsclient/banner_frame.py | 159 ++++--- src/pygpsclient/canvas_map.py | 9 +- src/pygpsclient/canvas_subclasses.py | 14 +- src/pygpsclient/chart_frame.py | 15 +- src/pygpsclient/configuration.py | 11 +- src/pygpsclient/confirm_box.py | 12 +- src/pygpsclient/console_frame.py | 62 +-- src/pygpsclient/dynamic_config_frame.py | 28 +- src/pygpsclient/file_handler.py | 24 +- src/pygpsclient/globals.py | 8 +- src/pygpsclient/gnss_status.py | 1 + src/pygpsclient/gpx_dialog.py | 23 +- src/pygpsclient/hardware_info_frame.py | 25 +- src/pygpsclient/importmap_dialog.py | 33 +- src/pygpsclient/init_presets.py | 3 + src/pygpsclient/levelsview_frame.py | 27 +- src/pygpsclient/map_frame.py | 22 +- src/pygpsclient/menu_bar.py | 7 +- src/pygpsclient/nmea_config_dialog.py | 4 +- src/pygpsclient/nmea_handler.py | 26 +- src/pygpsclient/nmea_preset_frame.py | 24 +- src/pygpsclient/ntrip_client_dialog.py | 28 +- src/pygpsclient/qgc_handler.py | 7 +- src/pygpsclient/recorder_dialog.py | 61 +-- src/pygpsclient/rinex_dialog.py | 168 ++++---- src/pygpsclient/rover_frame.py | 78 +++- src/pygpsclient/rtcm3_handler.py | 21 +- src/pygpsclient/sbf_handler.py | 9 +- src/pygpsclient/scatter_frame.py | 6 +- src/pygpsclient/serialconfig_frame.py | 17 +- src/pygpsclient/serialconfig_lband_frame.py | 6 +- src/pygpsclient/serverconfig_dialog.py | 87 ++-- src/pygpsclient/settings_child_frame.py | 98 +++-- src/pygpsclient/settings_dialog.py | 7 +- src/pygpsclient/settings_frame.py | 16 +- src/pygpsclient/signalsview_frame.py | 9 +- src/pygpsclient/skyview_frame.py | 10 +- src/pygpsclient/socketconfig_frame.py | 3 +- src/pygpsclient/socketconfig_ntrip_frame.py | 6 +- src/pygpsclient/spartn_dialog.py | 5 +- src/pygpsclient/spartn_gnss_frame.py | 14 +- src/pygpsclient/spartn_lband_frame.py | 26 +- src/pygpsclient/spartn_mqtt_frame.py | 24 +- src/pygpsclient/spectrum_frame.py | 7 +- src/pygpsclient/sqlite_handler.py | 17 +- src/pygpsclient/status_frame.py | 10 +- src/pygpsclient/stream_handler.py | 171 +++++--- src/pygpsclient/strings.py | 5 +- src/pygpsclient/sysmon_frame.py | 36 +- src/pygpsclient/toplevel_dialog.py | 54 +-- src/pygpsclient/tty_handler.py | 3 +- src/pygpsclient/tty_preset_dialog.py | 46 +- src/pygpsclient/ubx_cfgval_frame.py | 50 +-- src/pygpsclient/ubx_config_dialog.py | 4 +- src/pygpsclient/ubx_handler.py | 77 +++- src/pygpsclient/ubx_msgrate_frame.py | 18 +- src/pygpsclient/ubx_port_frame.py | 14 +- src/pygpsclient/ubx_preset_frame.py | 29 +- src/pygpsclient/ubx_solrate_frame.py | 15 +- src/pygpsclient/uni_handler.py | 12 +- src/pygpsclient/widget_state.py | 2 +- tests/test_static.py | 10 +- 73 files changed, 1273 insertions(+), 1118 deletions(-) diff --git a/INSTALLATION.md b/INSTALLATION.md index 180c37f4..bfbb6c36 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -63,7 +63,7 @@ In the following, `python3` & `pip` refer to the Python 3 executables. You may n - Graphical User Interface (window system / manager) - Python >= 3.10⁴ -- Tk (tkinter) >= 8.6⁵ (*tkinter is a commonly used library for developing Graphical User Interfaces (GUI) in Python*) +- Tk (tkinter) >= 8.6⁵⁶ (*tkinter is a commonly used library for developing Graphical User Interfaces (GUI) in Python*) - Screen resolution >= 640 x 480 (VGA); Ideally 1920 x 1080, though at lower screen resolutions (<= 1024 width), top level dialogs will be resizable and scrollable. **NB** It is highly recommended to use the latest official [Python.org](https://www.python.org/downloads/) installation package for your platform, rather than any pre-installed version. @@ -81,18 +81,18 @@ Normally installs without any additional steps. ### MacOS 13 or later -⁵ The version of Python supplied with some older Apple MacOS platforms includes a [deprecated version of tkinter](https://www.python.org/download/mac/tcltk/) (8.5). Use an official [Python.org](https://www.python.org/downloads/macos) installation package instead. +**NB:** PyGPSClient does ***NOT*** normally require Homebrew or MacPorts to be installed on MacOS (either Intel or Apple Silicon). The Python organisation provides serviceable [64-bit universal MacOS installation packages](https://www.python.org/downloads/macos/) for all current and legacy versions of Python, including release candidates. Note, however, the following caveats: -**NB:** Python does ***NOT*** normally require Homebrew or MacPorts to be installed on MacOS. The Python organisation provides serviceable [64-bit universal installation packages](https://www.python.org/downloads/macos/) for all current and legacy versions of Python, including release candidates. +⁵ The version of Python supplied with some older Apple MacOS platforms includes a [deprecated version of tkinter](https://www.python.org/download/mac/tcltk/) (8.5). Use an official [Python for MacOS](https://www.python.org/downloads/macos) installation package instead. -However, if you wish to install Python using [Homebrew](https://brew.sh/) to take advantage of certain non-default configurations (*e.g. support for sqlite3 extensions*), use the `python-tk` formula rather than `python`, e.g. +⁶ The version of tkinter supplied with the very latest official versions of [Python for MacOS](https://www.python.org/downloads/macos) (`>= 3.14.5`), and with Homebrew formula `python-tk >= 3.12`, include a new version of tkinter (9.0). There appear to be some performance and compatibility issues with this version on MacOS Sonoma and Tahoe which may render the PyGPSClient UI somewhat sluggish or unresponsive. Until this is resolved, MacOS users are recommended to use official Python <= 3.14.4 or Homebrew formula `python-tk = 3.11`. + +If you wish to install Python using [Homebrew](https://brew.sh/) to take advantage of certain non-default configurations (*e.g. support for sqlite3 extensions*), use the `python-tk` formula rather than `python`, e.g. ```shell -brew install python-tk@3.13 libspatialite +brew install python-tk@3.11 libspatialite ``` -Note also that the Homebrew formulae for python-tk>=3.12 include the latest tkinter 9.0 (rather than 8.6). There are known compatibility issues between tkinter 9.0 and other Python packages (*e.g. ImageTk*) on some platform configurations, which may result in PyGPSClient being unable to load. If you encounter these issues, consider using `brew install python-tk@3.11` or an official [Python.org](https://www.python.org/downloads/macos) installation package instead. - Note that on MacOS, serial ports may appear as `/dev/tty*` *or* `/dev/cu*`. To understand the differences between the two, see [here](https://www.codegenes.net/blog/what-s-the-difference-between-dev-tty-and-dev-cu-on-macos/). ### Linux (including Raspberry Pi OS) @@ -128,7 +128,7 @@ Add your user to this group using usermod (*you will need to log out and in agai sudo usermod -aG dialout myuser ``` -For Debian-based platforms, the group is normally `dialout` or `tty`; on Arch-based platforms it is normally `uucp`. +For Debian-based platforms, the group is normally `dialout`; on Arch-based platforms it is normally `uucp`. Other than this, no special privileges are required. diff --git a/README.md b/README.md index 12b57370..ca7698c0 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,8 @@ For more comprehensive installation instructions, please refer to [INSTALLATION. 1. By default, the Settings panel is displayed to the right of the main application window. It can be hidden or shown via Menu..View..Hide/Show Settings. The panel can also be 'undocked' from the main application window via Menu..View..Undock Settings and - if [non-transient](#transient) (`transient_dialog_b: 0`) - minimized independently of the main window. Exiting the undocked dialog, or selecting Menu..View..Dock Settings, will 'dock' the panel. 2. Protocols Shown - Select which message protocols to display in the console; NMEA, UBX (*u-blox binary*), SBF (*Septentrio binary*), UNI (*Unicore binary*), QGC (*Quectel binary*), RTCM3, SPARTN or TTY (*terminal*). NB: this only changes the *displayed* protocols - to change the actual protocols output by the receiver, use the relevant configuration command(s). - - **NB:** Serial connection must be stopped before changing to or from TTY (terminal) protocol. Enabling TTY (terminal) mode will disable all other protocols. + - **NB:** Serial connection must be stopped before changing to or from TTY (terminal) protocol or "Meta Only" mode. Enabling TTY (terminal) mode will disable all other protocols. + - If "Meta Only" is enabled, the underlying `GNSSReader` parser will *only* parse basic metadata from each incoming raw message (protocol, identity, length). This mode is vastly quicker (≈ 100x) than full parsing, but individual data attributes *will no longer be available* and PyGPSClient's widgets other than console will *not* be updated. 3. To connect to a GNSS receiver via USB or UART port, select the device from the listbox, set the appropriate serial connection parameters and click ![connect icon](https://github.com/semuconsulting/PyGPSClient/blob/master/src/pygpsclient/resources/usbport-1-24.png?raw=true). The application will endeavour to pre-select a recognised GNSS/GPS device but this is platform and device dependent. Press the ![refresh](https://github.com/semuconsulting/PyGPSClient/blob/master/src/pygpsclient/resources/iconmonstr-refresh-6-16.png?raw=true) button to refresh the list of connected devices at any point. - `Rate bps` (baud rate) is typically the only setting that might need adjusting, but tweaking the `timeout` setting may improve performance on certain platforms. @@ -145,6 +146,12 @@ For more comprehensive installation instructions, please refer to [INSTALLATION. #### Datalogging, GPX Track Recording and Database 17. DataLogging - Turn Data logging in the selected format (Binary, Parsed, Hex Tabular, Hex String, Parsed+Hex Tabular) on or off. On first selection, you will be prompted to select the directory into which timestamped log files are saved. Log files are cycled when a maximum size is reached (default is 10 MB, manually configurable via `logsize_n` setting). + + **NB**: For extended datalogging (> 2 hours or more) it is **strongly** recommended to use an unattended (e.g. CLI) tool like [GNSSStreamer](https://github.com/semuconsulting/pygnssutils#gnssstreamer) rather than an attended GUI tool like PyGPSClient (*especially if you're running 'headless'*), e.g.: + ```shell + gnssstreamer --port /dev/ttyACM0 --baudrate 115200 --timeout 3 --format 2 --clioutput 1 --output pygpsdata.log --verbosity 2 + ``` + 18. GPX Track - Turn track recording (in GPX format) on or off. On first selection, you will be prompted to select the directory into which timestamped GPX track files are saved. See also [GPX Track Viewer](#gpxviewer). 19. Database - Turn spatialite database recording (*where available*) on or off. On first selection, you will be prompted to select the directory into which the `pygpsclient.sqlite` database is saved. *Note that, when first created, the database's spatial metadata may take up to a minute or so to initialise*. - Database logging is dependent on your Python environment supporting the requisite [sqlite3 `mod_spatialite` extension](https://www.gaia-gis.it/fossil/libspatialite/index) - see [INSTALLATION.md](https://github.com/semuconsulting/PyGPSClient/blob/master/INSTALLATION.md#prereqs) for further details. If not supported, the option will be greyed out. Check the Menu..Help..About dialog for an indication of the current spatialite support status - `no-ext` means the spatialite extension is not supported; `no-ms` means spatialite *is* supported but the necessary `mod_spatialite` extension module cannot be found in the PATH; a numeric version number like `3.51.2` indicates spatialite is fully supported. @@ -185,8 +192,8 @@ For more comprehensive installation instructions, please refer to [INSTALLATION. |---------------------------|---------------------------------------------------------------------------------------------------| |![banner widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/banner_widget.png?raw=true)| Expandable banner showing key navigation status information based on messages received from receiver. To expand or collapse the banner or serial port configuration widgets, click the ![expand icon](https://github.com/semuconsulting/PyGPSClient/blob/master/src/pygpsclient/resources/iconmonstr-arrow-80-16.png?raw=true)/![expand icon](https://github.com/semuconsulting/PyGPSClient/blob/master/src/pygpsclient/resources/iconmonstr-triangle-1-16.png?raw=true) buttons. Double-click the "hae" label or value to toggle between hae (height above ellipsoid) and sep (separation) values. **NB**: some fields (e.g. hdop/vdop, hacc/vacc) are only available from proprietary NMEA or UBX messages and may not be output by default. The minimum messages required to populate all available fields are: NMEA: GGA, GSA, GSV, RMC, UBX00 (proprietary); UBX: NAV-DOP, NAV-PVT, NAV-SAT; UNI: BESTNAV, SATSINFO, STADOP. | |![console widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/console_widget.png?raw=true)| Configurable serial console widget showing incoming GNSS data streams in either parsed, binary or tabular hexadecimal formats. Double-right-click to copy contents of console to the clipboard. The scroll behaviour and number of lines retained in the console can be configured via the settings panel. Supports user-configurable color tagging of selected strings for easy identification. Color tags are loaded from the `"colortag_b":` value (`0` = disable, `1` = enable) and `"colortags_l":` list (`[string, color]` pairs) in your json configuration file (see example provided). If color is set to "HALT", streaming will halt on any match and a warning displayed. NB: color tagging does impose a small performance overhead - turning it off will improve console response times at very high transaction rates.| -|![skyview widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/skyview_widget.png?raw=true)| Skyview widget showing current satellite visibility and position (elevation / azimuth). Satellite icon borders are colour-coded to distinguish between different GNSS constellations. For consistency between NMEA and UBX data sources, will display GLONASS NMEA SVID (65-96) rather than slot (1-24). | -|![levelsview widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/graphview_widget.png?raw=true)| Levels view widget showing current satellite carrier-to-noise (C/No) levels for each GNSS constellation. Double-click to toggle legend. Double-right-click to toggle levels where C/No = 0 dbHz. | +|![skyview widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/skyview_widget.png?raw=true)| Skyview widget showing current satellite visibility and position (elevation / azimuth). Satellite icon borders are colour-coded to distinguish between different GNSS constellations. For consistency between NMEA and UBX data sources, will display GLONASS NMEA SVID (65-96) rather than slot (1-24). A manually-edited boolean configuration parameter `unusedsat_b` determines whether or not to include satellites where CNo = 0; default = 0. | +|![levelsview widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/graphview_widget.png?raw=true)| Levels view widget showing current satellite carrier-to-noise (C/No) levels for each GNSS constellation. Double-click to toggle legend.| |![signalsview widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/signalsview_widget.png?raw=true)| Signals view widget showing current svid/signal carrier-to-noise (C/No) level and (where applicable) correction source for each GNSS svid/signal received (*GNSS receiver must be capable of outputting UBX NAV-SIG messages*). Signal identifiers are in RINEX format e.g. `L1_C/A`, `E5_aQ`, etc. Double-click to toggle legend. Double-right-click to toggle signals where C/No = 0 dbHz. | |![world map](https://github.com/semuconsulting/PyGPSClient/blob/master/images/staticmap.png?raw=true)| Map widget with various modes of display - select from "map" / "sat" (online) or "world" / "custom" (offline). Select zoom level 1 - 20. Double-click the zoom level label to reset the zoom to 10. Double-right-click the zoom label to maximise zoom to 20. Tick Track to show track (track will only be recorded while this box is checked). Double-Right-click will clear the map. Map Type = 'world': a static offline Mercator world map showing current global location. |![online map](https://github.com/semuconsulting/PyGPSClient/blob/master/images/webmap_widget.png?raw=true)| Map Type = 'map', 'sat' or 'hyb' (hybrid): Dynamic, online web map or satellite image via MapQuest API (*requires an Internet connection and free [Mapquest API Key](#mapquestapi)*). By default, the web map will automatically refresh every 60 seconds (*indicated by a small timer icon at the top left*). The default refresh rate can be amended by changing the `"mapupdateinterval_n":` value in your json configuration file, but **NB** the facility is not intended to be used for real-time navigation. Double-click anywhere in the map to immediately refresh. | @@ -195,7 +202,7 @@ For more comprehensive installation instructions, please refer to [INSTALLATION. |![spectrum widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/spectrum_widget.png?raw=true)| Spectrum widget showing a spectrum analysis chart (*GNSS receiver must be capable of outputting UBX MON-SPAN messages*). Clicking anywhere in the spectrum chart will display the frequency and decibel reading at that point. Double-clicking anywhere in the chart will toggle the GNSS frequency band markers (L1, G2, etc.) on or off. Right-click anywhere in the chart to capture a snapshot of the spectrum data, which will then be superimposed on the live data (*this can, for example, be used to compare reception with different antenna configurations*). Double-right-click to clear snapshot. **NB:** Some receivers (e.g. NEO-F10N) will not output the requisite MON-SPAN messages unless the port baud rate is at least 57,600. | |![sysmon widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/sysmon_widget.png?raw=true)| System Monitor widget showing device cpu, memory and I/O utilisation (*GNSS receiver must be capable of outputting UBX MON-SYS/MON-COMMS or SBF ReceiverStatus messages*). Tick checkbox to toggle between actual (cumulative) I/O stats and pending I/O. Primarily intended for u-blox modules, but can display limited system information for other devices. | |![scatterplot widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/scatterplot_widget.png?raw=true)| Scatterplot widget showing variability in position reporting over time. (Optional) Enter fixed reference position. Select Average to center plot on dynamic average position (*displayed at top left*), or Fixed to center on fixed reference position (*if entered*). Check Autorange to set plot range automatically. Set the update interval (e.g. 4 = every 4th navigation solution). Use the range slider or mouse wheel to adjust plot range. Right-click to set fixed reference point to the current mouse cursor position. Double-click to clear the existing data. | -|![rover widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/rover_widget.png?raw=true) | Rover widget plots the relative 2D position, track and status information for the roving receiver in a fixed or moving base / rover RTK configuration. Can also display relative position of NTRIP mountpoint and receiver in a static RTK configuration. Double-click to clear existing plot. | +|![rover widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/rover_widget.png?raw=true) | Relative Position (formerly 'Rover') widget plots relative 2D bearing, distance, track and status information for the following configurations: (i) NAV-RELPOSNED - position of roving receiver relative to a fixed or moving RTK base (including an NTRIP mountpoint); (ii) RTCM 1005/6 - position of roving receiver relative to a fixed RTK NTRIP antenna reference point (ARP); (iii) NAV-DAHEADING - static heading ('yaw') from a dual-antenna receiver e.g. u-blox ZED-X20D. Double-click to clear existing plot. | |![chart view](https://github.com/semuconsulting/PyGPSClient/blob/master/images/chart_widget.png?raw=true) | Chart widget acts as a multi-channel "plotter", allowing the user to plot a series of named numeric data attributes from any parsed GNSS data source, with configurable y (value) and x (time) axes. By default, the number of channels is set to 4, but this can be manually edited by the user via the json configuration file setting `chartsettings_d["numchn_n"]`. For each channel, user can select: (*optional*) identity of message source e.g. `NAV-PVT`; attribute name e.g. `hAcc`; scaling factor (divisor) e.g. 1000; y axis range e.g. 0 - 5. Wildcards are available for attribute groups - "\*" (average of group values), "+" (maximum of group values), "-" (minimum of group values) e.g. `cno*` will plot the average `cno` value for a group of satellites. Double-click to clear the existing data. Double-right-click to save the current chart data to the clipboard in CSV format, which can be directly pasted into a spreadsheet application. | |![attitude widget](https://github.com/semuconsulting/PyGPSClient/blob/master/images/attitude_widget.png?raw=true) | Attitude Monitor widget (*formerly "IMU Monitor"*) showing current orientation/attitude (roll, pitch, yaw *aka 'static heading'*) and status from a variety of IMU, Dead Reckoning, Dual Antenna or other 2D/3D attitude message sources. Select range in degrees (from ±1 to ±180 degrees). | @@ -519,22 +526,24 @@ For further details, refer to the `pygnssutils` homepage at [https://github.com/ --- ## Troubleshooting -1. If you encounter persistent `WARNING>>Error parsing data stream Serial stream terminated unexpectedly` messages in the console, this may be indicative of insufficient serial port bandwidth (baudrate or timeout) for the current output message cohort (*particularly if this includes Ephemera or Observation data*). Try increasing the baudrate in the first instance. +1. **NB:** The latest version of Python for MacOS (>=3.14.5) comes with a new version of tkinter (9.0). There appear to be fairly serious performance issues with this version on MacOS Tahoe which render the PyGPSClient UI somewhat sluggish. For the time being, it is recommended that users use >=3.14.4. This issue does *not* affect other operating systems or Python apps not using tkinter. + +2. If you encounter persistent `WARNING>>Error parsing data stream Serial stream terminated unexpectedly` messages in the console, this may be indicative of insufficient serial port bandwidth (baudrate or timeout) for the current output message cohort (*particularly if this includes Ephemera or Observation data*). Try increasing the baudrate in the first instance. -2. Most [budget USB-UART adapters](https://www.amazon.co.uk/DSD-TECH-adapter-FT232RL-Compatible/dp/B07BBPX8B8?ref_=ast_sto_dp) (e.g. FT232, CH345, CP2102, *including those embedded on development boards*) have a bandwidth limit of around 3Mbps (≈ 375000 baud) and may not work reliably above 230600 baud, even if the receiver supports higher baud rates. If you're using an adapter and notice significant message corruption (e.g. frequent `WARNING>>..invalid checksum` messages), try reducing the baud rate to a maximum 230600. +3. Most [budget USB-UART adapters](https://www.amazon.co.uk/DSD-TECH-adapter-FT232RL-Compatible/dp/B07BBPX8B8?ref_=ast_sto_dp) (e.g. FT232, CH345, CP2102, *including those embedded on development boards*) have a bandwidth limit of around 3Mbps (≈ 375000 baud) and may not work reliably above 230600 baud, even if the receiver supports higher baud rates. If you're using an adapter and notice significant message corruption (e.g. frequent `WARNING>>..invalid checksum` messages), try reducing the baud rate to a maximum 230600. -3. Some Linux Wayland platforms appear to require Toplevel dialog windows to be non-transient (`transient_dialog_b: 0`) for the window 'maximise' icon to work properly. +4. Some Linux Wayland platforms appear to require Toplevel dialog windows to be non-transient (`transient_dialog_b: 0`) for the window 'maximise' icon to work properly. -4. Some Homebrew-installed Python environments on MacOS can give rise to critical segmentation errors (*illegal memory access*) when shell subprocesses are invoked, due to the way permissions are implemented. This may, for example, affect About..Update functionality; the workaround is to update via a standard CLI `pip install --upgrade` command. +5. Some Homebrew-installed Python environments on MacOS can give rise to critical segmentation errors (*illegal memory access*) when shell subprocesses are invoked, due to the way permissions are implemented. This may, for example, affect About..Update functionality; the workaround is to update via a standard CLI `pip install --upgrade` command. -5. Installing the optional `cryptography` package on some 32-bit Linux platforms (e.g. Raspberry Pi OS 32) may require [Rust compiler support](https://www.rust-lang.org/tools/install) and some [additional build dependencies](https://cryptography.io/en/latest/installation/) (see [pyspartn cryptography installation notes](https://github.com/semuconsulting/pyspartn/tree/main/cryptography_installation#readme)): +6. Installing the optional `cryptography` package on some 32-bit Linux platforms (e.g. Raspberry Pi OS 32) may require [Rust compiler support](https://www.rust-lang.org/tools/install) and some [additional build dependencies](https://cryptography.io/en/latest/installation/) (see [pyspartn cryptography installation notes](https://github.com/semuconsulting/pyspartn/tree/main/cryptography_installation#readme)): ```shell curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh sudo apt-get install build-essential libssl-dev libffi-dev python3-dev pkg-config ``` -6. As of October 2025, u-blox have [discontinued their PointPerfect SPARTN L-Band and MQTT services](https://portal.u-blox.com/s/question/0D5Oj00000uB53GKAS/suspension-of-european-pointperfect-lband-spartn-service). As a result, PyGPSClient's [SPARTN Configuration](#spartnconfig) panel is largely redundant and is disabled by default in version>=1.5.17, though it can be re-enabled by manually setting the `lband_enabled_b` configuration setting to 1. +7. As of October 2025, u-blox have [discontinued their PointPerfect SPARTN L-Band and MQTT services](https://portal.u-blox.com/s/question/0D5Oj00000uB53GKAS/suspension-of-european-pointperfect-lband-spartn-service). As a result, PyGPSClient's [SPARTN Configuration](#spartnconfig) panel is largely redundant and is disabled by default in version>=1.5.17, though it can be re-enabled by manually setting the `lband_enabled_b` configuration setting to 1. --- ## License diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 18ce089b..658f1eb8 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,19 @@ # PyGPSClient Release Notes +### RELEASE 1.7.1 + +FIXES: + +1. Internal refactoring to improve long-term stability and responsiveness and reliability of extended datalogging. +1. Fix u-blox preset configuration validation which was preventing some valid preset commands. + +ENHANCEMENTS: + +1. Display UBX NAV-DAHEADING data from dual-antenna receivers such as the u-blox ZED-X20D in the "Rover Plot" widget. +1. Update portid designation in System Monitor I/O widget (X20 assigns different MON-COMMS.portids to F9P). +1. Add satellite filter entry field to RINEX conversion dialog (requires pygnssutils>=1.2.6). +1. "Meta Only" parsing mode added. When enabled, incoming raw data will *only* be parsed for basic metadata (protocol, identity, length) rather than individual data attributes. This mode is significantly quicker than full parsing, but individual data attributes *will no longer be available* and PyGPSClient's widgets other than the console will *not* be updated. Utilises the new [GNSSReader](https://github.com/semuconsulting/pygnssutils#gnssreader) `parsing=2` argument. Requires pygnssutils>=1.2.6. + ### RELEASE 1.7.0 1. Can now double-click to toggle between 'hae' (height above ellipsoid) and 'sep' (separation) values in banner panel. diff --git a/images/rover_widget.png b/images/rover_widget.png index 904f105c59859bbf958ed5e096248e7dc3c4af97..2d6a1301250c920aabf80fbfe6c0bf3ed42bd00d 100644 GIT binary patch delta 62428 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�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 in&^R`2f!x(a{GTh+0e8>Cyc-V0000=2.34.0", "Pillow>=12.0.0", - "pygnssutils>=1.2.5", + "pygnssutils>=1.2.5", # TODO requires >=1.2.6 when available "pyunigps>=1.0.0", "pynmeagps>=1.1.5", - "pyubx2>=1.3.3", + "pyubx2>=1.3.5", ] [project.scripts] diff --git a/src/pygpsclient/__main__.py b/src/pygpsclient/__main__.py index fc951336..554a3657 100644 --- a/src/pygpsclient/__main__.py +++ b/src/pygpsclient/__main__.py @@ -10,7 +10,6 @@ from argparse import SUPPRESS, ArgumentDefaultsHelpFormatter, ArgumentParser from logging import getLogger -from tkinter import Tk from pygnssutils import ( VERBOSITY_CRITICAL, @@ -139,7 +138,7 @@ def main(): kwargs = vars(ap.parse_args()) # set up global logging configuration - verbosity = int(kwargs.pop("verbosity", VERBOSITY_LOW)) + verbosity = int(kwargs.pop("verbosity", VERBOSITY_CRITICAL)) logtofile = kwargs.pop("logtofile", "") logger = getLogger(APPNAME) # "pygpsclient" logger_utils = getLogger("pygnssutils") @@ -147,10 +146,10 @@ def main(): for logr in (logger, logger_utils, logger_pyubx2): set_logging(logr, verbosity, logtofile) - root = Tk() - App(root, **kwargs) - root.mainloop() + app = App(**kwargs) + app.mainloop() if __name__ == "__main__": + main() diff --git a/src/pygpsclient/_version.py b/src/pygpsclient/_version.py index 32122df4..07f89dde 100644 --- a/src/pygpsclient/_version.py +++ b/src/pygpsclient/_version.py @@ -8,4 +8,4 @@ :license: BSD 3-Clause """ -__version__ = "1.7.0" +__version__ = "1.7.1" diff --git a/src/pygpsclient/about_dialog.py b/src/pygpsclient/about_dialog.py index 6a764161..4e74ee2f 100644 --- a/src/pygpsclient/about_dialog.py +++ b/src/pygpsclient/about_dialog.py @@ -55,11 +55,10 @@ def __init__(self, app, *args, **kwargs): # pylint: disable=unused-argument """ Initialise Toplevel dialog - :param Frame app: reference to main tkinter application + :param Tk app: reference to main tkinter application """ self.__app = app # Reference to main application class - self.__master = self.__app.appmaster # Reference to root class (Tk) self.logger = logging.getLogger(__name__) self._img_icon = ImageTk.PhotoImage(Image.open(ICON_APP128).resize((64, 64))) self._img_github = ImageTk.PhotoImage(Image.open(ICON_GITHUB).resize((32, 32))) @@ -190,7 +189,7 @@ def _on_github(self, *args, **kwargs): # pylint: disable=unused-argument """ if brew_installed(): - self.status_label = (BREWWARN, INFOCOL) + self.set_status_label(BREWWARN, INFOCOL) return open_new_tab(GITHUB_URL) @@ -202,7 +201,7 @@ def _on_sponsor(self, *args, **kwargs): # pylint: disable=unused-argument """ if brew_installed(): - self.status_label = (BREWWARN, INFOCOL) + self.set_status_label(BREWWARN, INFOCOL) return open_new_tab(SPONSOR_URL) @@ -214,7 +213,7 @@ def _on_license(self, *args, **kwargs): # pylint: disable=unused-argument """ if brew_installed(): - self.status_label = (BREWWARN, INFOCOL) + self.set_status_label(BREWWARN, INFOCOL) return open_new_tab(LICENSE_URL) @@ -225,7 +224,7 @@ def _check_for_update(self, *args, **kwargs): # pylint: disable=unused-argument Check for updates. """ - self.status_label = ("Checking for updates...", INFOCOL) + self.set_status_label("Checking for updates...", INFOCOL) versions = check_for_updates() for i, (nam, current, latest) in enumerate(versions): txt = f"{nam}: {current}" @@ -238,14 +237,14 @@ def _check_for_update(self, *args, **kwargs): # pylint: disable=unused-argument else: txt += f" - Latest version is {latest}" col = ERRCOL - self._lbl_lib_versions[i].config(text=txt, fg=col) - + self._lbl_lib_versions[i]["text"] = txt + self._lbl_lib_versions[i]["fg"] = col updates = [nam for (nam, current, latest) in versions if latest != current] if len(updates) > 0: - self.status_label = ("Updates available", OKCOL) + self.set_status_label("Updates available", OKCOL) self._set_update_btn_mode(True) else: - self.status_label = ("No updates available", INFOCOL) + self.set_status_label("No updates available", INFOCOL) def _do_update(self, *args, **kwargs): # pylint: disable=unused-argument """ @@ -253,15 +252,15 @@ def _do_update(self, *args, **kwargs): # pylint: disable=unused-argument """ if brew_installed(): - self.status_label = (BREWUPDATE, INFOCOL) + self.set_status_label(BREWUPDATE, INFOCOL) return - self.status_label = (UPDATEINPROG, INFOCOL) + self.set_status_label(UPDATEINPROG, INFOCOL) rc = self.__app.do_app_update() if rc: - self.status_label = (UPDATERESTART, OKCOL) + self.set_status_label(UPDATERESTART, OKCOL) else: - self.status_label = (UPDATEERR.format(err=rc), ERRCOL) + self.set_status_label(UPDATEERR.format(err=rc), ERRCOL) self._set_update_btn_mode(False) def _set_update_btn_mode(self, update: bool): @@ -272,9 +271,11 @@ def _set_update_btn_mode(self, update: bool): """ if update: - self._btn_checkupdate.config(text="UPDATE", fg=OKCOL) + self._btn_checkupdate["text"] = "UPDATE" + self._btn_checkupdate["fg"] = OKCOL self._btn_checkupdate.bind("