Petteri Pyyny
30. syyskuuta, 2023 11:16
Hiljattain netissä putkahti jälleen kerran otsikoihin asti ongelma, jossa puhelin näyttää sisukkaasti väärää sijaintia. Ja tässä nimenomaisessa tapauksessa ongelma ei koskenut vain yhtä puhelinta, vaan kokonaisella uudella asuinalueella asuvien, muidenkin ihmisten puhelimet kenkkuilivat samalla tavalla.
Kyseessä on itse asiassa hyvinkin mielenkiintoinen ongelma, joka johtuu nykyaikaisten älypuhelinten varsin nerokkaasta toiminnasta. Nerokkaasta siis silloin, kun toiminto toimii, kuten sen pitääkin toimia. Ongelma ei tyypillisesti ole Android-puhelinten tai iPhonejen oma ongelma, vaan samaa ongelmaa ilmenee molemmissa ekosysteemeissä. Ei välttämättä samaan aikaan, mutta molemmat käyttöjärjestelmät pohjautuvat samantyyppiseen ratkaisuun - ja aiheuttavat samanlaisia ongelmia.
Käydäänpä asiaa läpi hieman.
Vaikka me suomalaiset olemmekin siinä mielessä erikoinen kansa, että meillä on käytössämme maailman mittakaavassa uskomaton systeemi: edullinen, rajoittamaton ja rajoitukseton mobiilidata. Tämän vuoksi todella moni kytkee puhelimensa WiFin kokonaan pois päältä - ja saattaa käyttää sitä mahdollisesti vain junassa tai laivassa ollessaan. Tämä käyttötapa aiheuttaa sekin varsin villejä ongelmia, mutta ne eivät liity sijainnin ongelmiin.
Mutta todella harva käyttäjä tietää sitä, että vaikka kytketkin puhelimesi asetuksista langattoman lähiverkon eli WiFin pois päältä, se oikeasti jääkin päälle.
Kyllä. Aivan oikein. Puhelimesi WiFi ei sammu, vaikka kytket sen pois päältä yläreunan pikavalikosta. Puhelimesi ei tuon jälkeen enää varsinaisesti siirrä dataa WiFin kautta, mutta puhelin skannaa taustalla siitä huolimatta läheltä löytyviä lähiverkkoja ja tukiasemia. Puhelimen ollessa lentotilassa, on kyseinen toiminto varmuudella kytketty pois päältä, mutta muutoin tilanne on hieman "se vähän riippuu" -tyylinen tilanne.
Mutta tämä ei sinänsä ole huono asia, eikä asian suhteen kannata vetää foliohattua tiukemmalle.
GPS-signaali on itse asiassa todella huonosti rakennuksien materiaaleja läpäisevää sorttia, eli mikäli puhelin nojaisi sijainnin osalta pelkästään GPS-signaaliin (tai sen sisarmalleihin eli Glonassiin, Galileoon, jne), vaikkapa kerrostaloasukkailla olisi puhelimen sijainti kokonaan hukassa valtaosan aikaa. Kaupunkialueillakin katveita on niin paljon, että GPS heijaisi ja katkeilisi todennäköisesti yhtenään.
Sekä Google että Apple ovat päätyneet ongelman osalta samaan, varsin nerokkaaseen ratkaisuun.
GPS:n ongelma on nykyaikaisissa älylaitteissa ratkaistu kolmiomittauksen avulla. Ja ratkaisu on varsin fiksu ja innovatiivinen.
Sekä Google että Apple ylläpitävät omilla palvelimillaan valtavaa tietokantaa, joka sisältää tiedot käytännössä kaikista maailman WiFi-laitteista sekä kännykkäoperaattoreiden mastoista, yhdistettynä niiden karttakoordinaatteihin.
Kumpikaan yhtiö ei saa kyseisiä koordinaatteja suoraan laitevalmistajilta tai operaattoreilta, vaan sen sijaan meidän jokaisen taskussa lojuvat älypuhelimet toimivat eräänlaisina tiedonantajina asian suhteen.
Homma toimii jokseenkin näin:
Eli puhelimesi haistelee erilaisten "maamerkkien" avulla sitä, missä se on. Tällaisia maamerkkejä ovat varsinaisen GPS-signaalin lisäksi myös WiFi-laitteet sekä kännykkämastot. Tämän jälkeen puhelimesi myös "ilmiantaa" päättelemänsä koordinaatin perusteella Googlelle ja Applelle myös WiFi-laitteiden sijainnit.
Tiedot lähetetään yhtiöiden tietokantaan ja sieltä muut laitteet saavat vastaavat tiedot.
Mikäli GPS-signaalia ei löydy puhelimesi siis päättelee sijaintinsa lähistöllä olevien laitteiden mukaan - ja pohjaa tietonsa Googlen/Applen niistä tietämiin aiempiin sijainteihin.
Ongelmaksi tilanne tulee silloin, kun ihmiset tekevät järjestelmän näkökulmasta jotain täysin ennenkuulumatonta - kuten vaikkapa muuttavat.
Yleensä ihmisen muuttaessa uuteen osoitteeseen, lähistöltä joko ei löydy lainkaan WiFi-verkkoja (muutit metsään) tai lähistöltä löytyy valtavasti WiFi-verkkoja (muutit kaupunkiin).
Näistä etenkin kaupunkialueella muuttaminen on yleensä helppo tilanne: puhelimesi saa lähistöltä valtavan määrän jo alueella ennestään asuvien ihmisten verkkojen tietoja - ja pystyy päättelemään sijaintisi niiden avulla.
Syrjäseuduilla taas verkkoja ei välttämättä ole "näkyvissä" niin montaa, että käyttöjärjestelmän algoritmi suostuisi laskemaan niiden varaan sijainnin päättelyä.
Ongelmallisin tilanne on silloin, kun iso kasa ihmisiä muuttaa alueelle, jossa ei ennestään ollut isoa määrää ihmisiä. Kuten vaikkapa täysin uudelle asuinalueelle.
Muutimme rakentuvalle asuinalueelle Helsingin Sompasaareen. Kotona ollessamme kännykkämme luulevat meidän olevan Turussa. Muutkin taloyhtiössä kärsivät vastaavista Turku-vaivoista.
-- Juho Salmi (@juhosalmi) September 27, 2023
Mistä moinen mahtaa johtua ja miten poistan tietoliikenteellisen turkulaisuuden elämästämme? pic.twitter.com/VB6Ah0Uplk
X/Twitterissä kuvattu ongelma koski tilannetta, jossa perhe oli muuttanut uudelle asuinalueelle, mutta puhelimet väittivät sisukkaasti olevansa Turussa.
Ongelma johtuu todennäköisimmin siitä, että alueelle on muuttanut yksi tai useampi perhe Turusta, joilla on "tarjota" valtava määrä WiFi-laitteita ympäristönsä haisteltavaksi.
Kun sitten uudella asuinalueella olet uudessa kivitalossa, johon GPS ei yllä, "haistelee" puhelimesi noita lähistön lähiverkkoja. Koska useiden lähiverkkojen tunnisteet löytyvät tietokannasta, koordinaattien kera - ja laitteita on paljon - päättelee puhelin niiden avulla sen, että ahaa, nyt ollaankin Turussa. Valitettavasti ne tietokantaan tallennetut koordinaatit sattuvat vain olemaan vanhentuneita, koska ko. laitteiden omistajat ovat muuttaneet - ja tietokanta ei ole ehtinyt vielä päivittymään.
Pahimmillaan tilanne jopa kertautuu, jos Turusta kolmekin lähekkäin asunutta perhettä on muuttanut kertarysäyksellä toiselle puolelle Suomea, asumaan jälleen toistensa viereen. Tällöin sijainnin algoritmi saa niin "vahvaa" todistetta siitä, että nyt ollaan todellakin Turussa, että edes GPS:ltä saatava tieto ei välttämättä riitä vakuuttamaan kännykkääsi oikean sijainnin suhteen.
Paras ja suositeltu ratkaisu on valitettavasti myös monimutkaisin. Uudella asuinalueella pitäisi jaella postilaatikoihin kirjeitä, joissa pyydetään kaikkia asukkaita vaihtamaan kaikkien laitteiden verkon tunnistenimet uuteen muotoon.
Google itse suosittelee, että ainakin WiFi-tukiaseman nimi muutetaan siten, että nimen perään lisätään _nomap.
Verkot, joiden nimessä on _nomap, eivät kuulu mukaan algoritmin sijainnin päättelyyn, vaan puhelin pakotetaan käyttämään muita tietoja sijainnin päättelemiseksi.
Ratkaisu on paras, mutta haastavin toteuttaa, sillä nykyaikana kaikista kotitalouksista tuskin löytyy niin paljoa osaamista, että verkon nimen vaihtaminen onnistuisi.
Toimiva ratkaisu on myös se, että palaa teknisesti takaisin 15 vuoden taakse ja pakottaa puhelimen käyttämään ainoastaan GPS-signaalia.
Tämä onnistuu Android-laitteissa siirtymällä asetuksissta kohtaan Sijainti, sieltä kohtaan Sijaintipalvelut ja lopulta kohtaan Googlen sijaintitietojen tarkkuus.
Kytkemällä kohdan "Paranna sijaintitietojen tarkkuutta" pois päältä, laite pakotetaan käyttämään ainoastaan GPS-signaalia sijainnin löytämiseksi.
Puhelimesi käyttää GPS:n lisäksi mm kaikkien lähellä olevien wifi-verkkojen tukiasematietoja ja niistä kerättyä tietokantaa.
-- Petteri Pyyny (@pyyny) September 27, 2023
Korjaat ottamalla kuvan asetuksen pois päältä, jolloin käytössä on pelkkä GPS. pic.twitter.com/NT26MOnQcr
iPhonella vastaavaa toimintoa ei tietääksemme voi tehdä, vaan iPhone päättelee sijainnin aina omien algoritmiensa - ja myös sen useaan kertaan mainitun tietokannan - pohjalta.
Huomaathan, että mikäli kytket tämän asetuksen pois päältä, puhelimesi ei todennäköisesti saa sijaintia lainkaan, kun olet sisätiloissa, etenkin kerrostaloissa tai ostoskeskuksissa.
Google ja Apple päivittävät tietokantojaan aika ajoin. Tahti on hitaanpuoleinen ja ilmeisesti vanhoja "WiFi-tunniste + koordinaatti" -tietoja ei päivitetä aivan herkällä kädellä, vaan tietojen pitää olla tarpeeksi "luotettavia", jotta algoritmi suostuu vaihtamaan vuosikausia samassa paikassa nököttäneen verkon sijainnin uuteen sijaintiin.
Mutta muutos tapahtuu kuitenkin yleensä ajan saatossa, joten yksi vaihtoehto on vain hyväksyä ongelmat muutaman viikon, kenties muutaman kuukauden ajan - ja toivoa, että päivitys napsahtaa tietokantaan jonain päivänä.
Yksi erittäin vahva signaali sijainnille ovat kännykkäoperaattoreiden tukiasemat. Ne kun harvoin muuttuvat - saati sitten muuttavat. Joten algoritmit pitävät kännykkämastojen tietoa luotettavampana kuin yksittäisten lähiverkkojen tietoja. Näin ollen uusilla asuinalueilla todennäköisesti saattaa tapahtua sitäkin, että sijainti alkaa jossain vaiheessa "hyppimään": välillä puhelin saa tarpeeksi luotettavaa tietoa uudesta sijainnista, välillä taas vähemmän luotettavaa. Tässäkin auttaa yleensä aika.
Mutta kännykkämastoihin luottaminen on omissakin kokemuksissamme aiheuttanut myös villejä kokemuksia. Operaattorit alkoivat joskus 2010-luvulla käyttämään suurissa yleisötapahtumissa siirrettäviä kännykköjen tukiasemia, tukemaan suurten massojen verkkoon pääsyä.
Ainakin yhden kerran Oulussa järjestettävässä Qstock-festivaalissa kävi tilanne, jossa operaattoreiden paikalle kuskaama kännykkäverkon tukiasema oli rekisteröitynyt Googlen tietokantaan Turun Ruisrockin aikana. Näin ollen tuhansille ihmisille kävi tilanne, jossa puhelin arpoi jatkvuasti Ouluun osoittavan GPS-signaalin ja "luotettavana pidetyn" kännykkämaston Turun sijainnin välillä. Tapahtuman lähellä, sisätiloissa ollessa puhelin pomppasi aina Turkuun.
Laivat ovat myös täysin oma ongelmansa. Isolla risteilyaluksella saattaa olla satoja WiFi-tukiasemia ja ne saattavat helposti kaikki rekisteröityä tiettyyn kohteeseen. Sen jälkeen kun vaikka veneilet ja ohi lipuukin Viking Linen paatti, saattaa puhelimesi päätellä, että oletkin Tukholmassa - kun kaikki sadat laivan tukiasemat on "rekisteröity" Tukholman satamassa sijaitseviksi. Eli tarpeeksi vahva pläjäys tukiasemien koordinaattitietoja saattaa yliajaa jopa merellä saatavan GPS-signaalin.
Toisaalta Google ja Apple ilmeisesti osaavat päätellä myös "jatkuvasti liikkeessä" olevat tukiasemat sellaisiksi, että niiden tietoihin ei voi luottaa. VR:n junaverkko on yksi esimerkki tällaisesta, joka selkeästikään ei (ainakaan yleensä) vaikuta sijainnin päättelyyn. Myöskään kännyköiden luomat hotspotit eivät ilmeisesti ole "tarpeeksi luotettavia" sijaintinsa kannalta, joten nekin jätetään huomioimatta.
Myös Windows-tietokoneet käyttävät nekin samaa, WiFi-verkkojen sijaintiin pohjautuvaa päättelyä. Joten samat ongelmat ja ratkaisut koskevat myös niitä - vaikkakin sijaintitietoja kenties harvemmin tuleekaan käytettyä tietokoneiden kanssa.
Mikäli aihe kutkuttaa uteliaisuuttasi, kannattaa tutustua vaikkapa kehittäjille tarkoitettuihin rajapintoihin ja niiden dokumentaatioon.
Googlen oma Geolocation API-rajapinta kuvaa jo etusivullaan toimintaa yleistajuisesti:
Geolocation API käyttää kännyköiden tietokenttiä, kännykkäverkkojen mastoista saatavia tietoja ja WiFi-tukiasemien tietoja palauttaakseen takaisin pituus- ja leveyskoordinaatit sekä tiedon siitä, miten varma palautettu tarkkuus on.