Connect the Geode GNSS Receiver to iOS App

18 Feb 2025

There are two methods to connect the Geode GNS3 or GNS2 receiver to an iOS app.

Method 1: Connect through Core Location API

One method is to pair the Geode receiver through Bluetooth™ to the iOS device and access the data through the Core Location API. As long as the Geode receiver is turned on, paired, and within range, it takes the place of the integrated location sensor for access via the Core Location API. The disadvantage of this method is that your iOS app won't have true accuracy data, or raw NMEA stream, just the location data provided through the iOS location manager, namely Lat/Long, Altitude, Velocity, and Heading. 

For more information, see Core Location | Apple Developer Documentation and OS Location Services vs. Direct Connection to a GPS Receiver.

Method 2: Develop an App that Communicates with the Geode

Apple places controls on how apps that are made for iPhone and iPad communicate with external accessories like the Geode GNSS receiver. If an app only needs access to Location Services, no additional changes are needed. If the app needs to communicate directly with the Geode receiver—for full NMEA data, accuracy information, and receiver configuration—specific modifications in the app are necessary.

Geode MFi Compliance and Certification

Both the Geode and Geode Connect for iOS comply with the Apple MFi Program, which means: 

Develop iPhone and iPad App to Communicate with Geode

iPhone and iPad apps must comply with requirements in the Apple Developer Program. In addition to Apple's requirements, apps that need to communicate directly with the Geode receiver as an external accessory must do the following:

1. Specify protocol names for the Geode.

  1. In the app, go to Info.plistUISupportedExternalAccessoryProtocols.
  2. Enter the following value: com.junipersys.geode
    This key value allows the app to connect directly with the Geode.

Apple provides comprehensive documentation on the External Accessory framework. For more information, see Apple Documentation > External Accessory.

2. Submit an MFi Product Plan.
As part of the MFi approval process, Apple requires that associated apps and accessories submit MFi Product Plan ID (PPID) information for both parties. An app wanting to connect with the Geode must include the Juniper Systems Geode MFi PPID in the app metadata Review Notes field.

Juniper Systems must also submit PPID information for the app. Without MFi PPID submissions from both your company and ours, Apple will not approve the app for distribution in the App Store.

To initiate this exchange of information, contact Juniper Systems at techsupport@junipersys.com and provide the following details about your iPhone or iPad app:

Communicate with the Geode using EAAccessoryManager

Once authorized, developers can communicate directly with the Geode via an EASession using the EAAccessoryManager, as follows.

  1. Find the Geode receiver in the accessory manager (should match the protocol we provide).
    https://developer.apple.com/documentation/externalaccessory/eaaccessorymanager
  2. Get the EAAccessory instance from the manager.
    https://developer.apple.com/documentation/externalaccessory/eaaccessory
  3. Use the EAAccessory instance to connect via an EASession.
    https://developer.apple.com/documentation/externalaccessory/easession
  4. Sample code in Objective C:
    https://github.com/rvndios/EADemo

With direct access to NMEA data, you can use RMS data, such as from the GST string, to achieve a better indication of statistical location accuracy. If you have limited or no access to real-time data from a Geode GNSS receiver, you can use the following samples.

Sample Code Description
Geode-NMEA-Messages-sample.txt Uses Default NMEA-0183 version 4.1 data with the default settings applied. Ends with custom battery level message.
Geode-GST-RRE-only-sample.txt Shows only the GST and RRE messages enabled for statistical accuracy information. Ends with custom battery level message.

Parsing of NMEA Message Components

The Geode GNS3 contains the Hemisphere OEM P34 receiver, and the Geode GNS2 contains the Hemisphere OEM P206 receiver. The Hemisphere GNSS Technical Reference Manual shows the parsing for all of the components of each NMEA message, including GST and RRE for indicating sub-meter horizontal positioning accuracies.

The following sample code from Geode Connect shows how EHE (Estimated Horizontal Error) is determined based on the NMEA RRE string data (or fallback to GST) from the Geode.

if (LatitudeErrorEstimation != null && LongitudeErrorEstimation != null)
{
      return Math.Sqrt(Math.Pow(LongitudeErrorEstimation.Value, 2) + Math.Pow(LatitudeErrorEstimation.Value, 2));
}

 

 

Reviewed & Approved: CB, JF, 10FEB2025