Issue to obtain GPS data with geoclue and ModemManager

Hi :ubuntu_mate: community !

I'm lost, and need some guidance - from a GPS device !

I need some help with mmcli (ModemManager) and getting precise data from a GPS capable modem device. Looks like geoclue is getting 10m precision from wifi using some firefox api, but I need cm precision that use to be possible thanks to geoclue and ModemManager.

I have disabled wifi location provider in /etc/geoclue/geoclue.conf

# Modem GPS source configuration options
[modem-gps]

# Enable Modem-GPS source
enable=true

# WiFi source configuration options
[wifi]

# Enable WiFi source
enable=false

After restarting geoclue agent, this looks to ignore wifi provided information :

/usr/libexec/geoclue-2.0/demos/where-am-i -a 8 send me :

New location:
Latitude:    50.xxxxxx° (i hashed it !)
Longitude:   2.xxxxxxxx° (i hashed it !)
Accuracy:    20000.000000 meters (here I see that my position is not accurate as I want)
Speed:       0.000000 meters/second
Heading:     90.000000°
Timestamp:   Sun 25 Apr 2021 10:52:40 PM CEST (1619383960 seconds since the Epoch)

I imagine that there is a issue with getting accurate position.
So going to mmcli, I'm running :
sudo mmcli --location-set-enable-signal -m 0

and next checking it with :

sudo mmcli --location-status -m 0
  ------------------------
  Location | capabilities: 3gpp-lac-ci
           |      signals: yes

Running again /usr/libexec/geoclue-2.0/demos/where-am-i -a 8 I see that geoclue is trying to deal with mmcli :

Every 2.0s: sudo mmcli --location-status -m 023:08:51 2021

  ------------------------
  Location | capabilities: 3gpp-lac-ci
           |      enabled: 3gpp-lac-ci
           |      signals: yes

But I don't receive any valuable data. My modem looks providing 3gpp-lac-ci protocols but gps-nmea and gps-raw (required for getting GPS data) are missing.

But my Modem is 3G capable. It is a Ericsson Lenovo H5321 gw, attached to the OS by those :

ls /dev/ttyACM*
/dev/ttyACM0  /dev/ttyACM1  /dev/ttyACM2

Sending AT*E2GPSCTL=1,5,1 and AT*E2GPSNPD initialize the GPS and start sending the GPS data :

Evermore, gpsd is able to get GPS data and evaluate location from this card with accuracy of some cm :slight_smile:


I'm running out of ideas ...

My setup is : Ubuntu Mate 20.04 on a Thinkpad x131e with a Lenovo Thinkpad UMTS-Module - Ericsson H5321GW

Do someone have some ideas how make geoclue to get data from gpsd or even better, to make mmcli to use my modem GPS correctly ?

Thanks in advance ! :slight_smile:

1 Like

Hi :slight_smile:
This is finally a missing feature inside ModemManager.

The feature has been requested 3 months ago and we are now waiting this to get implemented :