While changing the broken display of my Librem 5, I’ve destroyed the connector to the GNSS antenna on the mainboard. So GNSS is kind of broken, it still sees some satellites, but never gets a fix, even on flat field.
So I decided to order an external GNSS USB dongle. I found one at AliExpress with USB-C. It’s using the Ublox UBX-M8030 chip.
If I plug it in it does appear as /dev/ttyACM0
. It also seems to work as cat /dev/ttyACM0
gives out NMEA output. Parsing it with an online tool shows plausible/correct locations.
But the problem is, it does not work with GNOME Maps or Satellite.
I have set device_path="/dev/ttyACM0"
in /etc/gnss-share.conf
and restarted the gnss-share.service
.
sudo socat unix:///var/run/gnss-share.sock -
never puts something out. But I’m not sure if that is expected.
Does someone has an idea what is missing? Am I doing something wrong?
Here are some config files as well as other relevant things.
Part from /etc/geoclue/geoclue.conf
[network-nmea]
enable=true
nmea-socket=/var/run/gnss-share.sock
$ ls -al /var/run/gnss-share.sock
srw-rw---- 1 root geoclue 0 22. Jan 14:25 /var/run/gnss-share.sock
$ /usr/libexec/geoclue-2.0/demos/where-am-i
Client object: /org/freedesktop/GeoClue2/Client/1
New location:
Latitude: 48,7XXXX°
Longitude: 9,4XXXX°
Accuracy: 15867,000000 meters
Description: 3GPP
Timestamp: Sa 25 Jan 2025 20:18:24 CET (1737832704 seconds since the Epoch)
New location:
Latitude: 48,7XXXX°
Longitude: 9,4XXXX°
Accuracy: 15867,000000 meters
Heading: 0,000000°
Description: 3GPP + WiFi
Timestamp: Sa 25 Jan 2025 20:18:29 CET (1737832709 seconds since the Epoch)
New location:
Latitude: 48,7XXXX°
Longitude: 9,4XXXX°
Accuracy: 15867,000000 meters
Speed: 0,000000 meters/second
Heading: 0,000000°
Description: 3GPP + WiFi
Timestamp: Sa 25 Jan 2025 20:18:44 CET (1737832724 seconds since the Epoch)
$ sudo systemctl status geoclue.service
● geoclue.service - Location Lookup Service
Loaded: loaded (/lib/systemd/system/geoclue.service; static)
Active: active (running) since Sat 2025-01-25 20:20:33 CET; 53s ago
Main PID: 30944 (geoclue)
Tasks: 3 (limit: 3014)
Memory: 10.7M
CPU: 585ms
CGroup: /system.slice/geoclue.service
└─30944 /usr/libexec/geoclue
Jan 25 20:20:33 claudii systemd[1]: Starting Location Lookup Service...
Jan 25 20:20:33 claudii systemd[1]: Started Location Lookup Service.
$ sudo systemctl status gnss-share.service
● gnss-share.service - Manage access to and AGPS on GNSS devices
Loaded: loaded (/lib/systemd/system/gnss-share.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2025-01-25 20:11:21 CET; 16min ago
Docs: https://gitlab.com/postmarketOS/gnss-share
Main PID: 30733 (gnss-share)
Tasks: 11 (limit: 3014)
Memory: 13.0M
CPU: 7.218s
CGroup: /system.slice/gnss-share.service
└─30733 /usr/bin/gnss-share
Jan 25 20:11:21 claudii systemd[1]: Started Manage access to and AGPS on GNSS devices.
Jan 25 20:11:21 claudii gnss-share[30733]: Starting GNSS server, accepting connections at: /var/run/gnss-share.so>
Jan 25 20:14:39 claudii gnss-share[30733]: Client connected
Jan 25 20:14:42 claudii gnss-share[30733]: Client disconnected
Jan 25 20:18:23 claudii gnss-share[30733]: Client connected
Jan 25 20:18:53 claudii gnss-share[30733]: Client disconnected
Jan 25 20:20:40 claudii gnss-share[30733]: Client connected
Jan 25 20:20:48 claudii gnss-share[30733]: Client connected
Update 2025-01-26
“Spherical Triangle” gave me the tip to set device_driver="stm_serial"
in /etc/gnss-share.conf
on matrix chat. Yet it does not fix the issue.
stty < /dev/ttyACM0
speed 9600 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon -echo -echoe
$ cat /etc/gnss-share.conf
# Socket to sent NMEA location to
socket="/var/run/gnss-share.sock"
# Group to set as owner for the socket
group="geoclue"
# GPS device driver to use
# Supported values: stm, stm_serial
device_driver="stm_serial"
# Path to GPS device to use
device_path="/dev/ttyACM0"
# Baud rate for GPS serial device
device_baud_rate=9600
# Directory to load/store almanac and ephemeris data
agps_directory="/var/cache/gnss-share"