GPS doesn´t work on FP Open OS

Ok. First, some clarifications:

  • FP Open OS is Android 5.1
  • Google Android monthly updates are security, only, BUT…
  • …their services (i.e. Google Mobile Services/Google Apps, which include Google Maps API) are updated on a rolling release base by themselves, separated from the system
  • The link provided describes an error found on Android 5.1 and Android 6.0 (both with Google Mobile Services), not only on the latter
  • Having an issue opened on Google Code doesn’t mean Google is aware of the supposed bug, and, as far as I’ve read, no Google staff has commented on it, neither
  • Picky one: only official version of Android available on the market are Nexus. I’m sure their market is not exclusively Nexus phones, :laughing: (but yes, definitely, their market is Android with GMS, not pure AOSP or near AOSP with microg, as in our case)
  • Another picky one: If the problem is Google’s… what does “Also this bug should be fixed witht the next version of our app. Can you check if you can update your app?” mean? :wink:

On the other hand, I’ve installed Outdooractive and checked the adb logcat output when crashing (same exact stack trace with device only, network location and high precission GPS settings):

E/AndroidRuntime(24582): FATAL EXCEPTION: main
E/AndroidRuntime(24582): Process: de.alpstein.alpregio.outdooractive, PID: 24582
E/AndroidRuntime(24582): java.lang.RuntimeException: Unable to resume activity {de.alpstein.alpregio.outdooractive/de.alpstein.activities.GMapActivity}: java.lang.IllegalArgumentException: provider doesn’t exist: fused
E/AndroidRuntime(24582): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2986)
E/AndroidRuntime(24582): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3017)
E/AndroidRuntime(24582): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
E/AndroidRuntime(24582): at android.app.ActivityThread.access$800(ActivityThread.java:151)
E/AndroidRuntime(24582): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
E/AndroidRuntime(24582): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(24582): at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(24582): at android.app.ActivityThread.main(ActivityThread.java:5254)
E/AndroidRuntime(24582): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(24582): at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(24582): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
E/AndroidRuntime(24582): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
E/AndroidRuntime(24582): Caused by: java.lang.IllegalArgumentException: provider doesn’t exist: fused
(…)

Yes, the problem is the fused provider. And yes, they use it, directly or indirectly, knowing it or not. But it is not totally their fault, using that and it doesn’t working, being honest.

Conclusion: There’s no workaround for it yet, :frowning:

PD: sorry for the pickiness…

5 Likes

@Roboe
Thanks for the clear words and taking your time to describe the stuff in basic language for simple users like me. I highly appreciate it.

I will tell the support what you found out (basically send them the logcat), let’s see if they comment on it.

@Spielmops
Yes, I have tested “high accuracy” and “device only” with the same result -> :airplane: :boom:

1 Like

I got a new answer from support:

:flag_de: In German:

Hallo Max,nach Absprache mit unseren Entwicklern kann ich Dir folgendes berichten:
Dem Callstack nach sieht es so aus, als würde Google für das Google Maps
Android Framework nach dem fused location provider fragen. Der Code,
der das macht, stammt nicht von uns.
Das Problem ist also eher das Zusammenspiel zwischen der Google Maps Android API v2 und dem Fairphone-Bertriebssystem.
Das heißt wir haben hier leider keine Möglichkeit das Problem zu beheben.

Es tut mir leid, dass ich Dir keine positivere Nachricht senden kann.Einen schönen Tag.Schöne Grüße

Jessica

outdooractive.com - Support

:flag_gb: In English:

Hello Max. After talking with our developers, I can tell you the following:
According to the callstack it looks like Google is asking for the fused provider for the Google Maps Android Framework. The code that does this, is not from us.
So the problem is the interaction between Google Maps Android API v2 and the fairphone operating system.
This means we have no solution for this.
I am sorry that I can not give you a positive reply. Have a good day. Regards,
Jessica

So I guess, this supports what Roboe wrote. I do not understand yet though,if it is a problem of proprietary google code, that app developers simply integrate, or if it is a problem of the fairphone OS.

Oooook, I understand now. Let me explain:

  • Apps which use Google Maps use the official Google Maps library.
  • Google Maps library (a proprietary “piece of code” coders use for build apps) use the fused provider without checking if it exists.
  • This has sense, because a production-ready ROM built and distributed with Google Mobile Services has to pass a set of tests called CTS; otherwise, Google doesn’t grant the license required to the manufacturer. I’m sure the CTS checks the integration of Google Location Services, including network location and fused location.
  • Fairphone OS GMS pass the CTS, but Fairphone Open OS doesn’t.
  • Other apps which only access to the location without Google Maps library have to do it manually, which means, in order:
    1. Check if location is enabled. Request enabling it if isn’t.
    2. Check the available providers (if fused is not available, they continue with gps or network provider —this avoid the error).
    3. Request a location with an specific provider.

Point 3 explains why Google Play is crashing too with FP Open OS + GApps flashed.

Other working apps which meet point 4 criteria are: Transportr (use OpenStreetMap), Maps.me (use OSM), Pokémon GO (definitely doesn’t use Google Maps library as is, because map is a customized 3D view).

This supports the diagnose that Fairphone Open OS has a bug with the fused location provider implementation.

1 Like

Very nice explanation. I’m just not sure I would call this a bug.
It’s to expect that some apps that require google services are not going to work on a OS that comes without google services. Even if you can install them via a 3rd party script.

Well, the point is that it is not a problem with microG. The fused provider is not working, when it should. There’s no point in apply the patches for UnifiedNLP and not having a fused provider for location. Plus, users that want to flash a minimal version of GApps like OpenGapps are affected, too.

You have a point, though, talking about Google things, but apps requiring Google Mobile Services (e.g. Citymapper) work fine on my Nexus 4 with CyanogenMod and microG, but not on my Fairphone 2 with microG. And there’s the not-common-but-possible case of an app which doesn’t require any Google library and crash because it requires the fused provider, no matter what system for location you have installed.

PD: Thank you for moving it to the GPS thread.

2 Likes

So now omands working after waiting 5-10 min.
But if i use father.io or Pokémon go both cant find my Position and phone crashes.
So i habe to reboot with Holding powerbutton for 10 sec. :frowning:

i have the same problem :frowning: i hope they fix it soon, because i wanna be the very best too

I already read this popular thread but couldn’t find a fix.

Problems:

  • If I enable GPS the PlayStore crashes two times (well, I can deal with that).
    The location via Wifi and Network works; it is only the GPS which doesn’t work properly.
  • If I enable the GPS it needs approximately 10 minutes to find my location.
  • If I lock my screen or switch to a not-using-GPS-app the search for my location (via GPS) is abandoned until I open the app which needs GPS.

Things I have done/tried so far:

  • Changed the NTP-Server via FasterGPS to Germany (I am living in Germany; server is: de.pool.ntp.org).
  • Changed INTERMEDIATE_POS to 1
  • Tried different apps for getting the location (Google Maps, Osmand, Pokemon Go, Ingress …)
  • Installed GPS Status and SatStat, which show that my phone quickly detects a lot of satellites (see picture). (Often I have 15 to 18 of 20 to 25)

According to the app the blue satellites show the ones which can be used to get your location, the red ones show the ones who can’t be used.

I would be glad if someone has another idea what to test or to change :slight_smile:

You still describe the same issues as discussed here, so I moved your post back here.
I’m sorry the workarounds and solutions described here don’t work for you.

Nice summery , that describes my Situation

@Roboe do you think there could be a problem with the Fused Location Provider in FP OS in general?
In other words: could a bug in the FLP in standard FP OS not result in disfunctional GPS but in the phone getting really hot and rebooting when using GPS for a long time or while playing GO games?

Maybe. That’s a really low level question (as it’s too close to the GPS implementation) and I don’t know Android’s guts that well (yet. I hope I learn more to help while porting CM).

But the descriptions of the overheating/reboot issue with the GPS seem not to be related only to FP OS GMS, but with FP Open OS too, right? It may be SoC-related, or GPS misconfiguration (at build time), or memory leaks… I’m afraid I don’t have the knowledge to “virtually debug” that matter right now, :confused:

2 Likes

The 10 minute waiting time until you get a fix is probably a clue that your AGPS data is not properly updating. AGPS (Assisted GPS) data contain the ephemeris data that tell the GPS system where the satellites are. When AGPS is not available the system tries to get the ephemeris data from the satellites themselves - they are constantly transmitting it, but it takes time (usually about 10-20 min.) until all data are downloaded because the bandwidth is small.
I do not know SatStat very well, but GPS Status shows you the age of the AGPS data.

1 Like

Just to check if there is any workaround for this problem ? I have a plain-install of FP Open OS (no GAPPS, XPosed etc. installed) and GPS does not work at all. SatStat is showing no satellites. The only thing that happens is that the location notification icon pops up (but no satellite / GPS icon) when an app like OsmAnd starts.

Today, while checking a logcat, I realized the following lines repeating
E/LocSvc_launcher( 9474): E/main:351]: Error opening /etc/izat.conf No such file or directory

As LocSvc_launcher already sounds suspicious, I checked google and yes, this looks like it has something to do with the location provider.
I checked the FPOS from code.fairphone.com (“returning to the gms version”), there is a izat.conf included. So I tried this one on my phone. As gps did already work, I’m not sure whether it helps much or at all, but it might be that GPS works a bit better and more stable while switching apps.

1 Like

You are exactly the man to try what lklaus wrote!

Bug or not, for a lot of us this makes the difference between a usable Fairphone Open OS and a useless one.

When I realized this “bug” exists, I had to restore my previously installed but rooted Fairphone OS. :cry:

What I want is an OS with root access, TWRP, XPosed and Gravity Box, some Google Services and working Apps.

It would be great if Fairphone would handle this as a bug as it is an annoyance for a lot of people.

2 Likes

Hey ! I’m new here (got my phone fews days back). GPS was working perfectly with stock ROM. But since i’ve installed the OpenOS 16.07 (no gapps or anything else), it simply does not work. Yesterday, I could see 6 or 7 sat in satstat, but no location. After “fixing” the gps.conf with the INTERMEDIATE_POS to 1, I simply do not get any sat. I let the phone for nearly 1 hour on a table outside and it never saw a single sat. I’ll check what FasterGPS gives, but it looks like the issue is still here… That’s a bit sad, knowing that I’ve switched phone (from old samsung i9000) to get decent GPS and be able to contribute to OSM.

I cannot confirm this problem: Just went outside with 16.07 and got a whole bunch of satellites and a fix both on SatStat and OsmAnd.
Did you try turning location on and off ?