Quectel: EG25-G: XTRA GPS data
Description
The Quectel EG25-G modem in the PinePhone has an integrated GPS with XTRA assistance to make it faster acquiring GPS locks.
ModemManager has support to upload the assistance data using mmcli -m any --location-inject-assistance-data=<PATH>
.
However, when executing this command, an error is returned:
error: couldn't inject assistance data: 'GDBus.Error:org.freedesktop.org.ModemManager1.Error.Core.Unsupported: Cannot inject assistance: unsupported'
I looked into the ModemManager logs and during probing it fails to determine XTRA support through QMI:
[2668]: [/dev/cdc-wdm0] Sent generic request (translated)...
<<<<<< QMUX:
<<<<<< length = 12
<<<<<< flags = 0x00
<<<<<< service = "loc"
<<<<<< client = 1
<<<<<< QMI:
<<<<<< flags = "none"
<<<<<< transaction = 2
<<<<<< tlv_length = 0
<<<<<< message = "Get Predicted Orbits Data Source" (0x0036)
[2668]: [/dev/cdc-wdm0] Received message...
<<<<<< RAW:
<<<<<< length = 20
<<<<<< data = 01:13:00:80:10:01:02:02:00:36:00:07:00:02:04:00:00:00:00:00
[2668]: [/dev/cdc-wdm0] Received generic response (translated)...
<<<<<< QMUX:
<<<<<< length = 19
<<<<<< flags = 0x80
<<<<<< service = "loc"
<<<<<< client = 1
<<<<<< QMI:
<<<<<< flags = "response"
<<<<<< transaction = 2
<<<<<< tlv_length = 7
<<<<<< message = "Get Predicted Orbits Data Source" (0x0036)
<<<<<< TLV:
<<<<<< type = "Result" (0x02)
<<<<<< length = 4
<<<<<< value = 00:00:00:00
<<<<<< translated = SUCCESS
[2668]: [/dev/cdc-wdm0] Received message...
<<<<<< RAW:
<<<<<< length = 20
<<<<<< data = 01:13:00:80:10:01:04:02:00:36:00:07:00:01:04:00:01:00:00:00
[2668]: [/dev/cdc-wdm0] Received generic indication (translated)...
<<<<<< QMUX:
<<<<<< length = 19
<<<<<< flags = 0x80
<<<<<< service = "loc"
<<<<<< client = 1
<<<<<< QMI:
<<<<<< flags = "indication"
<<<<<< transaction = 2
<<<<<< tlv_length = 7
<<<<<< message = "Get Predicted Orbits Data Source" (0x0036)
<<<<<< TLV:
<<<<<< type = "Indication Status" (0x01)
<<<<<< length = 4
<<<<<< value = 01:00:00:00
<<<<<< translated = general-failure
[2668]: <warn> [1617615243.551701] [modem0] couldn't load supported assistance data types: LOC service: general failure
This causes to set assistance support to MM_MODEM_LOCATION_ASSISTANCE_DATA_TYPE_NONE
and the above DBus error.
-
This is fixed if
AT+QGPSXTRA=1
is send to the modem first to enable XTRA support. The module must be fully rebooted before it takes effect. Should ModemManager apply this AT command automatically in the Quectel plugin or is that up to the user? -
After applying this AT command I could upload the XTRA data, but not all types...
- xtra2.bin (GPS+GLONASS): http://xtrapath1.izatcloud.net/xtra2.bin
- xtra3grc.bin (GPS+GLONASS+BeiDou): http://xtrapath1.izatcloud.net/xtra3grc.bin
- xtra3grcej.bin (GPS+GLONASS+BeiDou+Galileo): http://xtrapath1.izatcloud.net/xtra3grcej.bin
Not sure why the one with Galileo fails (same error as point 1)... All GNSS systems are enabled using AT commands and they are also set using AT commands to expose all NMEA messages they support.
-
Should ModemManager enable all GNSS systems using AT commands in the Quectel plugin or is that up to the user?
-
The XTRA time is not updated, I still have:
pine64-pinephone:/home/dylan# echo 'AT+QGPSXTRADATA?' | atinout - /dev/EG25.AT -
+QGPSXTRADATA: 0,"1980/01/05,19:00:00"
So should we inject this as well in ModemManager?
If one of these things are up to the user, we can just add them to the eg25-manager to setup these things.