OS Location Services vs. Direct Connection to a GPS Receiver

9 Jul 2021

This article explains why you should connect your mapping or data-collection app directly to an external GNSS/GPS receiver such as the Geode instead of using OS location services.

Mapping and data-collection apps gather positioning data via two main routes:

              Method 1: Gleaning positioning data from location services in the operating system
             Method 2: Connecting directly to the external, professional-grade GNSS/GPS receiver 

Method 1: OS Location Services 

Location services in the OS are programmed to seek out the most readily available location information. This information may come from the internal recreation-grade receiver, Wi-Fi or cellular data, or an external device. Without alerting the user, the OS switches between these sources based on what is most readily available at a given moment. This is true even if you have told the operating system to rely on your external, professional-grade receiver for its location information.  

You can configure OS location services to substitute its own location information with positioning data from an external, professional-grade receiver. Apple iOS does this automatically as soon as the Bluetooth location device is paired and connected. Android calls it “Mock Location Provider.” Windows calls it “Windows Location Reporting.” The Geode Owner's Manual or GNS3 User's Manual explains how to set up both. However, you cannot guarantee that the OS will consistently rely on the external receiver as its source for positioning data. Apps that depend on OS positioning data do so blindly without any control over the accuracy or reliability of the data. The OS also does not even use algorithms that would allow it to show when a position is less than a meter in accuracy (as is provided by the Geode).

Remember, the OS prefers readily available location information. If you ever lose your connection to the external receiver or are in conditions that make it difficult for the external receiver to provide a position, the OS will fall back to the internal receiver or other sources for positioning data. It may also try to make the data appear more accurate with algorithms for smoothing, drift correction, or static hold. 

These changes in data sources and to the data itself are often imperceptible to the user during data collection. Only when you go to analyze the data later do you find that some points are highly accurate and others are questionable. 

For this reason, we recommend connecting your app directly to your external professional-grade GPS receiver.

Method 2: Direct Connection to an External Receiver

Many mapping and data-collection apps allow you to connect directly to an external professional-grade GNSS/GPS receiver. In this scenario, the app bypasses OS location services and exchanges data directly with the external receiver. The connection is usually wireless, but it is similar to “hard-wiring” your app to only use one reliable source for all its positioning data. 

Not all apps can do this. Connecting to an external receiver requires manually configuring your app. Only one app can connect directly at a time. If the app you are working with (or investigating) doesn’t have a process for connecting directly to the external receiver, it most likely doesn’t have this feature. 

A list of recommended apps that can connect directly to an external GNSS/GPS receiver is provided in Recommended Mobile GIS Data Collection Apps.

For Developers

If you are a developer looking to add this feature to your app, you may find the following links helpful: 



Original article from 2 Sep 2020:


Location services are provided in newer operating systems (OS) to allow software and even web developers an easy method to determine the physical location of your computer device (most often a smartphone or tablet). Usually, you must allow or grant permission to each specific app or web service to be given access to your location.

For Geode (or other GNSS/GPS) software developers, for positional accuracy, we believe it is instead best to have a direct connection to the Geode from within your app. This is true in Windows, Android, and iOS. Using location services with the Geode in any operating system can sometimes make your position fall back to poorer accuracy. Location services can fall back to integrated GPS, accelerometer/gyroscope/magnetometer, Wifi, cellular, or other alternative positioning methods if you ever lose connection to the Geode or are in conditions that do not allow the Geode to give you an accurate position. Location services may also apply position “smoothing” or “drift correction” as well as a “Static Hold” to make your position appear to be more accurate than it actually is (some GNSS/GPS receivers themselves may also apply such). This may occur with no warning and no other indication of when this has already occurred. Also, the method used by location services to show accuracy may not be able to reflect GPS/GNSS positioning of less than a meter. So unless the user is trying to use an NTRIP client (such as our latest Geode Connect) to feed differentially corrected data into your app, then it is often better to have a direct connection to the receiver.