When I am at home and I open the Maps app on my Librem 5, with location services turned on and press the button to jump to my current location, currently one of two things happens:
If I have WiFi turned off, it gives me an accurate but imprecise location, which seems to be that of the nearest cell tower.
If I have the WiFi turned on, it says I am at an address where I used to live, but which is actually a four hour drive from my true location.
Until very recently, it also used to randomly think I was in a very specific location in China, but I think a recent update has stopped that happening.
I understand that support for the GNSS hardware hasn’t been implemented yet, so I have to rely on cell tower and WiFi based location.
Edit: Actually, GNSS support has been implemented. See thread below.
When it tells me I’m at my former address, it’s obviously looking at the WiFi networks in the vicinity and seeing my two SSIDs that I had running at my old address, on the same access point. Presumably Mozilla’s location database is still convinced that these SSIDs are located at my old address, where there were probably more people travelling past who were running the appropriate app(s) to add WiFi networks to Mozilla’s database.
Is there anything I can do about this, other than changing my SSIDs? Can I somehow force an update to the location of the access point in the database? Or will I just have to wait for support for GNSS to get added to the OS in a future update? (I presume an accurate GNSS location would override an inaccurate WiFi location, and possibly cause the database to get updated too; not sure if that’s how that works.)
Perhaps it was an understatement to say that I haven’t spent much time looking into it. I know that GPS can take time to get an initial fix, so I have on a few occasions spent up to an hour with the phone sitting on a table outdoors in clear view of the sky, specifically with the intent of getting a location. So far, it has never happened. If I see a software update come through that looks like it might be related to location, then sometimes I give it another go. What I haven’t done is spent a lot of time digging into the software side of it to figure out why it doesn’t work or when it might start working.
The phone does spend quite a lot of time outdoors in my pocket or bag, too, so it has had lots of other opportunities to pick up a few satellites (admittedly with non-optimal conditions, but I would think it would get something).
In practice, the cell-tower based location tends to be good enough, and works OKish when I’m away from my home WiFi. I am pretty good at finding my location on a map and really don’t mind having to pan and zoom a bit to find the right spot. In fact, I don’t like being tightly zoomed in on my current location automatically, because then you can’t see any of the surrounding context, which defeats the purpose of a map. But when the software is adamant that I’m within a tiny circle a hundred miles from where I really am, that’s quite a lot of zooming and panning.
Perhaps I’m making a mountain out of a molehill here. The easy workaround is to just turn off WiFi on the phone.
Come to think of it, perhaps my real interest in having the location feature work correctly is a desire for “completeness” rather than a desire to actually use the feature. And maybe a desire not to have to say “oh, just a moment, my phone thinks I’m in [far away location]” when I’m checking the map, which can attract a little ridicule.
To switch off wifi localization, you can edit the geoclue.conf file. Its in etc/geoclue. This will prevent the localization defaulting to a wifi location stored somewhere in memory or based on your ip address. Maybe you will get a proper gnss localization after that.
But from what you are teling, I find it plausible that there is something wrong with your gps hardware. Mine did a terrible job at first, but it did find my exact position eventually - always. It was slow, it reverted to stored or ip based wifi locations, but it did find the right spot in the end.
Now, without the wifi option enabled, it works really well. But I do get the impression it still struggles a bit indoors and in the car. Maybe A-GPS is not enabled yet or not working optimally.
The incorrect location it is picking up via WiFi can only realistically be coming from the Mozilla Location Services database. My phone has never even been to the location where it thinks my WiFi network is located. I have never told it about that location. My IP address would not have been associated with that location either, except perhaps by the Librem 5 itself, based on the incorrect data from Mozilla Location Services. It’s a completely different ISP, and the IP address is dynamically allocated anyway.
With that said, the suggestion to switch off WiFi localization would probably prevent the erroneous location, at the cost of no longer getting good WiFi locations in other places where the data is more accurate. I will consider doing this. When I am away from home I usually have the WiFi hardware kill switch off anyway, so I wouldn’t be losing much.
But perhaps I should also try leaving the phone outside overnight and see if it picks up anything from satellites. Perhaps it just needs a really really long time.
Does that mean I need to leave (for example) the Maps application open to get a fix? It did not occur to me that I would need to do that. That seems like a pretty big error on my part. I don’t think I was leaving it open. I probably left it closed and then opened it later to see if it had a fix.
I found that too. The problem is, Mozilla has discontinued the “Stumbler” app that is recommended for submitting updated WiFi location data. There are some third party apps for contributing cell tower data, but not (as far as I can tell) WiFi data. (Also I don’t have any Android devices, but I could borrow a friend who has one.)
It has also occurred to me that MLS probably stores the BSSID rather than the user-visible SSID of the networks it maps, in which case I might be able to configure my access point to use different BSSIDs without changing my SSIDs, and maybe that would make them look like different networks as far as MLS is concerned.
Yes, the app needs to stay open and the whole phone should stay active too (as in, not go into system suspend). The GPS module isn’t powered up at all when it’s not used (otherwise it would waste plenty of power).
In my case, it kept jumping to a location associated with the offices or a hub of the network provider of my internet provider, based on my home ip address. Needless to say, my L5 had never been to that location.