(Why) Do I need Network-based location? (specifically: µG UnifiedNlp)

I just installed microG in FP Open following this guide (point 5.5).

I was wondering why it stresses the installation and configuration of an NLP backend so much. Why would I want that? If I need my position for navigation, I will turn my GPS on.

So, can I just leave it out? And if I do need it, which backend should I install (Apple, Mozilla, … (what’s the difference, except for the provider of course))?

Also, could it be that the guide is a bit outdated?

for me the “Self check” lists the following points:

  • “Android version supported”
  • “System supports location provider”
  • “UnifiedNlp is registered in system”
  • “Location backend(s) set up”
  • “Network-based location enabled”
  • “UnifiedNlp has known location”
  • “UnifiedNlp provides location updates”

A NLP can speed up your location fix and you can even get an estimated location in areas without GPS reception.

To answer the question in your topic title: It depends on why you installed microg in the first place. The part about installing microg from the guide you used was originally written for getting Pokemon Go to run on FP Open. So some apps do need to believe that Google’s NLP is installed (same package name), but in most cases you probably won’t need it.

If you decide to install it I recommend using a combination of backends for both Wifi and Cell-Towers as well as both online and offline databases.

I’ll remove the mention of the names of the items as they change constantly.

Oh and I removed the locationdatabases tag from the topic as this is one of the tags used to quickly link to one specific topic. Hope you don’t mind.

1 Like

thanks for your reply!
For now I installed it to be able to use Signal w/o PlayServices installed.

Signal installed successfully but complains about my phone not supporting google play services. I almost finished setting up microG but after setting up “LocalGsmNlpBackend” as the location backend in UnifiedNlp the self-check still tells be that it has no last known location and no location was provided within 10 seconds (the other points all have check marks).

i checked with osmand and satstat: now that i set it up, it is indeed using the GSM for localization, so i don’t really unterstand why it’s not working :frowning:

no, of course, thanks! =)

do you think this post should go somewhere else (µG discussion or sth like that)? if yes, could you move it there? thanks again! :slight_smile:

Just for the sake of completion, I’ll explain to you how location is achieved by Android OS.

There are two qualities of location, each with pros and cons:

  • GPS location, directly accessing GPS satellites, so you need to be outdoor. This method is more accurate (metters) and doesn’t need an internet connection, but it’s slow and energy consuming.
  • Network location, which is an approximation (geometry triangulation) based on which cell towers and wifi points your phone has access to. This method is quicker and less energy consuming, but is less accurate and requires a location provider, usually by a internet connection (and losing privacy at the same time)

Android uses a mix of the two methods by default, which is called fused. But, as Android is a Google product, Google is obviously the one and only network location provider. Google Network Location service is part of Google Mobile Services, which is something FP Open doesn’t have.

(I’ll finish this later, but I think you can already make up and idea of why microG/UnifiedNLP is a must for FP Open)

2 Likes

Did you configure the backends and reboot afterwards?
Oh and did you set location mode to high accuracy?

I don’t think those two unchecked points are relevant for Signal though. :confused:

I think it’s ok to leave it as a separate topic, so others with the same question can find it faster.

hey, thanks! (i knew that much but it’s nice to have it here for future readers :slight_smile: )

@paulakreuzer: i now additionally set up the Openbmap backend and both this and the GMS one use offline databases. (edit) And yes, I rebooted after setting them up. (/edit) They obviously work, as I get an instant rough fix in osmand and a bit later the gps localizes me more accurately. also UnifiedNlp says that location backends are set up.

I just realize: I did not do the step with the signature spoofing, since on the µG website they do not mention this (and everything installed fine without it). But could this be the problem afer all? Or was this a step that was formerly required to get µG installed?

edit2: just to be clear. there’s 2 issues here. the first one is that the self-check of UnifiedNlp does not see any location (although satstat and osmand do) and the second one is that i cannot use signal (it complains at the point where you register your phone number).

1 Like

It is a step needed for apps like Poke Mongo. I don’t know if it’s needed for Signal.

If you get a location in OSMand with location mode to energy saving, than you can ignore this.

yes, this also works.

ugh, i think it’s the signature thingy then. this looks like a big hassle. first get root then lose it… hmmm. well i’ll give it a try.

do you know whether i will be able to use the FP Open Updater afterwards? (Or do I need to do this whole procedure (or is this only for XPosed?))

The guide looks more complicated than it is and contains some points that are only needed for specific modifications.
Basically you’ll just have to flash everything you flashed before via TWRP again.

For microG to impersonate Google Services, it needs signature spoofing. Just use Tingle.

To know more about the Android security model, or why this is needed, check other posts of mine like this one quoted below:

Sadly, Signal and other bunch of free apps depend on crappy proprietary GMS to work.

About your update concerns, Tingle patch (i.e. modifies) the system, so when you update the system to a newer, pristine version of FP Open, you’ll need to patch it again. But so far, you won’t have any other problem with the Fairphone Updater.

2 Likes

and will i have to remove tingle before being able to update or just reinstall after the update?

also, i was wondering – is it only necessary for the installation of the app? because then i could also install it and forget about it (after the next update) :slight_smile:

Nop, you can update without reverting your modifications, but you lose them.

As of now (current Android state), you can install any app on the ecosystem (this wasn’t true some years ago). On runtime, those apps check if you have Google services, or a reimplementation like microG, and they use them if available. If not, then can occur two things:

  • The app crashes, when initializing or at some step (Signal’s registration)
  • The app shows an avoidable message of "lack of GMS” and can’t use some functions (usually push messages, so you don’t get notifications on Slack or Signal)

You can patch the system with Tingle, install microG, register on Signal, and update the system eventually. Then you can use Signal because you are already logged in, but you won’t receive push notifications.

Privacy note: microG still contact the Google Push Messaging servers and Google receive a bunch of metadata of your communications. However, with microG you can control that with the relatively new push messaging settings and by inspecting the code, which is completely open source.

2 Likes

hey @Roboe, thanks for all your replies and info again! :slight_smile:

so i will need to keep signature spoofing even after the signal registration :\

I just tried to use tingle and I am getting “ERROR: No device detected! Please connect your device first.” after selecting option 1 (after running “python3 main.py”).
I already tried to change the “connected as”-option of the phone (MTP, PTP, mount sd card) but nothing worked. usb debugging is enabled and i allowed root access for adb.

– does anybody have an idea what could be the problem? (@ale5000?)

1 Like

ok, i found it :stuck_out_tongue:

i needed to add my phone ID to ~/.android/adb_usb.ini
(see here – unfortunately only in german)

–> find it via “lsusb” (run it, disconnect the phone, run it again – you see which ID is missing, that was the phone ;))

add “0x” + the first 4 characters of the ID (before the colon)
so, e.g. “0x1234” to the file (create it if it does not exist)

adb doesn’t work if you have any of these USB modes enabled, in my case. Just disable the one you have enabled (uncheck the active tick) to clear a path to ADB to work

@jme: It should have something to do with usb debugging not enabled correctly or missing drivers in the pc.

Does your pc see the phone and is it able to navigate in the phone?
Does your phone display a notification of usb debugging enabled?

1 Like

it works now (se above) … the phone was still in PTP mode… so that was ok :wink:

hey, thanks for the instant reply! :slight_smile:
i figured it out – see above. needed to add my phone id for adb to work first.

1 Like

Thank you for the creative solution! That was something new here in the forum, I think.

yeah, well… signal still does not work.
the tingle patching reported that it was successful – so i guess it must be the issue from above: UnifiedNlp’s self-check does not have a known location :frowning: