Wiki

Technical reference for system integrators and engineers.

A-GNSS

A-GNSS (Assisted GNSS) is an outdoor positioning protocol which combines the standard GNSS functions with L-MESH and Unified TDMA features. Such features are used for arbitration between indoor and outdoor location tracking, as well as the orbital data sync for faster GNSS positioning.

GNSS data is one of the position kinds on the platform. It travels on its own /GNSS topic, with Source: "GNSS" as a field inside the payload — not as a discriminator on the shared /RTLS topic.

GNSS data record

GNSS data is carried as Sensor TLV record type 0x07, 20 bytes:

GNSS data record — type 0x07, 20 bytes type len latitude int32 longitude int32 altitude metres speed cm/s course · sats · hdop Sample data 42.6977000 23.3219000 562 m 138 cm/s 87.10° · 9 · 1.2 Record length is fixed at 20 bytes; a decoder verifies the length and skips a mismatch.
The record is dated by GnssUtc, which comes from the satellites and has one-second resolution.

Assistance

Assistance takes two forms, and they act on different terms of the same cost. One decides whether to acquire; the other decides how long acquisition takes.

Site arbitration — whether to acquire

A GNSS receiver underground cannot fix, but it will keep trying, and it draws its acquisition current for as long as it does. The largest saving available is therefore not a faster fix but no fix attempt at all.

Hearing L-MESH is positive evidence of being under cover: the chain is installed where satellites are not reachable. That evidence feeds the site-mode decision described under site arbitration below, so the receiver stays unpowered while a device is in the tunnel and is brought up when the chain falls away.

This is what L-MESH adds over the earlier arrangement. Indoor evidence previously came from TDMA sync beacons, which requires UWB infrastructure to be present. A battery mesh chain supplies the same evidence in drifts that have no UWB anchors at all — so suppression works wherever the mesh reaches, not only where ranging does.

Acquisition assistance — how long it takes

A receiver with no current orbital data has to find satellites by searching, then read their ephemeris from the satellites themselves — a 50 bit/s downlink. That is the cold start, and it is slow because of the bit rate, not the processing.

StartReceiver holdsTime to first fix
Coldnothing usabletens of seconds
Warmalmanac, rough time and positionshorter, still tens of seconds
Hot — assistedvalid ephemeris, time and positiona few seconds
The receiver draws roughly the same current whether it is searching or tracking, so time to first fix is the energy cost of a fix. Shortening acquisition from tens of seconds to a few is close to an order of magnitude per fix, and it repeats on every wake.

Assistance is a downstream broadcast: it is the same data for every device, so it is sent once into the chain and relayed outward rather than requested per device. It rides slots L-MESH is already scheduled to use, which is what makes the distribution close to free.

ElementDescribesRefresh
Ephemerisprecise orbit of each satellitehours — the element that sets the distribution cadence
Almanaccoarse constellation stateweeks
Time and rough positionwhere and when to lookcontinuous — the schedule already carries time

Ephemeris validity is the design constraint. Assistance older than its validity window is worse than none, because the receiver spends time trusting it before falling back to a search. The distribution cadence follows from that window, not from how often positions are wanted.

The two forms compose. While the chain is audible, mesh coverage suppresses the receiver and assistance accumulates unused; when the chain falls away, the device surfaces already holding valid ephemeris and fixes in seconds rather than searching from cold.

Availability

Assistance is currently available on Wristband Pro. The GNSS record format, modes and parameters apply to every GNSS-capable device, assisted or not. Devices out of contact with the chain fall back to unassisted acquisition — assistance shortens a fix, it is never required for one.

Live and buffered modes

GNSS mode (parameter 0x80, GATT 0x5132) selects what happens to each record:

ValueModeBehaviour
0Liveeach record is transmitted as it is taken
1Buffer & syncrecords accumulate in flash and are handed over when a reader appears

Buffered records are read out over the GATT Data Sync drain with {"cmd":"records","type":"gnss"}. On anchors and tags, gnss is the store selected when a command omits type. Chunks are encoded with the gnss.proto schema (GnssRecord, GnssRecordChunk).

Parameters

IDGATTSettingValues
0x7E0x512EGNSS enable0 off, 1 on
0x7F0x512FUpdate rate0 = 2 s, 1 = 10 s, 2 = 30 s, 3 = 60 s
0x800x5132GNSS mode0 live, 1 buffer & sync
0x830x5135Site mode0 auto, 1 force indoor, 2 force outdoor

Site arbitration

On devices carrying both a UWB radio and a GNSS receiver, the two are not operated simultaneously. Site mode (0x83) controls the selection:

  • Force indoor — the UWB rail is used.
  • Force outdoor — the GNSS rail is used.
  • Auto — the device selects from observed evidence: a run of consecutive TDMA sync beacons or L-MESH frames indicates indoor coverage, a run of satellite epochs with sufficient satellites indicates outdoor. Single events do not trigger a switch. A provisional switch to the UWB rail is confirmed once ranging reaches at least two anchors. Where both are available, the UWB rail is selected.

MQTT payload

GNSS data reaches the backend on the dedicated /GNSS topic, carrying Source: "GNSS" in the payload:

{"LocatorID":"AN0042","TagID":"de:ad:be:ef:00:17","Seq":1834,"Source":"GNSS",
 "Lat":42.6977000,"Lon":23.3219000,"AltM":562,"SpeedCmS":138,
 "CourseCdeg":8710,"Sats":9,"HdopX10":12,
 "GnssUtc":1755262798,"Timestamp":1755262800123}
KeyUnit
Lat, Londegrees
AltMmetres
SpeedCmScentimetres per second
CourseCdegcentidegrees (8710 = 87.10°)
Satssatellite count
HdopX10HDOP × 10 (12 = 1.2)
GnssUtcseconds — dates the GNSS data
Timestampmilliseconds — arrival at the anchor

GnssUtc dates the GNSS data; Timestamp records arrival and includes link and broker latency. See MQTT.