The original version of this document is located at https://docs.qfield.org/how-to/navigation-and-positioning/gnss
QField displays live positioning data using several sources:
Tip
Use an external GNSS antenna for high-accuracy surveying, as internal mobile GNSS hardware is limited to roughly 5 meters of accuracy.
External receivers also provide accurate elevation measurements alongside 2D coordinates.
Note
QField requires external GNSS devices to output positioning data in the EPSG:4326 (WGS 84) coordinate reference system.
Customized device output CRSes are not supported and will cause coordinate shifts.
When positioning is active, QField displays your current location in blue on the map canvas:
Configure positioning parameters in QField settings under the Positioning tab.
Workflow
QField functions as an RTK client to process differential corrections when connected to an RTK provider over NTRIP.
Workflow



Lock the crosshair to your GNSS location to place vertices precisely at your position.
Select one of three position-following modes:

Workflow
When digitizing features on vector layers with M coordinate dimensions, QField records measurement values for vertices digitized while locked to GNSS positioning.
By default, the M value records timestamps in milliseconds since epoch.
Change the M value source in positioning settings:
Set minimum accuracy thresholds for feature digitizing.
Positioning quality displays using color-coded indicators (red for bad, yellow for ok, green for excellent) on the GNSS button.

Set accuracy thresholds in positioning settings.
Note
When Enable accuracy requirement is active, QField blocks digitizing vertices locked to GNSS positioning while accuracy indicators are red.
Enter antenna pole heights in positioning settings.
QField subtracts the antenna pole height from measured GNSS elevation values automatically.
Correct ellipsoidal heights to orthometric elevations using vertical grid shift files.
Place vertical grid shift files in the QField app folder [App Directory]/QField/proj.
Once installed, select the file under Vertical grid shift in use in positioning settings.
When using vertical grid shifts with external receivers, disable Use orthometric altitude from device.
Supported grid shift file formats include:
.tif, .tiff).gtx).gsb).byn)Workflow
nlgeo2018.gtx grid file from the NSGI Website. .gtx file into [App Directory]/QField/proj.Workflow
chgeo2004_htrans_LV95.agr from the downloaded archive..agr to .gtx using QGIS:chgeo2004_htrans_LV95.agr as input and save as chgeo2004_htrans_LV95.gtx.
bash
qgis_process run gdal:translate --INPUT="/path/to/chgeo2004_htrans_LV95.agr" --OUTPUT="/path/to/chgeo2004_htrans_LV95.gtx"python
import processing
processing.run("gdal:translate", {
'INPUT': '/path/to/chgeo2004_htrans_LV95.agr',
'OUTPUT': '/path/to/chgeo2004_htrans_LV95.gtx'
})π± Fieldwork
Workflow
chgeo2004_htrans_LV95.gtx into [App Directory]/QField/proj on your mobile device.

Note
Displaying raw WGS 84 coordinates instead of project CRS coordinates indicates that a valid GNSS fix has not yet been established.
Store internal and external GNSS positioning details in attribute fields using QGIS expression variables.
Variables are commonly assigned as default values to record positioning quality metadata.
For example, record horizontal accuracy using @position_horizontal_accuracy.
Refer to the Expression Variables Reference for a complete list.
Elevation handling based on vertical grid shift settings (with antenna compensation disabled):
| Vertical Grid Shift in use | point Z Value z(geometry) | GNSS Device z(@position_coordinate) | QField Display | QField Label |
|---|---|---|---|---|
| None | Z ellipsoidal device value | Z ellipsoidal device value | Z ellipsoidal device value | Altitude: xxx.xxxx m |
| Orthometric from device | Z orthometric device value | Z orthometric device value | Z orthometric device value | Altitude: xxx.xxxx m (ortho.) |
| USER_Shift_Grid.GTX vertical grid shift |
Z shiftgrid value | Z ellipsoidal device value | Z shiftgrid value | Altitude: xxx.xxxx m (grid) |
Store longitude, latitude, and altitude automatically in feature forms using default expressions:
Workflow
longitude, latitude, altitude).x(@position_coordinate)y(@position_coordinate)z(@position_coordinate)Coordinates populate automatically when digitizing new features while locked to GNSS positioning.
Create a dedicated vertex log layer to record metadata for every digitized point:
Workflow


@position_* variables.π± Fieldwork
QField supports external GNSS receivers over Bluetooth, TCP, UDP, and serial connections.
Manage and switch between positioning devices in the Positioning settings menu.

Supported receiver connection interfaces by operating system:
| π€ Android | π iOS | πͺ Windows | π§ Linux | π MacOS | |
|---|---|---|---|---|---|
| Bluetooth | β | β | β | β | |
| TCP | β | β | β | β | β |
| UDP | β | β | β | β | β |
| Serial port | β | β | β | β |
(*) Windows supports Bluetooth receivers via virtual COM serial ports created by the operating system.
Supported NMEA sentences include GGA, RMC, GSA, GSV, GST, VTG, HDG, and HDT.
When connected to an external receiver, enable Log NMEA sentences from device to file to log raw NMEA sentences.
Logs save to [App Directory]/QField/logs..

Note
Disable NMEA logging when troubleshooting is complete to prevent filling device storage.
π± Fieldwork
Provide positioning data to QField using third-party Android mock location apps (such as Lefebure NTRIP Client).
Enable mock location options in Android developer settings to use external mock location providers.
π± Fieldwork
QField supports averaged positioning to calculate vertex locations across multiple sample fixes.
Workflow

Note
Using @gnss_* or @position_* variables with averaged positioning records average values across all collected samples.