
Android-laitteiden päivitystuki on parantunut viime vuosina huimasti mutta erot laitevalmistajien välillä ovat edelleen suuria. Google ja Samsung ovat venyttäneet päivitystuen pituuden jopa seitsemään vuoteen, mutta monilla valmistajilla tuki on huomattavasti lyhyempi. Heikoiten päivitysten kanssa ovat suoriutuneet pienemmät kiinalaisvalmistajat, mikä todettiin muun muassa io-techissä hiljattain julkaistussa juttusarjassa koskien kiinalaisvalmistajien massasta poikkeavia puhelimia. Harrastajien ratkaisu päivitysten puuttumiseen on jo pitkään ollut custom ROMin asentaminen ja aihetta käsiteltiinkin io-techissä muutama vuosi sitten. Kyseiseen artikkeliin kannattaa tutustua ennen tämän artikkelin lukemista, mikäli custom ROMit ei ole ennestään kovin tuttuja.
- Lue artikkeli: Custom ROMin asentaminen Xiaomi Redmi Note 4 -puhelimeen
Perinteisesti custom ROMit on räätälöity jokaiselle puhelimelle ja tabletille erikseen, mikä on rajoittanut merkittävästi niiden saatavuutta eri laitteille. Tilanne alkoi kuitenkin muuttumaan vuonna 2017, kun Google esitteli Project Trebleksi nimetyn modulaarisen rakenteen Androidiin. Treblen myötä varsinainen käyttöjärjestelmä on erotettu laitekohtaisesta alemman tason ohjelmistosta Hardware Abstraction Layerin (HAL) avulla.
”Teoriassa muutos tarkoittaa, että nykyään kaikkiin Trebleä tukeviin laitteisiin voidaan asentaa yksi ja sama universaali ohjelmistopaketti laitteiston eri osista riippumatta hieman samaan tapaan kuin mihin tietokoneiden parissa ollaan totuttu.”
Tässä artikkelissa tutustutaan näiden Generic System Image (GSI) pohjaisen custom ROMien asentamiseen esimerkkilaitteen avulla ja käydään samalla läpi prosessiin liittyviä huomioita. Ensimmäiseksi artikkelissa pureudutaan Android-laitteiden ohjelmiston rakenteeseen, mikä auttaa ymmärtämään GSI custom ROMeihin liittyviä lainalaisuuksia. Sen jälkeen käydään läpi sopivan GSI custom ROM valintaan vaikuttavat asiat. Lopuksi siirrytään varsinaiseen asennusprosessiin, missä GSI custom ROM asennetaan esimerkkilaitteeseen. Asennusprosessi pitää sisällään seuraavat vaiheet:
- Android Debug Bridge (ADB) -komentorivityökalun asentaminen Windows 10 tietokoneelle
- Bootloaderin eli käynnistyslataajan lukituksen avaaminen
- Alkuperäisen ohjelmiston poistaminen laitteesta
- GSI custom ROMin asentaminen
- Käyttöönottoon liittyvät huomiot
Esimerkkilaitteena artikkelissa toimii kiinalaisen Duoqinin viime vuonna julkaisema poikkeuksellinen pienikokoinen Qin 3 Ultra älypuhelin. Se on varustettu 5,02 tuuman LCD-näytöllä ja kohtuullisen modernilla MediaTekin Helio G99 -järjestelmäpiirillä. Kompaktia älypuhelinta kaipaavan harmiksi Qin 3 Ultra on saatavilla ainoastaan Kiinasta eikä sille ole tehty virallista globaalia ohjelmistoa, minkä vuoksi puhelimesta puuttuvat Googlen Play Kauppa ja muut hakukonejätin palvelut. Lisäksi Duoqin on muokannut käyttöjärjestelmää kovalla kädellä ja poistanut muun muassa tumman tilan kokonaan pois käytöstä. Nykypuhelinten tavoin Qin 3 Ultra tukee onneksi Project Trebleä, joten harvinaislaatuisuudestaan huolimatta puhelimen alkuperäinen ohjelmisto voidaan korvata GSI custom ROMilla ja korjata näin ohjelmistoon liittyviä ongelmia. Artikkelissa Qin 3 Ultran ohjelmisto päivitetään Android 14 versioon PixelOS GSI custom ROMin avulla.
Huomio! Custom ROM:in asentaminen on lähes poikkeuksetta vastoin valmistajien takuuehtoja, minkä vuoksi laitteen takuu yleensä menetetään custom ROMin asentamisen myötä. Lisäksi bootloaderin lukituksen avaamisen yhteydessä laite palautetaan takaisin tehdasasetuksiin, joten ennen projektin aloittamista kannattaa ottaa tärkeät tiedot talteen. Projektin aikana jokin voi myös mennä pieleen, jolloin laitteen saaminen takaisin toimintakuntoon voi olla erittäin työlästä tai jopa mahdotonta. Ongelmien välttämiseksi laitteen lukitus tulee poistaa ja akku ladata täyteen ennen projektin aloittamista. Artikkelin kirjoittaja ja io-tech eivät ota mitään vastuuta mahdollisista ongelmatilanteista.
Project Treble ja A/B-osiointi
Project Treble on kohdennettu ensisijaisesti kehittäjille helpottamaan yhteensopivuustestausta uuden Android-version käyttöönoton yhteydessä. Treblen myötä kehittäjän ei tarvitse muodostaa erikseen kokonaan uutta päivityspakettia testilaitteelle vaan useissa laitteissa voidaan käyttää yhtä ja samaa ohjelmistoa, sillä kaikkien Trebleä tukevien laitteiden täytyy tukea Android Open Source Project (AOSP) GSI -pakettia. AOSP GSI -paketti on ikään kuin raakavedos Androidista eikä ole käyttökelpoinen sellaisenaan päivittäistä käyttöä ajatellen. Custom ROM yhteisö keksi kuitenkin nopeasti phhusson nimimerkillä operoivan kehittäjän johdolla, että AOSP GSI -pakettia voidaan käyttää universaalin custom ROMin kehityksen pohjana.
Kuva: Google, https://android-developers.googleblog.com/2018/11/an-update-on-project-treble.html
Teoriassa GSI custom ROMit toimivat kaikissa Trebleä tukevissa laitteissa mutta käytännössä tilanne ei ole ihan niin yksinkertainen. Vaikka laitteiston toimintaan liittyvä alempi ohjelmistokerros (vendor implementation) on erotettu varsinaisesta käyttöjärjestelmästä (Android framework), saattavat valmistajat silti siirtää esimerkiksi monimutkaisten kameraratkaisujen toimintaan liittyviä koodeja itse käyttöjärjestelmään. Lisäksi kun AOSP GSI -pakettiin lisätään ominaisuuksia, saatetaan välillä ajautua yhteensopivuusongelmiin yksittäisten laitteiden kanssa.
Nyrkkisääntönä voidaan todeta, että mitä yksinkertaisempaa rautaa laite sisältää sitä todennäköisemmin eri GSI custom ROMit toimivat laitteessa.
Kuva: Google, https://android-developers.googleblog.com/2017/05/here-comes-treble-modular-base-for.html
Edellä mainitun ohella GSI custom ROMien yhteensopivuuteen vaikuttaa jonkin verran myös laitteen osiointi. Project Treble esiteltiin Android Oreon yhteydessä mutta ensimmäinen askel kohti modulaarisempaa Androidin rakennetta otettiin itse asiassa jo vuotta aiemmin Android Nougatin lanseerauksen yhteydessä. Tuolloin Androidiin tuotiin niin kutsuttu A/B-osiointi ja alkuperäinen Pixel puhelin oli ensimmäinen laite, joka hyödynsi kyseistä teknistä ratkaisua. A/B-osioinnissa laitteessa on ikään kuin kaksi slottia A ja B, johon järjestelmän eri osia voidaan asentaa. Toisen slotin ollessa aktiivisena epäaktiiviseen slottiin voidaan asentaa uusi järjestelmäpäivitys keskeyttämättä laitteen käyttöä välillä. Google käyttää prosessista nimitystä saumattomat päivitykset joskin ominaisuuden taustalla oleva tekninen ratkaisu on sittemmin hieman muuttunut virtuaaliseksi A/B-osioinniksi. Perusperiaate on kuitenkin edelleen sama.
Siinä missä Treble tuli pakolliseksi ominaisuudeksi Android 8 Oreo versiossa on A/B-osiointi edelleen vapaaehtoinen ominaisuus laitevalmistajille ja esimerkiksi Samsung on vasta nyt siirtymässä A/B-osiointiin. Tämän seurauksena ensimmäisille Trebleä tukeville laitteille täytyi muodostaa omat GSI -paketit: A/B ja A-only. Google teki muutoksia Treblen rakenteeseen jo seuraavassa Android 9 Pie versiossa, minkä ansiosta A/B GSI -paketit sopivat nykyään sekä A/B että A-only laitteille. A/B nimitys jäi kuitenkin elämään näihin päiviin saakka, vaikka jaottelulla on merkitystä lähinnä Android Oreo versiolla julkaistujen laitteiden kanssa, jotka eivät olleet vielä täysin ”treblized” kuten Google asian ilmaisee.
Vuosien saatossa Androidin osiointiin on tehty edelleen pienempiä muutoksia Googlen toimesta, mitkä vaikuttavat GSI -paketin toimivuuteen eri laitteilla ja sopivan GSI custom ROMin valintaan. Lisäksi virtuaalisen A/B-osioinnin mahdollistavat dynaamiset osiot tulivat pakollisiksi Android 10 versiossa, millä on vaikutusta GSI custom ROMin asennusprosessiin. Android 10 laitteista lähtien GSI -paketit asennetaankin fastbootin sijaan fastbootd-tilassa. Käyttäjien onneksi alun murrosvaiheen jälkeen tilanne on tasaantunut ja nykyään suurin osa laitteista käyttää samoja GSI -paketteja. Saatavilla on myös näppäriä työkaluja, joiden avulla sopivan GSI custom ROMin löytäminen on helpompaa.
GSI custom ROMin valitseminen
Ennen kuin GSI custom ROMin asennusta alkaa suunnittelemaan täytyy ensin varmistaa, että laite ylipäätänsä tukee Project Trebleä. Helpoiten asian voi selvittää Treble Info nimisellä sovelluksella, joka on saatavilla suoraan Googlen Play Kaupasta. Treble Info on muutenkin kätevä sovellus, sillä sen avulla saadaan selvitettyä kaikki GSI custom ROMin valintaan vaikuttavat tekniset yksityiskohdat. Tarkastellaan seuraavaksi Treble Infon antamia tietoja Duoqin Qin 3 Ultra puhelimesta.
Treble Infon Details -välilehdellä ilmoitetaan ensimmäisenä, onko Project Treble tuettuna. Qin 3 Ultralle kuten muillekin nykyaikaisille Android-puhelimille tuki löytyy, joten seuraavaksi voidaan tarkistaa Vendor Native Development Kit (VNDK) -taso. VNDK sisältää joukon kirjastoja, joiden avulla järjestelmä osaa kommunikoida eri Android-versioiden kanssa, ja VNDK -taso kertoo, mille Android-versiolle laitteen ohjelmisto on alunperin tehty. VNDK -taso on ilmoitettu vastaamaan Android API -tasoa alla olevan listauksen mukaisesti.
- Android 15: API 35, VNDK 35
- Android 14: API 34, VNDK 34
- Android 13: API 33, VNDK 33
- Android 12L: API 32, VNDK 32
- Android 12: API 31, VNDK 31
- Android 11: API 30, VNDK 30
- Android 10: API 29, VNDK 29
- Android 9: API 28, VNDK 28
- Android 8.1: API 27, VNDK 27 (legacy mode)
- Android 8.0: API 26, VNDK 26 (legacy mode)
Qin 3 Ultran VNDK -taso on 31 eli Android 12. Puhelimeen voidaan asentaa vain Android 12 ja sitä uudempia Android-versioita GSI custom ROMeja käyttäen, sillä GSI -paketeilla ei voida downgradata alkuperäistä järjestelmää. Treble Info osaa myös kertoa erikseen, jos VNDK on lite-tilassa. Valmistajat ovat voineet asettaneet VNDK:n lite-tilaan Android 11 versioon saakka tallennustilan säästämiseksi yhteensopivuuden kustannuksella. VNDK lite laitteilla on suurempi riski ajautua bootlooppiin GSI custom ROMin asennuksen yhteydessä, sillä lite-tilassa laite tukee varmuudella vain samaa Android-versiota VNDK -tason kanssa. Tämän johdosta kehittäjät ovat tehneet erillisiä VNDKlite buildeja kyseisille laitteille yhteensopivuuden parantamiseksi. Qin 3 Ultra ei luonnollisesti ole VNDK:n osalta lite-tilassa, sillä puhelin tuli markkinoille Android 12 versiolla varustettuna. Qin 3 Ultran kanssa voidaan siis pitäytyä tavallisissa GSI custom ROMeissa.
Seuraavaksi Treble Infon listassa edetään System as Root kohtaan. Jos kyseinen kohta on tuettuna Qin 3 Ultran tapaan, niin laitteeseen voidaan asentaa A/B GSI -paketteja riippumatta siitä, onko laitteessa A/B-osiointia. Käytännössä vain Android 8 Oreo versiolla julkaistuilla laitteilla kyseinen kohta on oleellinen, sillä System as Root tuli pakolliseksi Android 9 Pie versiossa. Viimeisenä kohtana täytyy vielä huomioida laitteessa käytetty prosessorin arkkitehtuuri. Nykyaikaiset puhelimet kuten Qin 3 Ultra ovat pääsääntöisesti ARM64-laitteita, joten niille valitaan kyseistä arkkitehtuuria vastaava arm64 GSI -paketti. Jotkut valmistajat käyttävät kuitenkin 32-bittistä järjestelmää 64-bittisen prosessorin kanssa. Näillä laitteilla käytetään ”a64” nimisiä GSI -paketteja (ARM 32-bit Binder 64-bit) ja pelkästään 32-bittisille laitteille valitaan ”arm” niminen GSI -paketti.
- ARM64 = arm64
- ARM32 = arm
- ARM 32-bit Binder 64-bit = a64
Kun Treble Infossa palataan sovelluksen pääsivulle, nähdään kyseiselle laitteelle soveltuvan GSI -paketin koodaus. Qin 3 Ultran tapauksessa koodaus on muodossa “system-arm64-ab.img.xz”, mikä on itse asiassa kaikkein yleisin muoto ja saatavilla useimmilta GSI custom ROM jakeluilta.
”Käytännössä kaikki yli 4 Gt ram-muistilla varustetut laitteet Android 12 versiosta lähtien käyttävät samaa GSI -pakettia.”
Sopivaa GSI custom ROMia kannattaa etsiä esimerkiksi Phhussonin wiki-sivulta Githubista. Sivustolta löytyy muun muassa PixelOS custom ROM, jonka tarkoituksena on imitoida Googlen Pixel puhelimien käyttöliittymää mahdollisimman pitkälle. PixelOS syntyi alunperin jo edesmenneen PixelExperiencen innoittamana mutta on ollut Android 13 versiosta lähtien itsenäinen julkaisu. PixelExperiencen tavoin PixelOS sisältää Googlen palvelut valmiina eikä niitä tarvitse flashata erikseen GAPPS-pakettina custom ROMin asennuksen yhteydessä. Qin 3 Ultra on varustettu valmistajan raskaasti muokkaamalla Androidilla, joten valitaan tässä yhteydessä PixelOS keventämään puhelimen käyttöliittymää.
PixelOS:sta on saatavilla alla olevassa kuvassa näkyvät neljä eri GSI -pakettia. Listan ensimmäinen tiedosto vastaa muuten Qin 3 Ultralle sopivan GSI -paketin koodausta mutta lopun “ab” on muuttunut muotoon “bN”. Syy löytyy Phhussonin wiki-sivun FAQ-osiosta, jossa eri lyhenteitä on selitetty tarkemmin. Aikojen saatossa “ab” onkin lyhentynyt pelkäksi b-kirjaimeksi ja “N” tarkoittaa, ettei kyseisessä GSI custom ROMissa ole superuser root-oikeuksia valmiina. Superuser root-oikeuksien puuttuminen sopii tässä tapauksessa mainiosti, sillä puhelinta ei haluta nyt rootata. Saatavilla on myös kooltaan pienempi slim-paketti, jonka selitys löytyy puolestaan PixelOS:n lataussivulta. Slim-paketista on jätetty joitain Googlen sovelluksia kokonaan pois mutta käyttäjä voi halutessaan asentaa ne jälkeenpäin suoraan Play Kaupasta. Henkilökohtaisesti haluan valita asennettavat sovellukset mahdollisimman pitkälle itse, joten valinta kallistuu tässä yhteydessä slim-pakettiin.
”GSI custom ROMia valitessa huomioidaan sekä tekninen yhteensopivuus että custom ROMin tarjoamat ominaisuudet.”
Alla olevaan kaavion on purettu puhelimeen asennettavan PixelOS GSI -paketin koodaus rinnakkain Treblen Infon antaman tiedon kanssa. Kaikki kehittäjät eivät käytä samaa koodausta mutta se on kuitenkin melko yleinen tapa GSI custom ROM yhteisön keskuudessa.
GSI custom ROMin asentaminen
Kun laitteelle on valittu sopiva GSI custom ROM, voidaan siirtyä varsinaiseen asennusprosessiin. Ennen asennusta kannattaa kuitenkin varmistaa, että laitteelle on saatavilla tehdasohjelmisto, jonka avulla laite voidaan palauttaa takaisin toimivaan tilaan jonkin mennessä pieleen. Osa valmistajista tarjoaa laitteiden firmware-tiedostot ja asennustyökalut verkkosivuillaan mutta saatavilla on myös kolmannen osapuolen ratkaisuja. Esimerkiksi MediaTekin järjestelmäpiirejä käyttäville laitteille on saatavilla SP Flash Tool, jolla firmwaren saa asennettua laitteeseen download modessa. Kyseisellä työkalulla on myös mahdollista ottaa firmware dump talteen toimivasta laitteesta, mikä ajaa tehdasohjelmiston virkaa sen puuttuessa. Juuri näin tehtiin myös Qin 3 Ultran tapauksessa, sillä valmistajan kautta firmware-tiedostoja ei ole saatavilla. Tässä artikkelissa ei kuitenkaan käsitellä SP Flash Toolin käyttöä mutta asiasta kiinnostuneet voivat lukea aiheesta esimerkiksi Hovatekin foorumilta.
GSI custom ROMin asentaminen tapahtuu pääpiirteittäin samalla tavalla kuin perinteisen custom ROMin asennus ja ensimmäiseksi puhelimen käynnistyslataajan eli bootloaderin lukitus täytyy avata. Valmistajilla on erilaisia käytäntöjä sen suhteen, miten lukitus avataan, mutta Duoqinin tapauksessa prosessi etenee Googlen Pixel puhelimien tavoin Androidin vakiokäytännön mukaisesti. Ensiksi avataan salatut kehittäjäasetukset siirtymällä puhelimen asetuksiin Tietoa laitteesta -osioon ja naputtelemalla “Ohjelmistoversion numero” kohtaa niin kauan, kunnes puhelin ilmoittaa kehittäjäasetuksien olevan käytettävissä. Tämän jälkeen avataan kehittäjäasetukset asetuksien Järjestelmä-osiosta ja sallitaan OEM:n lukituksen avaus sekä USB-vianetsintä. Näiden asetusten ollessa aktiivisina puhelimella voidaan suorittaa operaatioita Android Debug Bridge (ADB) -komentorivityökalun välityksellä ja avata bootloaderin lukitus.
Itse ADB-työkalu on saatavissa Googlen sivuilta ja Google on myös listannut työkalun käyttämiseksi tarvittavia ADB ja fastboot ajureita valmistajakohtaisesti. Ajureita voi myös hakea suoraan valmistajan sivuilta, sillä Googlen kasaama lista ei sisällä kaikkia valmistajia eikä ole välttämättä ajan tasalla. Saatavilla on myös kolmannen osapuolen geneerisiä ajureita mutta niiden käyttämisessä tulee aina varmistua turvallisuudesta ensin. Allekirjoittaneen kokemusten mukaan ClockworkModin kehittäjän ja Cyanogen Inc:ssäkin vaikuttaneen Koushik Duttan Universal ADB Driver on luotettava vaihtoehto.
- ADB-komentorivityökalu: https://developer.android.com/studio/releases/platform-tools
- Windowsille sopiva paketti löytyy nimellä “SDK Platform-Tools for Windows”
- ADB ja fastboot ajurit: https://developer.android.com/studio/run/oem-usb
- Huom! Ajurit tulee asentaa samalle asemalle ADB-työkalun kanssa ja fastboot ajurit asennetaan puhelimen ollessa fastboot-tilassa
- ADB-työkalun ja ajurien asennus sekä bootloaderin lukituksen avaus on esitetty aiemmin io-techissä Sonyn puhelimella Sailfish X & Sony Xperia XA2 -artikkelissa.
Kun ADB-työkalu ja ajurit on saatu asennettua, voidaan seuraavaksi suorittaa bootloaderin lukituksen avaus, mikä tapahtuu fastboot-tilassa. Yleensä fastboot-tilaan päästään tietyllä fyysisten painikkeiden näppäinyhdistelmällä mutta Qin 3 Ultra ei jostain syystä tue näitä komentoja, joten ainoa keino on tehdä se ohjelmistollisesti ADB:n välityksellä. Kyseinen vaatimus asettaa Qin 3 Ultran suurempaan vaaraan niin kutsutun brickaantumisen eli tiileskiveksi muuttumisen suhteen, sillä ADB:n käyttö vaatii toimivan laitteen. Jos jokin menee Qin 3 Ultran kanssa pieleen, ei fastboot-tilaan päästäkään tietyllä näppäinyhdistelmällä, missä laitteen korjaaminen olisi vielä mahdollista. Ainoa keino palauttaa Qin 3 Ultra takaisin toimivaan tilaan tällaisessa tilanteessa on asentaa puhelimeen alkuperäinen firmware SP Flash Toolilla download modessa. Tämän vuoksi tehdasohjelmisto ja sen asentamiseen tarvittavat työkalut on hyvä olla saatavilla.
Qin 3 Ultra käynnistetään fastboot-tilaan yhdistämällä puhelin usb-kaapelilla tietokoneeseen virrat päällä ja avaamalla tietokoneen komentoikkuna ADB-työkalujen asennussijainnissa kirjoittamalla ”cmd” tiedostoselaimen osoitekenttään. Enterin painamisen jälkeen komentoikkuna avautuu ja siihen voidaan syöttää haluttuja komentoja. ”Adb devices” komennolla käynnistetään ADB ja tarkistetaan samalla, että Qin 3 Ultra tunnistuu ADB-tilassa. Tämän jälkeen ”adb reboot bootloader” komennolla puhelin käynnistetään fastboot-tilaan. Puhelin näyttää ensin käynnistyvän uudelleen normaalisti mutta jääkin käynnistysanimaation jälkeen fastboot-tilaan. Tässä vaiheessa varmistetaan, että fastboot ajurit on asennettu oikein ja laite tunnistuu fastboot-tilassa komennolla ”fastboot devices”. Kaiken ollessa kunnossa voidaan bootloaderin lukitus avata komennolla ”fastboot flashing unlock”. Kyseisen komennon jälkeen puhelin kysyy vielä käyttäjältä vahvistuksen komennon suorittamiselle, mikä hyväksytään painamalla volume+ painiketta. Tämän jälkeen puhelin suorittaa tehdasasetusten palauttamisen ja avaa lukituksen. Onnistuneen operaation jälkeen puhelin käynnistetään uudelleen normaalisti virtanapista.
Puhelimen käynnistyttyä käyttäjän on suunnattava jälleen kehittäjäasetuksiin ja aktivoitava USB-vianetsintä uudelleen, sillä tehdasasetusten palautus nollasi aiemmat asetukset. Aiemmasta io-techin custom ROMeja käsittelevästä artikkelista poiketen custom recovery jätetään tällä kertaa asentamatta ja custom ROMin asennus suoritetaan vakio recoveryä ja ADB:tä käyttäen, sillä Qin 3 Ultralle ei yksinkertaisesti ole custom recoveryä saatavilla. Recovery-tilaan päästään ADB:n kautta ”adb reboot recovery” komennolla ja ennen GSI custom ROMin asennusta on suositeltavaa suorittaa tehdasasetusten palautus recoveryn kautta mutta tässä tilanteessa se ei ole tarpeen, sillä palautus tehtiin juuri bootloaderin lukituksen avauksen yhteydessä. Koska Qin 3 Ultra käyttää dynaamista osiointia, täytyy GSI custom ROMin asennus suorittaa fastbootd-tilassa. Recoverystä päästään fastbootd-tilaan navigoimalla äänenvoimakkuuspainikkeilla kohtaan ”Enter fastboot” ja hyväksymällä valinta virtapainikkeella. Puhelin siirtyy välittömästi fastbootd-tilaan, mistä osoituksena näytön yläreunassa lukee punaisella ”fastbootd”.
Lopulta päästään viimein vaiheeseen, missä PixelOS GSI custom ROM asennetaan puhelimeen. Ensiksi alkuperäinen käyttöjärjestelmä täytyy poistaa puhelimesta komennolla ”fastboot erase system”. Kyseisen komennon jälkeen puhelimessa ei ole ollenkaan käyttöjärjestelmää, joten custom ROM asennetaan tilalle komennolla ”fastboot flash system C:\system.img”, missä ”C:\system.img” tarkoittaa omassa sijainnissaan olevaa GSI custom ROM -pakettia. Paketti on suositeltavaa siirtää platform-tools kansioon samaan sijaintiin, minne ADB-työkalut asennettiin. Lisäksi omaan kokemukseen pohjaten suosittelen muuttamaan asennuskomennon muotoon ”fastboot flash -S 100M system C:\system.img”, mikä pilkkoo asennettavan tiedoston 100 megatavun palasiin ja ehkäisee mahdollisen korruptoitumisen riskiä. Kyseinen muutos ei kuitenkaan ole välttämätöntä eikä sitä ole mainittu Googlen virallisissa ohjeissa. Jos asennus etenee loppuun saakka ilman ongelmia, käynnistetään puhelin uudelleen valitsemalla ”Reboot system now” ja irrotetaan puhelin tietokoneesta.
Ensimmäinen käynnistyskerta saattaa kestää normaalia pidempään, joten käynnistymistä kannattaa odottaa kärsivällisesti.
Dynaamista osiointia käyttävillä laitteilla eli laitteilla Android 10 versiosta lähtien saatetaan joskus päätyä ”Not enough space to resize partition” virheilmoitukseen. Tällaisessa tilanteessa GSI custom ROMin GSI -paketti ei mahdukaan etukäteen varatulle system-osiolle. Lisää tilaa saadaan vapautettua komennolla ”fastboot delete-logical-partition product”, jolloin dynaamiset osiot kykenevät nimensä mukaisesti muuttamaan kokoaan vapautuvan tilan perusteella. A/B-osiointia käyttävillä laitteilla täytyy lisäksi huomioida, ollaanko GSI custom ROMia asentamassa system_a vai system_b osiolle ja muuttaa komennon viimeinen termi ”product_a” tai ”product_b” muotoon alla olevan kuvan mukaisesti. System-osion aktiivien slot selviää aiemmin kohdatusta virheilmoituksesta (resizing ’system_a’ tai resizing ’system_b’).
Kuva: Google, https://source.android.com/docs/core/tests/vts/gsi#flashing-gsis
Jotkin valmistajat kuten OnePlus ovat lisäksi aktivoineet Android Verified Boot (AVB) suojauksen, mikä estää custom ROMin asentamisen, mutta ongelma voidaan kiertää kytkemällä suojaus pois päältä. Ensimmäiset Trebleä tukevat Android 8 Oreo laitteet käyttävät AVB 1.0 suojausta, mikä poistetaan asentamalla puhelimeen muokattu boot.img tiedosto. Android 9 Pie ja sitä uudemmat laitteet käyttävät puolestaan AVB 2.0 suojausta, mikä poistetaan asentamalla puhelimeen tyhjennetty tai alkuperäinen vbmeta.img tiedosto. Qin 3 Ultralla kyseistä toimenpidettä ei tarvitse tehdä, joten suojauksen poistoa ei voida demota tässä artikkelissa. Aiemmin mainittu Hovatekin foorumi tarjoaa kuitenkin kattavan tietolähteen toimenpiteen suorittamiseksi.
GSI custom ROMin käyttäminen
Ensimmäisellä asennuksen jälkeisellä käyttökerralla puhelin otetaan käyttöön samaan tapaan kuin uusi puhelin. Käyttöönoton jälkeen puhelin saattaa joissain tilanteissa ilmoittaa, ettei laite ole Play Protect -sertifioitu eikä esimerkiksi Play Kauppaan pysty kirjautumaan. Juuri näin tapahtui Qin 3 Ultran kohdalla, sillä Duoqin ei ole alunperinkään hakenut laitteelle sertifiointia Googlelta. Lista sertifioiduista laitteista on kaikkien nähtävillä Googlen sivuilla. Sertifiointi saatetaan myös menettää custom ROMin asennuksen yhteydessä, kun laitteelle suoritetaan tehdasasetusten palautus. Google onneksi sallii sertifioinnin hakemisen jälkeenpäin itsenäisesti custom ROM käyttäjille alla olevan osoitteen kautta.
Sivustolla pyydetään syöttämään laitteen Google Services Framework Android ‑tunnus (GSFid) esillä olevan lomakkeen kautta. Google on myös laatinut ohjeet tunnuksen selvittämiseksi ADB:n kautta mutta helpommin tunnuksen saa selville esimerkiksi kDI Device Info -sovelluksella, joka on avointa koodia ja saatavilla F-Droid sovelluskaupasta APK-tiedostona. Tiedoston lataamisen jälkeen laitteen asetuksista täytyy sallia tuntemattomien lähteiden asennus, jotta sovellus saadaan asennettua eli kyseessä on niin kutsuttu sideload-asennus. Onnistuneen asennuksen jälkeen kDI Device Infossa suunnataan kohtaan ”Options” ja valitaan ”PRIVATE Ids Android/User/Serial/GFS”. Avautuvasta valikosta nähdään GSFid ja tunnus voidaan kopioida leikepöydälle painamalla tunnusta pitkään.
Lopuksi tunnus syötetään Googlen sivulla olevaan lomakkeeseen, minkä jälkeen puhelin käynnistetään uudelleen. Lisäksi kannattaa varmuuden vuoksi tyhjentää Play Kaupan ja Play Palveluiden välimuisti laitteen asetuksista heti puhelimen käynnistyttyä, ettei puhelin ehdi kaivaa vanhentuneita tietoja muistin syövereistä. Näiden toimien jälkeen puhelin on sertifioitu ja Play Kauppaan pääsee kirjautumaan ongelmitta ja asentamaan sovelluksia. Play Kaupan asetuksissa Qin 3 Ultra näkyy tosin edelleen sertifioimattomana mutta sillä ei ole minkäänlaista vaikutusta Googlen palveluiden käyttämiseen.
GSI custom ROMin käyttämisessä täytyy aina muistaa, että kyseessä on universaali ohjelmistopaketti. Sitä ei siis ole tehty tiettyä laitetta silmällä pitäen, joten välillä vastaan saattaa tulla yllättäviä yhteensopivuusongelmia. Esimerkiksi Samsung Galaxy Ultra mallien S-Pen ei raporttien mukaan toimi GSI custom ROMeissa mutta yleensä yhteensopivuusongelmat ovat pienempiä kuten VoLTE ominaisuuden toimimattomuus tai tietyn bluetooth toiminnon puuttuminen. Näihin ongelmiin törmättiin myös Qin 3 Ultran kanssa, sillä puheluissa äänet pätkivät ikävästi eikä VoLTE enää toiminut. Lisäksi bluetooth kuulokkeista ei tullut ääntä ollenkaan ulos, vaikka yhteys kuulokkeisiin saatiinkin muodostettua. Onneksi useimmista GSI custom ROMeista löytyy Phh Treble Settings, minkä kautta pienempiä ongelmia voi yrittää korjata. Qin 3 Ultralla puheluiden äänen pätkiminen saatiin korjattua Disable “Voice Call In” route asetuksella ja kuulokkeet alkoivat toimimaan aktivoimalla Bluetooth workarounds MediaTekin piirisarjalle. Ainoastaan VoLTE ominaisuutta ei saatu aluksi korjattua mutta heinäkuun lopussa saapunut päivitys korjasi tämänkin ongelman. Käyttäjän täytyi vain päivittää IP Multimedia Subsystem (IMS) -sovellus Phh Treble Settingsin “IMS features” valikosta ja pakottaa 4G-puhelut päälle aktivoimalla “Force the presence of 4G Calling setting”.
Huomionarvoisena seikkana PixelOS:ssa ei ole järjestelmän päivitystoimintoa ollenkaan, joten päivitykset täytyy asentaa manuaalisesti ADB:n välityksellä. Päivitysten asentaminen on muuten samanlainen prosessi kuin GSI custom ROMin asennus ensimmäisellä kerralla mutta tehdasasetusten palautus ja ”fastboot erase system” komento voidaan jättää tekemättä. Käyttäjän tiedot siis säilyvät laitteessa päivityksen jälkeenkin, mistä käytetään nimitystä ”dirty flash”. Yleensä kehittäjät suosittelevat tehdasasetusten palautusta ennen päivitystä eli niin sanottua ”clean flashiä” Android API tason vaihtuessa mutta se ei kuitenkaan ole välttämätöntä. Kyseessä on samanlainen varotoimi, kun normaalistikin Android-laitetta päivittäessä uudempaan versioon.
Android 15
Artikkelin lopuksi Qin 3 Ultralla testattiin nopeasti uunituoretta Android 15 versiota. Google julkaisi Android 15 päivityksen Pixel puhelimilleen 15. lokakuuta mutta päivitti artikkelin alussa mainitun AOSP -jakelun Android 15 versioon jo syyskuun alussa. Kyseisen AOSP-version (AP3A.240905.015.A2) pohjalta muodostettu GSI -paketti asentui ongelmitta Qin 3 Ultraan, mikä alleviivaa Project Treblen aikaansaamaan muutosta. Lähes millä tahansa modernilla Android-laitteelle pääsee vähintään kokeilemaan uusinta Android-versiota jopa ennen kuin Google on tuonut virallista päivitystä omille puhelimilleen. Ennen Project Trebleä saattoi mennä jopa useampi kuukausi ennen kuin custom ROM kehittäjät saivat uuden Android-version ylipäätänsä käynnistymään valmistajan päivitystuen ulkopuolelle jääneellä laitteella. Project Treblen ja GSI -pakettien avulla uutta versiota pääsee nykyään testamaan välittömästi julkaisun jälkeen.
Qin 3 Ultraan asennettu Android 15 GSI -paketti ei kuitenkaan ole päivittäiseen käyttöön soveltuva julkaisu, vaikka perustuukin vakaaseen (stable) Android 15 versioon. AOSP GSI -paketin sovellukset perustuvat avoimeen lähdekoodin, joita Google ei ole enää kehittänyt samaan tapaan kuin Pixel puhelimista löytyviä vastaavia sovelluksia. Itse asiassa Google on jo lopettanut Dialer ja Messaging sovellusten kehittämisen AOSP puolella. AOSP GSI -paketti tarjoaa kuitenkin toimivan rungon, joka ympärille kehittäjät voivat custom ROMinsa muodostaa entistä tehokkaammin. Esimerkiksi PixelOS:n kehittäjä on lupaillut virallista Android 15 päivitystä vielä tämän vuoden puolella.
Yhteenveto
Googlen vuonna 2017 esittelemä Project Treble on edesauttanut Android-laitteiden päivitystuen parantumista ja samalla mullistanut ohjelmistojen muokkaamisen. Treblen ansiosta lähes jokaiselle Android-laitteelle on nykyään saatavilla custom ROMeja, sillä yksittäisille laitteille ei ole enää välttämätöntä muodostaa laitekohtaisia paketteja vaan GSI custom ROMit soveltuvat useisiin eri laitteisiin. GSI custom ROMien avulla käyttäjät voivat halutessaan muuttaa Android laitteidensa ulkoasua ja ominaisuuksia tai yksinkertaisesti jatkaa niiden ohjelmistotukea valmistajan lopetettua päivitykset.
Esimerkkilaitteena toiminut Qin 3 Ultra saatiin päivitettyä Android 14 versioon, vaikka valmistaja ei ole kyseistä päivitystä laitteelle tuonut. Lisäksi Duoqinin verrattain raskaasti muokattu Android muutettiin vastaamaan Googlen näkemystä Androidista PixelOS custom ROMin myötä. Lopputulosta voidaan pitää hyvinkin onnistuneena, sillä Qin 3 Ultrasta saatiin GSI custom ROMin avulla jopa paremmin toimiva puhelin kuin aiemmin. PixelOS:sta saatiin esimerkiksi aktivoitua tumma tila, minkä Duoqin oli jostain syystä jättänyt pois alkuperäisestä ohjelmistosta.
Kaikkien laitteiden kohdalla tilanne ei ole kuitenkaan yhtä ruusuinen, sillä universaalien GSI custom ROMien kanssa saatetaan välillä ajautua yhteensopivuusongelmiin. Kun custom ROMia ei ole tehty vain yhtä laitetta silmällä pitäen, ei kaikkia asioita ole millään voitu ottaa huomioon. Varsinkin erikoisia ominaisuuksia sisältävien laitteiden kanssa saatetaan törmätä ongelmiin. GSI custom ROMien käyttäjien täytyy siis kyetä sietämään pientä epävarmuutta asennusprosessista lähtien mutta parhaimmillaan ne tarjoavat loistavan mahdollisuuden laitteen toimivuuden parantamiselle ja elinkaaren pidentämiselle.
Kommentoi uutista tai artikkelia foorumilla (Kommentointi sivuston puolella toistakseksi pois käytöstä)
Lähetä palautetta / raportoi kirjoitusvirheestä