MerginMaps / MerginMaps/mobile

Add support for connecting external GPS receivers via BLE (Bluetooth 4.0+)

Open
#2,201 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement GPS
Dominant language
C++
Stars
388
Forks
87
Avg merge
2d 7h
Merged PRs (30d)
20

Description

Currently, Mergin Maps supports a connection of external receivers through basic Bluetooth technology.
Basic Bluetooth API is supported on Android, Windows, Linux and Mac, but not on iOS due to security concerns.

However, there is a "new" Bluetooth standard called BLE (4.0+). It has multiple advantages over the classic Bluetooth and is supported also by iOS API. Connecting a device that is shipped with BLE is, however, not the same as connecting a device with classic Bluetooth, so we need to do several changes in the connection process (basically adding a new position provider).
There already are GPS devices that work with BLE, for example, GEODE GNS3 (https://junipersys.com/products/geode).

By using also the new BLE API, we should (in theory, needs to be proved via prototype) be able to:
- connect [MFi certified](https://mfi.apple.com/) GPS receiver directly from Mergin Maps on iOS without the need to go through operating system and therefore see more advanced GEO position information like a number of satellites, precision, hdop, ...
**UPDATE:** MFi uses [external accessory Apple framework](https://developer.apple.com/documentation/externalaccessory/) built on top of the classic BT ~ we'd need objc (native) code here.
- support the latest GPS receivers as I expect those to be shipped with the new BLE standard

Note: It is currently not possible to connect GPS receiver with BLE to any supported platform by Mergin Maps

See [this reference](https://doc.arcgis.com/en/collector-classic/ios/create-maps/gps-receiver-support.htm#:~:text=device%27s%20location%20service.-,GPS%20receivers%20supported%20on%20iOS,-To%20directly%20connect)
See [discussion here](https://merginmaps.slack.com/archives/C02D4SQ3DAT/p1659643893686599)

Related to #1893
Related to https://github.com/MerginMaps/mobile/issues/2214

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the existing classic Bluetooth connection process and the related issues #1893 and #2214, then investigate the BLE APIs for the supported platforms. A prototype should establish whether a BLE GPS receiver can connect and expose position details such as satellite count, precision, and HDOP.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, cpp, ios
Domain
mobile-dev, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.