You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When on an ICE train in Germany and connected to the "WIFIonICE" network, I never get a network location from microG that is identical to the train's GPS location (as reported by the API).
To Reproduce
Steps to reproduce the behavior:
Get on an ICE train (or stand next to one in a station?), connect to its WIFIonICE network and log into the network
Start a logcat app, e.g. "Logcat Reader", and start recording messages
Open any app that requests a location (e.g. a maps app)
See error in logcat: "Failed retrieving location for current moving wifi WIFIonICE: java.net.SocketException: Binding socket to network 101 failed: EPERM (Operation not permitted)" (see traceback below)
Expected behavior
I expect the maps app to show my location identical with the train's location almost immediately, with an appropriate accuracy (judging by microG code, that would be 100m).
microG Services app: 0.3.6.244735 (244735012), from microG F-Droid repo
Additional context
Failed retrieving location for current moving wifi WIFIonICE
java.net.SocketException: Binding socket to network 101 failed: EPERM (Operation not permitted)
at android.net.Network.bindSocket(Network.java:442)
at android.net.Network.bindSocket(Network.java:409)
at android.net.Network$NetworkBoundSocketFactory.createSocket(Network.java:269)
at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:114)
at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:106)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:30)
at org.microg.gms.location.network.wifi.MovingWifiHelper$retrieveMovingLocation$2.invokeSuspend(MovingWifiHelper.kt:140)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: android.system.ErrnoException: Binding socket to network 101 failed: EPERM (Operation not permitted)
at android.net.Network.bindSocket(Network.java:441)
... 22 more
The text was updated successfully, but these errors were encountered:
microG tries to directly bind to the network interface of the wifi. This is so that if you are connected to a wifi hotspot and also mobile network, and Android decides to route regular traffic through the mobile network for any reason (e.g. because you did not sign in on the wifi hotspot's captive portal yet), microG would still route the request to the wifi so it can provide a response.
If you set up a VPN and force all connections to be routed through the VPN software (even if the VPN software decides to route the traffic not through the VPN but to the network directly), this binding to network interface fails.
As a work-around, we can try to detect this situation and then not bind to a specific interface.
Thank you for that @mar-v-in! Since I have the WireGuard app installed, which provides a VPN. It's currently set to "Always-on", but "Block connections without VPN" is disabled in the Android VPN settings.
I'll try fiddling with that this weekend, to see if it solves the error. (Obviously, it would still be good to be able to leave the VPN enabled, but I can live with turning it off manually when I'm on a train.)
Describe the bug
When on an ICE train in Germany and connected to the "WIFIonICE" network, I never get a network location from microG that is identical to the train's GPS location (as reported by the API).
To Reproduce
Steps to reproduce the behavior:
Expected behavior
I expect the maps app to show my location identical with the train's location almost immediately, with an appropriate accuracy (judging by microG code, that would be 100m).
Screenshots
N/A
System
Additional context
The text was updated successfully, but these errors were encountered: