Location ohne MicroG - ShiftOs-L

@Izzy_ Meine antwort war gerichtet auf die frage von Woffs (#22) , der/sie hat geredet über android 8.1.
 
Ist eigentlich dasselbe, aber im der README.md steht:
Ha! Ich wusste, dass n76 das abgegeben hat. Seit über einem Jahr. Komme aber nicht auf die Idee, das auch in meiner App-Liste zu aktualisieren 🙈 Danke für den Zaunpfahl! Ist jetzt korrigiert.
Meine antwort war gerichtet auf die frage von Woffs
Muss einem doch gesagt werden 🤪 Erwähnt war ich, und Du hast mich gefragt. Lieb wie ich bin (oops 😌) habe ich Dir natürlich brav geantwortet. Aber jetzt weiß woff ja, dass er zurück blättern und nachschauen muss, was Du mich gefragt hast, um Dir dann zu antworten 🙊💨
 
  • Haha
Reaktionen: danielp
@timmo @Izzy_ 😄
Das Backend funktioniert, das seh ich ja via "My Location". Meine Frage ist eigentlich, wie diese Information dann zur nutzenden App käme, denn dort kommt sie nicht an. OSMAnd~, meteocool, was auch immer "network location" haben will. Na klar habe ich bei den Standort-Einstellungen "Hohe Genauigkeit" oder "Energiesparmodus" gewählt. Ein anderes Backend habe ich auch probiert, das funktioniert in "My Location" ebenfalls und sogar schneller, löst mein Problem aber auch nicht. Im logcat habe ich schon geschaut und nichts richtiges gesehen.

Mein Gedanke war, dass die Apps die googlemäßige "network location" abfragen und irgendwas im System die UnifiedNLP-Location zu Network-Location kopieren müsste damit die Apps das bekommen, aber da liege ich eventuell falsch. Aber wie funktioniert es denn, dass die network location abfragenden Apps die Position von UnifiedNLP bekommen? SHIFT5me, Android 8.1, root.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: timmo
und irgendwas im System die UnifiedNLP-Location zu Network-Location kopieren müsste
Richtig. Und da scheint es zu klemmen. Ich habe kein 5me und kann es daher nicht nachstellen – Du könntest aber per adb logcat nachschauen. Vorsicht, da kommt eine ganze Menge Text, also am besten (unter Linux) wie folgt:

Bash:
adb logcat | tee location.log

Dann siehst Du die Zeichen wie wild über den Terminal-Bildschirm flitzen. Sobald sich das beruhigt: Strg+C. Dann in location.log nachschauen. Ist wahrscheinlich echt viel drin, daher zuerst mal nach "nlp" suchen und schauen was da auftaucht. Bei Treffern auch die Zeilen vor und nach dem Fund anschauen. Eventuell findest Du da welche, die mit "E" (error) oder "W" (warning) markiert sind. Die geben Dir dann hoffentlich einen Hinweis, was da schief liegt.
 
  • Like
Reaktionen: danielp
Bash:
adb logcat | tee location.log

Code:
W LocationProviderProxy-network: com.google.android.gms resolves service com.android.location.service.v3.NetworkLocationProvider, but has wrong signature, ignoring
W LocationProviderProxy-network: Odd, no component found for service com.android.location.service.v3.NetworkLocationProvider
W GeocoderProxy: com.google.android.gms resolves service com.android.location.service.GeocodeProvider, but has wrong signature, ignoring
W GeocoderProxy: Odd, no component found for service com.android.location.service.GeocodeProvider

W LocationProviderProxy-network: com.google.android.gms resolves service com.android.location.service.v3.NetworkLocationProvider, but has wrong signature, ignoring
D LocationProviderProxy-network: bindBestPackage for com.android.location.service.v3.NetworkLocationProvider :  found 1, no new best component
W LocationProviderProxy-network: Odd, no component found for service com.android.location.service.v3.NetworkLocationProvider
D LocationProviderProxy-fused: bindBestPackage for com.android.location.service.FusedLocationProvider :  found 1, new best component: ComponentInfo{com.android.location.fused/com.android.location.fused.FusedLocationService}
 
und nach Deinstallation des µG bleibt
Code:
W LocationProviderProxy-network: Odd, no component found for service com.android.location.service.v3.NetworkLocationProvider
W GeocoderProxy: Odd, no component found for service com.android.location.service.GeocodeProvider
übrig.

µG war schmutzig installiert, aber die relevanten Häkchen (signature-spoofing) waren ok gewesen und alles sah aus wie es soll beim Selbsttest.

Auch wenn ich dann frisch nach https://github.com/microg/UnifiedNlp/issues/181#issuecomment-626200709 verfahre, komme ich nur wieder zu com.google.android.gms resolves service com.android.location.service.v3.NetworkLocationProvider, but has wrong signature, ignoring.
 
Zuletzt bearbeitet:
Seltsam: schaut aus als stimmt da was mit dem Signature-Spoofing nicht. Kann ich aber wenig zu sagen, da ich kein 5me habe…
 
Das Backend funktioniert, das seh ich ja via "My Location".

Das putzige an der Sache ist: Ich war letzte Woche in Spanien, und hatte dort ein sehr ähnliches Problem: GSMLocationService auf dem 6mq fand nix. MLS (Mozilla Location Service) noch schnell nachinstalliert; das fand zwar was: wie bei Dir tauchte es in "My Location" unter MLS auf, wurde aber nicht als "Netzwerk-Location" übernommen – der erste GPS-Fix dauerte daher ewig. Mit gleicher Datenbank auf meinem FP2 funktionierte alles prima – und kaum zurück in DE, funktionierte es auch wieder auf dem 6mq (inkl. Übernahme als Netzwerk-Standort).Was bei mir gleich zwei Fragen aufwirft:
  • bei identischer Datenbank und identischem Mobilfunk-Anbieter, warum funzt es auf dem FP2 aber nicht auf dem 6mq?
  • Warum wird MLS nicht als Netzwerk-Standort übernommen, GSM aber schon?
Da wir an ähnlicher Stelle ja schon einmal "gedoktert" hatten: vielleicht hat @amartinz da eine Idee? Die Unterschiede sind: 6mq mit SOS-L 3.9 und microG "im Userspace", das FP2 mit LOS (Android 11) und im ROM integriertem microG, falls das etwas ausmachen sollte. Kann jetzt natürlich nicht erwarten, dass Alex dafür eine Spritztour nach Spanien macht – aber evtl. mit MLS gucken vielleicht?
 
Kann jetzt natürlich nicht erwarten, dass Alex dafür eine Spritztour nach Spanien macht
Wenn mir die Reise bereitgestellt wird, gerne :D

Wir haben auch GPS ein bisschen eingeschränkt (Stichwort IZat), während es auf dem FP2 aktiviert sein sollte (laut Uralt-Posting).
Könnte also vielleicht daran liegen, ist aber nur eine Vermutung meinerseits ohne Beweise oder Fakten.

Das betrifft aber nicht das 5me/6m, da MTK statt QCOM.
Ich schau mir da nochmal die microG Integration an, vielleicht hat sich seit damals was verändert oder wir haben es nicht optimal umgesetzt.
 
  • Like
Reaktionen: Izzy_
Ich schau mir da nochmal die microG Integration an, vielleicht hat sich seit damals was verändert oder wir haben es nicht optimal umgesetzt.
Danke Dir, Alex! Ich stehe dann auch wieder gern für Tests zur Verfügung (bin aber wie Du weißt noch auf SOS-L 3.9, weil da noch nix neueres offizielles kam). Zusammengefasst wundert mich:
  • warum funktioniert LocalGSM es in Spanien gar nicht (liefert keinen Standort, obwohl es mit gleicher DB auf dem FP2 tut), wohl aber in DE?
  • warum wird MLS, obwohl es einen Standort liefert, in ES nicht für den Netzwerk-Standort übernommen? Hier weiß ich nicht, ob es das in DE wird; da war er zwar wieder da, könnte aber eben so gut vom LocalGSM gekommen sein)
Ob es mit einem Fix dann in ES wieder tut, kann ich allerdings so schnell nicht wieder prüfen. Wohl aber, ob MLS in DE übernommen wird (indem ich LocalGSM ausmache, reboote (sonst bleibt es im Cache), und dann nochmal mit MyLocation schaue). Wenn Du derartige Testergebnisse von mir brauchst, sag Bescheid!
 
Ich habe mich generell etwas mit der Standortermittlung beschäftigt (Fokus microG). Vielleicht könnt Ihr meine Recherchen ja mal bestätigen oder kommentieren.

Ich konnte zur Technik der Standortermittlung nicht wirklich eine(!) Quelle finden, wo das erklärt wird. Man kann sich nur "durchhangeln", wie üblich mit Widersprüchen.

Meine Frage: Was sollte man denn an zusätzlichen Apps unter microG installieren, damit man:
- eine performante und genaue Standortermittlung hat,
- aber ohne zuviel "Datenschnüffelei"?

Prinzipiell funktioniert wohl die Standortermittlung in mobilen Geräten über Satellit (GPS/GNSS), Mobilfunk (Funkzellen) und/oder WLAN/WiFi.

GPS ist als Technik z.B. im Smartphone enthalten, braucht mehr Akkuleistung und ist bei schlechtem Empfang ggf. ungenau und langsam (habe ich selbst mal mit einem älteren IPhone erlebt...). Dafür braucht es prinzipiell keine Internetverbindung und weitere "Services". Allerdings gibt es wohl auch da Techniken, die an Hand von Daten aus dem Internet die Genauigkeit und Performance steigern können (kann ich z.B. in den Shift-OS Einstellungen sehen = Qualcomm Location Service?).

Mobilfunk und WLAN brauchen weniger Akkuleistung, sind recht genau (auch "indoor"), benötigen aber zur Standortermittlung neben GPS (soweit verfügbar) zusätzlich Internet und eine Art "Fingerprinting" (also "Services"). Das kann über Google sein, aber auch andere Anbieter.

Unified Network Location Provider (UnifiedNlp), welches im microG Services Core (GmsCore) enthalten ist, nutzt wohl Mobilfunk und WLAN.
Dazu werden aber wohl weitere Backends und damit Apps benötigt:
UnifiedNlp alone does not provide any features, but acts as a middleware for multiple backends. Most of them can be downloaded and updated using F-Droid. Here is a list of backends known to me...
- MozillaNlpBackend - Uses the Mozilla Location Service to resolve user location. The coverage is OK. Only the cell tower database is free.
- NominatimGeocoderBackend - Address lookup backend.

Oder hier Backends
 
  • Like
Reaktionen: jefla
Hallo @railes, Du gibst auf Deine Fragen schon die richtigen Antworten, wie ich finde. Mit GPS und microG Location inkl. Nominatim und zusätzlich einem Backend wie Mozilla Unified NLP realisierst Du eine Standortbestimmung, die sowohl outdoor als auch indoor super mit dem 6mq funktioniert und gleichzeitig keine Daten den Datenklau-Firmen preis gibt. Ich habe als weiteres Backend noch Local NLP Backend installiert. Mit der App My Location (f-droid) kannst Du überprüfen, wie schnell und genau Deine Phone per GPS oder Backends den Standort findet.
Im Freien habe ich gewöhnlich innerhalb von zwei bis drei Sekunden einen GPS-Fix. Im Haus sind die Backends schneller als GPS und benötigen ca. 5 Sekunden. Das GPS ist indoor nach ca. einer Minute da, was aber abhängig vom Standort - am Fenster, im Keller etc.- ist.
Heutige GPS benötigen auch nicht mehr so viel Akkuleistung, wie es früher der Fall war. Beim Wandern habe ich z.B. GPS den ganzen Tag an und zeichne die Strecke auf, trotzdem ist das Phone am Ende noch bei 30 bis 50% Akkuleistung. Deswegen stelle ich mittlerweile stets beides an, wenn ich es brauche.
 
  • Like
Reaktionen: danielp
UnifiedNlp alone does not provide any features, but acts as a middleware for multiple backends. Most of them can be downloaded and updated using F-Droid. Here is a list of backends known to me...
- MozillaNlpBackend - Uses the Mozilla Location Service to resolve user location. The coverage is OK. Only the cell tower database is free.
- NominatimGeocoderBackend - Address lookup backend.
Damit man mich nicht missversteht: Unter dem Link UnifiedNlp stehen noch mehr Apps und Anbieter, genau wie unter dem Link Backends darunter.
Ich habe nur mal die zwei aufgeführt, die ich kannte (neben Deja vú, was laut diesem Thread ja wird nicht mehr gepflegt wird, dafür als Fork Local NLP Backend).
 
Bei microG sollte man im Auge behalten, dass die neueren Versionen davon (ab Version 0.2.28) keine zusätzlichen Module (wie von @jefla genanntes Local NLP Backend) mehr unterstützt werden. Stattdessen sind jetzt Nominatim und Mozilla fest im Core integriert. Es gibt da Bestrebungen, auch weitere Backends zu integrieren – aber welche und wann ist da noch nicht klar.

Wer Details dazu sucht: hier wäre das zugehörige Issue.
 
  • Like
Reaktionen: sh^fty und danielp
Hallo,

weil ich Zeit und Spaß dazu hatte... Ich habe mich nochmal intensiver mit microG und der Standortermittlung (Locations) beschäftigt.

Zur Erinnerung - Für microG sollte installiert sein:
  • microG Services Core (GmsCore)
  • microG Services Framework Proxy (GfsProxy)
  • microG Companion (vormals FakeStore microG Store)
Damit ist auch -weil in GmsCore enthalten- Unified Network Location Provider (UnifiedNlp) installiert.
zu UnifiedNlp siehe auch Wikipedia Fingerprinting (WLAN) - Praktische Anwendungen
Prinzipiell funktioniert die Standortermittlung in mobilen Geräten:
  • über Satellit (GPS/GNSS)
  • und/oder Mobilfunk (Funkzellen)
  • und/oder WLAN/WiFi

Zu UnifiedNlp gilt microG (Components):
Kommentar: Wir haben bereits die Variante "included in GmsCore" installiert, man braucht keine weitere App installieren.
Unified Network Location Provider (UnifiedNlp) is a library that provides Wi-Fi- and Cell-tower-based geolocation to applications that use Google’s network location provider. It is included in GmsCore but can also run independently on most Android systems Installation:
Unified Network Location Provider is provided in 3 variants:
  • NetworkLocation.apk – for the usual configuration of Android 4.4+ without GApps
  • LegacyNetworkLocation.apk – for the usual configuration of Android 2.3 - 4.3.1 without GApps
  • UnifiedNlp.apk – for Android WITH Gapps
microG GmsCore project already includes the Unified Network Location Provider.
Usage: UnifiedNlp alone does not provide any features, but acts as a middleware for multiple backends. Most of them can be downloaded and updated using F-Droid. Here is a list of backends known to me.
Backends for geolocation and geocoding… (Liste Backends)

Standalone Apps für UnifiedNpl (F-Droid) - braucht man nicht wg. "inbuild", s.o.:
Testing:
Unter microG Einstellungen - Location habe ich alles nur mögliche aktiviert:
  • WiFi-location: request Mozilla, request Hotspot, remember GPS
  • Mobile network location: request Mozilla, remember GPS
  • Address resolver: use nominatim
unter Android/ShiftOS Einstellungen:
  • Standortdienste WLAN-Suche und Bluetooth aktiviert
  • WLAN und parallel Mobile Daten (LTE) sowie Standortermittlung sind eingeschaltet
und rebootet (zur Sicherheit)

Als Test App habe ich dann "My Location" genutzt
  • Berechtigung Standort gewährt
Man kann dort Standortermittlung nach GPS, Network(?) und UnifiedNlp Backends auswerten:
  • GPS is usually the most accurate method. But a position fix may take some time or may not work at all due to signal loss. Lock GPS feature runs a persistent service to keep connected with the satellites.
You can also see the list of visible satellites with their PRNs (unique identifiers) and SNR (signal quality).
  • Network Location Provider uses Wi-Fi or Cellular ids to estimate the location. On the devices with Google Play Services installed, NLP usually uses Google Location Service at backend.
  • UnifiedNLP is an open source API which has been used to develop multiple NLP backends (Backends).

Testet man obige Konstellation ohne UnifiedNlp Backends, so wird nur GPS genutzt (Network Not supported, UnifiedNlp keine Nutzung).
Man bekommt in der App auch eine Download Möglichkeit für UnifiedNlp Backends (Link zu Backends).

Installiert man z.B. Local NLP Backend (als Fork von Déjà Vu, von F-Droid) -> GPS in Kombination mit Mobilfunk (Funkzellen) und/oder WLAN/WiFi
  • Berechtigung Standort (immer) gewährt
und rebootet (zur Sicherheit), dann wird neben GPS auch UnifiedNlp genutzt (Local NLP Backend).

Ich habe dann zusätzlich
installiert
  • MozillaNlpBackend Berechtigung Standort (immer) und Telefon gewährt (warum Telefon???)
  • NominatimNlpBackend benötigt keine Berechtigung
und rebootet (zur Sicherheit), dann wird unter UnifiedNlp auch MozillaNlpBackend angezeigt, Network Not supported bleibt weiterhin und ist auch nicht aktivierbar.
NominatimNlpBackend wird nicht angezeigt, aber ggf. weil das wg "Geocoding" ein spezielles Backend ist? Geocoding

puh, das war eine Menge Testing, Kommentare welcome
vor allem zur Frage: Warum kann man in der App "My Location" bzw. generell die Standortermittlung nach Network nicht auswerten bzw. aktivieren? Geht das ggf. nur mit Google Diensten?
 
Zuletzt bearbeitet:
  • Like
Reaktionen: duckface
vor allem zur Frage: Warum kann man in der App "My Location" bzw. generell die Standortermittlung nach Network nicht auswerten bzw. aktivieren? Geht das ggf. nur mit Google Diensten?
zur Test App "My Location" heißt es:
My Location finds your device's location in the following ways:
- GPS is usually the most accurate method. But a position fix may take some time or may not work at all due to signal loss. Lock GPS feature runs a persistent service to keep connected with the satellites.
You can also see the list of visible satellites with their PRNs (unique identifiers) and SNR (signal quality).
- Network Location Provider uses Wi-Fi or Cellular ids to estimate the location. On the devices with Google Play Services installed, NLP usually uses Google Location Service at backend.
- UnifiedNLP is an open source API which has been used to develop multiple NLP backends (https://github.com/microg/UnifiedNlp/wiki/Backends).


Ggf. ist es so, wie ich vermutet habe. Das "reine" NLP als solches funktioniert nur mit Google Services?
Oder wie heißt es zu UnifiedNLP: Alternative network location provider for Android, with plugin interface to easily integrate third-party location providers.
Vielleicht kann ja mal jemand, der ShiftOS-G installiert hat, die App ausprobieren und gucken, ob dort "reines" NLP funktioniert?
 
ich habe jetzt noch als zusätzliche Test App noch "Location Provider Debugger" installiert

versuche ich dort einen Network Scan zu starten, erhalte ich die Fehlermeldung "Network Provider not supported on this device"

daraufhin habe in die Android bzw. ShiftOS-L Einstellungen nochmal durchforstet, aber keine deaktivierte Einstellung bezüglich "Netzwerk" oder "Standort" gefunden
 
ShiftOS-L 3.10, microG 0.2.27, Nominatim Geocoder Backend 1.2.2, Local NLP Backend 1.2.11, GSM Standortdienst 1.5.3.

Wie gesagt es funktioniert nur sporadisch. Manchmal wenn ich MyLocation starte kommt es nach einiger Zeit manchmal nicht.
 
ShiftOS-L 3.10, microG 0.2.27, Nominatim Geocoder Backend 1.2.2, Local NLP Backend 1.2.11, GSM Standortdienst 1.5.3.

Wie gesagt es funktioniert nur sporadisch. Manchmal wenn ich MyLocation starte kommt es nach einiger Zeit manchmal nicht.
Hallo Daniel,

ich kann leider Deine Konstellation nicht nachvollziehen.
Ich habe mal zwei Screenshots gemacht. Ich kann noch nicht einmal das "Network" aktivieren, ist bei mir ausgegraut. Wie machst Du das?
 

Anhänge

  • Screenshot_20231107-210024_My Location.png
    Screenshot_20231107-210024_My Location.png
    125,3 KB · Aufrufe: 8
  • Screenshot_20231107-210144_Location Provider Debugger.png
    Screenshot_20231107-210144_Location Provider Debugger.png
    119,7 KB · Aufrufe: 8
Zuletzt bearbeitet:
Also, bei meinem OS-L-6mq mit microG und Backends steht in MyLocation unter Network "not supported". Das ist eindeutig.
Mein OS-G-6m hat unter Network sofort und ziemlich genauen Empfang, der ohne GPS für die Auto-Navi ausreicht.