GPS location support through concentratord

Viewed 32

Hi,

For my home setup I have an RPi3 + Dragino PG1301 shield. It has GPS support, but seemingly only emits NMEA_RMC type messages.

I am used to pkt_forwarder + chirpstack-mqtt-forwarder / chirpstack-gateway-bridge, which emits a status message every so often. This message includes the location (lat/lon/alt) of the gateway, which I find extremely useful for administrative purposes.

However, I thought I'd give Chirpstack Gateway OS a try, which uses concentratord. However, whatever I do, I can not get concentratord to produce a status message containing the location details.

the test_loragw_gps utility does however provide me with the exact coordinates and altitude (which is negative; I live in the Netherlands).

Additionally, running concentratord with TRACE loglevel yields the following debug messages:

Tue Feb 17 23:55:52 2026 user.debug chirpstack-concentratord-sx1301[4188]: Processing NMEA RMC
Tue Feb 17 23:55:52 2026 user.debug chirpstack-concentratord-sx1301[4188]: GPS coordinates sync completed, coords: Some(Coordinates { latitude: 51.XXX, longitude: 4.YYY, altitude: -8 }), coords_error: Coordinates { latitude: 0.0, longitude: 0.0, altitude: 0 }

(as well as a GPS time reference is not valid warning message, also each and every second, but that makes sense even though it's spammy).

Looking at the source code of concentratord and chirpstack-api, it does seem that the location should be included in the status message, but it is not:

{
  "gatewayId":"b827ebfffed92f77",
  "time":"2026-02-17T22:56:58.195107402+00:00",
  "metadata":{
    "concentratord_version":"4.6.0",
    "hal_version":"Version: 5.0.1;",
    "config_version":"717c8d9dd858e8b0",
    "model":"pi_supply_lora_gateway_hat",
    "mqtt_forwarder_version":"4.5.1"
  },
  "dutyCycleStats":{
    "regulation":"ETSI_EN_300_220",
    "window":"3600s"
  }
}

(output captured using mosquitto_sub -t 'eu868/gateway/#' on my chirpstack VM)

What am I doing wrong here?

Thanks, Martijn

1 Answers

The Semtech HAL only supports uBlox GNSS modules, as it uses the binary UBX protocol for accurate time synchronization.

While your GNSS module does provide location data, it does not seem to send UBX NAV-TIMEGPS payloads (binary). Therefore only the location data gets set and this function does not return location data:

https://github.com/chirpstack/chirpstack-concentratord/blob/master/chirpstack-concentratord-sx1301/src/handler/gps.rs#L259

Just to let you know, I'm planning to refactor GNSS support in the Concentratord. There seems to be an issue in the Semtech HAL that could cause the GPS time to drift. My plan is to move the GNSS handling to the Concentratord (if possible) instead of feeding it to the Semtech HAL.