Skip to content

Commit 9ac80a0

Browse files
authored
Merge pull request #242 from semuconsulting/RC-1.6.4
RC 1.6.4
2 parents ca7fdf7 + 76440ef commit 9ac80a0

40 files changed

Lines changed: 1055 additions & 662 deletions

INSTALLATION.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ sudo pacman -S tk libspatialite
115115

116116
To access the serial port (`/dev/tty*`) on most Linux platforms, you will need to be a member of whichever group or "`Gid`" the `/dev/tty*` device belongs to. Failure to do this will typically result in an error `[Errno 13] could not open port /dev/ttyACM0 [Errno 13] permission denied /dev/ttyACM0`
117117

118-
To check and set the necessary group permissions (*substitute* `ttyACM0` *for your particular serial port*):
118+
To check and set the necessary group permissions (*substitute your particular serial port for* `ttyACM0`):
119119

120120
```shell
121121
stat /dev/ttyACM0 | grep Gid
@@ -148,6 +148,7 @@ source pygpsclient/bin/activate # (or .\pygpsclient\Scripts\activate on Windows)
148148
python3 -m pip install --upgrade pygpsclient
149149
pygpsclient
150150
```
151+
**NB**: It is recommended to use the form `python3 -m pip install` (*or less ambiguously `python3.*`, where `*` is the Python minor version e.g. `python3.13`*) rather than simply `pip3 install`, particularly if you have multiple Python environments on your platform.
151152

152153
To deactivate the virtual environment:
153154

README.md

Lines changed: 104 additions & 77 deletions
Large diffs are not rendered by default.

RELEASE_NOTES.md

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
# PyGPSClient Release Notes
22

3+
### RELEASE 1.6.4
4+
5+
FIXES:
6+
1. Fix `CFG-VALSET ACK-NAK` error when configuring ZED-X20P as base station.
7+
1. Fix `AttributeError: ... has no attribute frm_socketserver` error in Server Config panel when configuring certain devices for SVIN.
8+
9+
ENHANCEMENTS:
10+
1. Improve Base Station receiver configuration handling in the NTRIP Caster/Socket Server dialog.
11+
1. Add connected device descriptor to status bar (e.g. "u-blox ZED-F9P", "Unicore UM981S", "Septentrio mosaic-X5" or "Quectel LG290AG03"). **FYI** This is based on a series of query messages (*one for each enabled protocol*) sent approximately 3 seconds after the connection is started (*you may see 'unknown protocol' warnings in response to some of these messages; these can be ignored)*. Failing this, a generic descriptor is displayed on receipt of a message protocol unique to a particular manufacturer (*e.g. "u-blox" on receipt of a UBX message, "Unicore" on receipt of a UNI message, etc.*). Note that some (mainly older) devices may not return a meaningful descriptor, in which case "N/A" will be displayed.
12+
1. Minor updates to serial port configuration panel (additional timeout values).
13+
1. Mininum pynmeagps version updated to v1.1.1.
14+
315
### RELEASE 1.6.3
416

517
1. Add support for Unicore UNI binary data output messages via `pyunigps>=0.1.3` and `pygnssutils>=1.1.22`.
@@ -106,7 +118,7 @@ FIXES:
106118
ENHANCEMENTS:
107119

108120
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 this functionality has been disabled by default in PyGPSClient in this release, and will be removed altogether in a subsequent release. It can be re-enabled by manually editing the `lband_enabled_b` configuration setting.
109-
1. 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 will be enhanced in future releases (contributions welcome).
121+
1. Add provisional support for Quectel QGC binary message protocol (requires pyqgc>=0.1.2). Currently only Quectel LGSERIES / LG580P / LG680P RAW and LU600 IMU QGC message types are implemented, but this will be enhanced in future releases (contributions welcome).
110122
1. Add additional IMU message types to IMU widget drop-down.
111123
1. Enhance performance and look and feel of banner skyview and graphview widgets.
112124
1. Drop active support for Python 3.9, add 3.14 (3.9 EOL as at 31 October 2025).
@@ -121,7 +133,7 @@ FIXES:
121133

122134
ENHANCEMENTS:
123135

124-
1. Add support for Quectel LC29H base station configuration in NTRIP Caster mode.
136+
1. Add support for Quectel LCSERIES base station configuration in NTRIP Caster mode.
125137
1. Enhance support for Quectel PAIR commands in NMEA configuration panel.
126138
1. Minor refinements to UI on lower resolution screens.
127139

@@ -156,7 +168,7 @@ ENHANCEMENTS:
156168
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](https://github.com/semuconsulting/PyGPSClient/blob/master/examples/python_compile.sh) and/or [libspatialite](https://github.com/semuconsulting/PyGPSClient/blob/master/examples/libspatialite_compile.sh).
157169
2. BSD 3-Clause license attribution clarified in all modules.
158170
3. Enhance elevation profile and metadata rendering in GPX track viewer. Add support for route and waypoint elements in addition to track.
159-
4. Enhance NMEA Dynamic Configuration dialog to support additional NMEA command types, including Quectel proprietary $PAIR (Quectel LC29H/LC79H), Garmin $PGRM, Locosys %PINV (limited) and u-Blox $PUBX (requires pynmeagps>=1.0.53).
171+
4. Enhance NMEA Dynamic Configuration dialog to support additional NMEA command types, including Quectel proprietary $PAIR (Quectel LCSERIES/LC79H), Garmin $PGRM, Locosys %PINV (limited) and u-Blox $PUBX (requires pynmeagps>=1.0.53).
160172
5. Add support
161173
5. Various minor improvements to file exception handling.
162174

@@ -204,7 +216,7 @@ FIXES:
204216

205217
ENHANCEMENTS:
206218

207-
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.
219+
1. Add support for Septentrio Mosaic X5 Base Station configuration in NTRIP Caster mode (supplementing the existing u-blox ZED-F9P/X20P and Quectel LGSERIES 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.
208220
1. Add base station location update - automatically updates NTRIP CASTER Survey-in base station location from RTCM 1005/6 message.
209221
1. Chart Plot widget streamlined to reduce memory footprint and simplify CSV cut-and-paste (double-right-click) function.
210222
1. Minor enhancements to ubx2preset() and nmea2preset() helper functions; added \examples\convert_ubx_preset.py example.
@@ -238,7 +250,7 @@ FIXES:
238250

239251
ENHANCEMENTS:
240252

241-
1. Add receiver type option to NTRIP Caster mode - can now utilise either u-blox ZED-F9* or Quectel LG290P as Base Station receiver. NOTE THAT due to quirks in the LG290P firmware, setting Base Station mode with RTCM MSM 7 messages requires two successive restarts - you may see `WARNING - connection error` in the console during those restarts.
253+
1. Add receiver type option to NTRIP Caster mode - can now utilise either u-blox ZED-F9* or Quectel LGSERIES as Base Station receiver. NOTE THAT due to quirks in the LGSERIES firmware, setting Base Station mode with RTCM MSM 7 messages requires two successive restarts - you may see `WARNING - connection error` in the console during those restarts.
242254
1. Add new IMU Monitor widget, capable of displaying IMU orientation (roll, pitch, yaw) and status from a variety of NMEA or UBX IMU data sources (e.g. ESF-ALG, HNR-ATT, NAV-ATT, NAV-PVAT, GPFMI).
243255
1. Add TTY Command Dialog, allowing user to enter/select ASCII TTY commands to the connected serial device. Access via menu bar Options...TTY Commands.
244256
1. RTCM3 messages types 1002 (GPS L1 observables) & 1010 (GLONASS L1 observables) added to NTRIP Caster configuration.
@@ -265,7 +277,7 @@ ENHANCEMENTS:
265277

266278
### RELEASE 1.5.5
267279

268-
1. Add new NMEA Configuration panel, complementing and (partly) mirroring the existing UBX Configuration panel. The NMEA configuration panel supports GNSS receivers which can be configured via proprietary NMEA sentences. Currently the only supported receiver is the Quectel LG290P (or other command-compatible Quectel receivers). See [README](https://github.com/semuconsulting/PyGPSClient?tab=readme-ov-file#nmeaconfig) for details. User-defined preset NMEA commands may be added via the `nmeapresets_l` section of the PyGPSClient *.json configuration file.
280+
1. Add new NMEA Configuration panel, complementing and (partly) mirroring the existing UBX Configuration panel. The NMEA configuration panel supports GNSS receivers which can be configured via proprietary NMEA sentences. Currently the only supported receiver is the Quectel LGSERIES (or other command-compatible Quectel receivers). See [README](https://github.com/semuconsulting/PyGPSClient?tab=readme-ov-file#nmeaconfig) for details. User-defined preset NMEA commands may be added via the `nmeapresets_l` section of the PyGPSClient *.json configuration file.
269281
1. Two new helper functions added `ubx2preset()` and `nmea2preset()`, to assist users in converting `UBXMessage` or `NMEAMessage` objects into strings which can be copied-and-pasted into the relevant sections of the *.json configuration file (`ubxpresets_l` and `nmeapresets_l`). See [README](https://github.com/semuconsulting/PyGPSClient?tab=readme-ov-file#userdefined) for details.
270282

271283
### RELEASE 1.5.4

examples/libspatialite_compile.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
# bash shell script to compile and install libspatialite
44
# (mod_spatialite.so) on Debian Linux platforms which do not
5-
# include a suitable binary in their standard repos
6-
# (e.g. Raspberry Pi OS).
5+
# include a suitable binary installable in their standard repos.
76
#
87
# Remember to run chmod +x libspatialite_compile.sh to make this script executable.
98
#

examples/pygpsclient_arch_install.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
# Bash shell script to install PyGPSClient on 64-bit Arch-based
44
# Linux environments.
55
#
6+
# Arch Desktop generally includes all the necessary Python3 executables by
7+
# default (but remember to look for the third-party ARM64/AARCH64
8+
# distributables if you're using an ARM SBC like Raspberry Pi).
9+
#
610
# Change shebang /bin/bash to /bin/zsh if running from zsh shell.
711
# NB: NOT for use on Windows or MacOS!
812
#
@@ -22,6 +26,7 @@ echo "Installed Python version is $PYVER"
2226

2327
echo "PyGPSClient will be installed at $HOME/pygpsclient/bin"
2428

29+
# this is generally all that's needed - Arch Desktop includes the latest Python3
2530
echo "Installing dependencies..."
2631
sudo pacman -S tk libspatialite
2732

examples/pygpsclient_macos_install.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
# ZSH shell script to install PyGPSClient on MacOS
44
# environments (MacOS 13 or later running zsh shell).
55
#
6+
# NB: Homebrew or Macports are NOT required.
7+
#
68
# NB: Does NOT create an application launcher - use
79
# the MacOS Automator tool to create a bin/zsh shell app
810
# called PyGPSClient.app with the shell command:

examples/python_compile.sh

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
#!/bin/bash
22

3-
# bash shell script to compile and install specified Python 3 version
4-
# on Debian Linux platforms e.g. Ubuntu or Raspberry Pi OS.
3+
# bash shell script to compile and install specified Python3/tkinter
4+
# version on Debian Linux platforms e.g. Ubuntu or Raspberry Pi OS.
5+
#
6+
# Why no Arch (pacman) version? Because Arch Desktop generally includes
7+
# the very latest Python3 executables by default - go Arch!
8+
# (but remember to look for the third-party ARM64/AARCH64 distributables
9+
# if you're using an ARM SBC like Raspberry Pi)
510
#
611
# Remember to run chmod +x python_compile.sh to make this script executable.
712
#
@@ -18,8 +23,8 @@
1823
# exit on error
1924
set -e
2025

21-
# set required Python major and minor version e.g. 3.10.10
22-
PYVER="3.13.7"
26+
# set required Python major and minor version e.g. 3.13.10
27+
PYVER="3.14.3"
2328
# NB: uncomment this line to install this version alongside existing versions
2429
# ALTINSTALL=1
2530

@@ -53,8 +58,9 @@ sudo apt install liblzma-dev || true
5358
# liblzma-dev may be lzma-dev on some platforms
5459
sudo apt install lzma-dev || true
5560
sudo apt install libspatialite || true
56-
# libspatialite may not be available as standard on some platforms
57-
# (e.g. Rasperry PI OS) but it is relatively straightforward to
61+
sudo apt install libsqlite3-mod-spatialite || true
62+
# libspatialite may not be available as a binary installable on some
63+
# platforms (e.g. older Debian) but it is relatively straightforward to
5864
# compile from source using the libspatialite_compile.sh script
5965
# in the /examples folder
6066

images/app.png

1.44 MB
Loading

images/basestation_fixed.png

2.76 KB
Loading

images/basestation_off.png

22.3 KB
Loading

0 commit comments

Comments
 (0)