Skip to main content

Connecting a Receiver

Mapit GIS supports external GNSS receivers for centimetre-level positioning accuracy. On Android, you can connect a receiver via Bluetooth (most common), TCP/IP (network-connected receivers or NTRIP streams), or via a third-party companion app that pipes location data through Android's mock location system. On iOS, only TCP/IP connections are currently supported.

Only one connection method can be active at a time - enabling one automatically disables the others.

Bluetooth Connection

Most external GNSS receivers communicate over Bluetooth using the Serial Port Profile (SPP). This is a serial data stream that carries NMEA sentences from the receiver to the app.

Pairing a Device

  1. Open Settings from the main menu.
  2. Navigate to External GNSS.
  3. Toggle Paired Bluetooth GPS on.
  4. The app requests Bluetooth permissions (BLUETOOTH_CONNECT and BLUETOOTH_SCAN on Android 12+).
  5. A device picker dialog appears listing all bonded (paired) Bluetooth devices by name and MAC address.
  6. Select your receiver. The device address and name are saved for future sessions.
tip

Pair the receiver with your Android device first via Android Settings > Bluetooth before opening Mapit GIS. The app only shows already-paired devices - it does not perform Bluetooth discovery.

Connection Process

When a Bluetooth GNSS session starts, the app attempts to connect using four methods in sequence, with automatic retries:

MethodDescription
Device UUIDUses the UUID advertised by the receiver itself
Standard SPP UUIDUses the standard Serial Port Profile UUID (00001101-0000-1000-8000-00805F9B34FB)
Insecure RFCOMMUses an insecure RFCOMM channel - helpful for older receivers that reject secure connections
Direct channelOpens RFCOMM channel 1 directly via reflection - a last-resort fallback for receivers that do not advertise any UUID

Each method is retried up to twice before the app moves to the next. Once a connection is established, the app begins reading NMEA sentences from the receiver's data stream.

Data Timeout

If no data arrives for 5 seconds after the connection is established, the app treats the connection as stale and disconnects. This prevents the app from appearing connected while the receiver has actually gone to sleep or out of range.

Foreground Service

While connected, the app runs an External GNSS foreground service to prevent Android from killing the connection during background operation. A persistent notification confirms that the GNSS connection is active. This service also holds a CPU wake lock to keep the processor running when the screen is off.


TCP/IP Connection

For network-connected GNSS receivers, NTRIP casters, or GNSS data relayed from a PC, you can connect over TCP/IP.

Configuration

  1. Open Settings > External GNSS.
  2. Toggle TCP GPS on.
  3. Enter the Server hostname or IP address (default: localhost).
  4. Enter the Port number (default: 52003).

Socket Configuration

The TCP connection is tuned for real-time GNSS data:

SettingValuePurpose
Keep-aliveEnabledPrevents router/firewall timeout on long sessions
TCP no-delayEnabledDisables Nagle's algorithm for low-latency NMEA delivery
Read timeout90 secondsTolerates quiet periods in NTRIP streams while detecting dead connections

Auto-Reconnect

If the TCP connection drops unexpectedly, the app automatically attempts to reconnect:

  • Up to 3 retries with exponential backoff (2 s, 4 s, 8 s).
  • A toast message shows "Connection lost, reconnecting (attempt X)...".
  • If all retries fail, the app falls back to the internal GPS.

Foreground Service

The TCP foreground service additionally acquires a Wi-Fi lock (low-latency mode) and registers a network callback to prevent Android from disconnecting the Wi-Fi radio during the session.


Third-Party Companion Apps

Some GNSS manufacturers provide their own companion apps that deliver corrected positions via Android's mock location system. Mapit GIS can read location data from these apps instead of connecting to the receiver directly.

Supported Apps

AppManufacturerPreference
Eos Tools ProEos Positioning Systems (Arrow series)Eos Tools Pro
Zeno ConnectLeica Geosystems (Zeno series)Zeno Connect
Trimble Mobile ManagerTrimbleTrimble Mobile Manager
Trimble SPaceTrimble (DA2 receiver)Trimble SPace
SXblue ToolboxGeneq (SXblue series)SXblue Toolbox

How It Works

  1. Open Settings > External GNSS.
  2. Toggle the appropriate companion app option on.
  3. The companion app must be running and delivering mock locations via LocationManager.GPS_PROVIDER.
  4. Mapit GIS reads the standard Android Location object and extracts extended data from the extras bundle - including DOP values, satellite information, RMS accuracy, fix type, differential correction age, and more.
tip

Companion apps typically handle RTK corrections, NTRIP connections, and antenna calibration internally. The corrected position is then delivered to Mapit GIS as a mock location.

Extended Data from Companion Apps

In addition to standard position and accuracy, Mapit GIS reads the following from the location extras bundle when available:

  • DOP values: HDOP, VDOP, PDOP, GDOP, TDOP
  • RMS accuracy: HRMS, VRMS, 3D RMS
  • Satellite info: satellites in use, satellites in view, PRN IDs, elevation, azimuth, SNR, constellation type
  • Differential data: correction age, correction station ID, fix type
  • Height data: MSL height, geoid undulation, antenna height
  • Receiver info: model name, SBAS correction system

Mock Location Provider

When connected via Bluetooth or TCP/IP, Mapit GIS can optionally act as a mock location provider itself. This means the external GNSS position is injected into Android's location system, making it available to all other apps on the device - not just Mapit GIS.

To use this feature, you must enable Developer Options on your Android device and set Mapit GIS as the mock location app under Developer Options > Select mock location app.

caution

Mock location requires Developer Options to be enabled. On managed (enterprise) devices, this setting may be restricted by your IT administrator.


Connection Priority

If multiple connection options are enabled simultaneously (which is not recommended), the app resolves them in this priority order:

  1. Internal GPS (default)
  2. Bluetooth GPS
  3. TCP GPS
  4. Eos Tools Pro
  5. Zeno Connect
  6. Trimble Mobile Manager
  7. SXblue Toolbox
  8. Trimble SPace (highest priority)

The last enabled option in this list takes precedence.