Work towards a #GrapheneOS network location service is coming to fruition:

https://github.com/GrapheneOS/platform_build/pull/69

This is a major feature. Network location providers will allow faster results and greater accuracy with locations inside buildings, by default GrapheneOS uses the OS' satellite location (GNSS) for location, with an optional toggle for using Google's existing location service.

For users who want network location and not Google, this network location service would use a GrapheneOS proxy to Apple's WiFi positioning service. Users may choose to not use the proxy.

Eventually, we'll be making our own local database using scraped data from Apple's service to implement network location and SUPL for users who want network-based location without connecting to them.

Reply to this note

Please Login to reply.

Discussion

Very interesting!

Why is this requirement for apple / google services though?

What exactly is in that database, and how is that info generated?

These services use a collected database of WiFi access points or cell towers (we don't use this one yet) and their geographical locations to help return your location faster. It works by sending nearby BSSIDs (access point MAC addresses) to Apple, then Apple returning the geographical locations of other nearby SSIDs to you. The location is then calculated based on signal strength of the nearby access points.

That info is generated by Apple from iPhone users. You can technically opt out of this mapping by putting '_nomap' on your access point name.

Page 6 and 7 of this letter by Apple to a representative explains it more: https://web.archive.org/web/20101208141602/https://markey.house.gov/docs/applemarkeybarton7-12-10.pdf

You can assume Google's network location or other companies operate in a similar fashion. Mozilla had one called Mozilla Location Service but is now closed.

Sounds scary...

Why not remember the last known location, and assume the current location is in a similar area? That would speed up discovery substantially in many cases, without relying on that database.

Currently GrapheneOS uses GNSS for location by default instead of a network-based location service. GNSS doesn't have the device send anything out. There are plans to make this not depend on any provider by using scraped data stored locally. Most if not all of it is scraped already if I remember correctly, it just needs implementation.

The SSID should have never been static. A hierarchical deterministic process would complicate this form of surveillance/geolocating.

Does this work, even when the phone is in airplane mode with WiFi off?

No since enabling this feature connects to a GrapheneOS Proxy (or Apple if someone chooses). Making it local wouldn't though, which is a goal.

Thanks.

But even if its local, in airplane mode / no WiFi, how would it know which networks are closeby?

Oh, that's what you meant, assumed you meant having no access to the Wi-Fi rather than disabling it.

For WiFi being off, this would depend on if you enable the setting "Wi-Fi Scanning" in Settings -> Location. This is a toggle to scan for nearby WiFi networks even when WiFi is off. Need to enable it.

Very interesting, thanks a lot!

I'm still wondering if it's possible to just remember the last known location, and assume the phone didn't move too far since last use. This should decrease loading time substantially in most cases, even in full offline mode.