Egy korábbi posztban foglalkoztam azzal, hogy az Apple hogyan értékeli jobbra az akkumulátorok állapotát a használt iPhone-okban. Miután kiderült, hogy szándékosan lassítottak be régi készülékeket, hogy ezzel megelőzzék a “hirtelen kikapcsolás” bugot, megígérték: maguk jeleznek ezentúl vissza az akksinkról az iOS-ben. Ez nemrég meg is történt.

batteryhealthtoggle-800x583.jpg

Ezzel egy időben azonban történt még valami: értesítették azon App Store-os appok fejlesztőit, amiknél korábban lehetett információkat leolvasni az iPhone-ok akksi-állapotáról. Pontosabban nem direktben szóltak nekik, de ha mondjuk egy akksis alkalmazás frissíteni szerette volna magát, az Apple visszadobta az update-et, hogy csak akkor jelenhet meg, ha többé nem árul el infókat az akkumulátorról.

Megkerestük az AIDA64 nevű app magyar készítőit, hogy meséljenek erről a különös helyzetről. Ez az alkalmazás többek között az akksink állapotát véleményezi, és nemrég átlépte az egymilliós letöltésszámot, szóval tudnak valamit a srácok. Andrássy Miklóst kérdeztük.

Hogy volt eddig ezzel az akkumulátor állapotméréssel? Hogy tudtátok felmérni az állapotot, amikor az iOS-ben nem is volt erre vonatkozóan információ?

Vékony jégen jártunk mindig ezzel az akku témával. Nem áll rendelkezésre public API, illetve SDK-ban sincs erről semmi, viszont direktben private API hívásokkal sem lehet operálni. Szóval már az iOS10 előtt is trükközni kellett, hogy elcsípjük az iOS akku státusz lekérdezése során létrejövő adathalmazt. Ez egyébként a mai napig és a jövőben is működni fog, de csak iOS 10 előtti rendszerekkel, sokkal több adattal, például merülés-töltés mértéke, pontosabb kapacitás adatok, hőmérséklet, és így tovább.

ke_pernyo_foto_2018-04-05_16_25_03.png

(A fenti beolvasásból az AppleRawCurrentCapacity, AppleRawMaxCapacity és DesignCapacity értékek az irányadóak, ez már csak iOS 10 előtti rendszereknél működik ilyen egyszerűen. Persze van az adathalmazban sok más minden is, amiről igazán semmi dokumentáció nincs, csak ezekből a rövid megnevezésekből lehet találgatni.)

Sajna az Apple ezt kiszagolta, és az iOS 10-ben bezárta a kiskaput, nyilvánvalóan azért, mert ezt néhány alkalmazás - beleértve minket is - kihasználta a lehetőséget.

Akkor hogy lehet, hogy az appotok a mai napig meg tudja becsülni az akku kapcitás értékeket?

Ez után lényegében már csak egy opció volt, még vékonyabb jégen táncolva, de szerencsére egészen idáig nem volt gond belőle. Többet nem mondhatok.

ke_pernyo_foto_2018-04-05_16_46_20.png

És ezt hagyják?

Nemrég, még a legújabb iOS frissítés előtt próbáltam beküldeni egy új verziót, de sajnos ezt már visszadobta az Apple a fenti probléma miatt, vagyis a jövőben jelen állás szerint új verzió csak akkor jelenhet meg, ha kikerül a programból a Battery Details rész alatti current charge, wear level és voltage.

Egyelőre ott tartunk, hogy az elutasításban az Apple jelezte, hogy ha úgy gondoljuk, hogy ez minket nagyon hátrányosan érintene, akkor írjunk nekik, ez megtörtént, várjuk a csodát. Addig marad a mostani AIDA64 verzió a store-ban.

Ez vajon mit jelent?

Ha nincs alternativ megoldás arra, hogy az alkalmazásunk funkcionalitását megtartsuk, akkor benyújthatunk egy "enhancement request"-et. Köztünk szólva ezt valahogy úgy képzelem el, amikor Ödönke a 60 kilós ovis falhoz nyomja a 20 kilós társát és közben mondja hogy egyébként ha úgy gondolod, hogy ez bármiben korlátoz, nyugodtan szólj.

Hogy számoltátok a wear levelt, vagyis az elhasználódottság mértékét?

A wear level számítása egyszerű, az eszközből lekérdezhető az aktuális és a maximális töltöttségi szint, illetve nekünk adatbázisban benne van az összes eszköz névleges akku kapacitása. Az utóbbi illetve a maximális töltöttségi szint közötti különbség lényegében az elhasználódás mértéke azaz a wear level. Az Apple számára biztosan nagyobb részletességű adatok is rendelkezésre állnak az eszközben, nekünk jelen esetben 100 mAh -ás lépcsőnként adja vissza a készülék a maximális töltöttséget, ebből adódik a néhányak által kifogásolt pontatlanság, de gyakorlati használat mellett néhány százalékos különbség az akku élettartamában nem érzékelhető nagyságrend. Persze maga a maximális töltöttség sem egy egzakt érték, bizonyos mértékben eltérhet ettől az akku mindkét irányba használattól, töltéstől függően. Nekünk az a tapasztalatunk, hogy olyan 20% wear level környékén kezdik az emberek érzékelni, hogy valami talán nincs rendben az üzemidővel.

Az Apple is úgy számol, mint ti?

Az Apple módszere szerintem ugyanígy működik, azzal a különbséggel, hogy ők több és pontosabb adatot birtokolnak, de valószínű ugyan azokat, mint mi is az iOS 10 előtt.

Talán olvastad, hogy nálam az Apple 93 százalékosra értékelte a két éves iPhone SE akksimat, miközben a ti appotok 86 százaléknak becsülte. Akkor miből ez az eltérés?

Csodálkozom, hogy nálad ekkora difit mutatott az Apple féle cucc. Én múlt héten voltam szervizben, és ott majdnem százalékra pontosan azt mutatta a szerviz okosság, mint az AIDA64, azaz kábé 15 százalékos elhasználódás, 410 ciklussal. De volt nálam iPhone 6-os 70 százalékos wear levellel, na az órákat bírt csak, ráadásul 50% körüli töltöttségről is képes volt lekapcsolni. Ez náluk ugyanúgy döglött akkuként mutatkozott, cserélték is, csak pechemre még a teljes áron, utána jött egy hónappal az akció.

Mi van most, a végső iOS frissítés után, amikor élesben látjátok működni az Apple módszerét?

Nincs még túl nagy mintánk erről, de úgy látjuk egyelőre, hogy az Apple-féle számítás egy picit optimistább, de csak pár százalékos eltérések vannak általában.

Szerinted károsulnak a felhasználók az Apple új szabályozásával?

Azok a felhasználók mindenképp károsulnak, akik iOS 10-et használnak és nem tervezik az iOS 11 feltelepítését. iOS esetében szerencsére elég nagy a frissítők aránya, de akik régebbi eszközöket használnak nem fognak örülni ennek. Ezen felül pont egy-két hónapja beszélgettünk itt a cégnél, hogy jópofa lenne egy akku elhasználódás grafikon az időközönként mért wear level értékekkel, de így ez csak ötlet marad.

Amikor az iOS 10 miatt eltűntek a részletes akku adatok egy időre, elég keményen osztottak minket minden lehetséges csatornán sőt még a mai napig is kapunk olyan kérdéseket, hogy miért vettük ki a hőmérséklet meg a töltés mértéke adatokat és tegyük vissza. A mostani dolog miatt hasonló vagy keményebb "shitstorm" várható majd, hiszen sokkal többen használják ma, mint akkoriban.

Az aktuális AIDA64 iOS verziót tartjuk egyelőre fent, frissíteni nem tudunk rajta, mivel akkor már nem lehet benne az akku kiolvasásra írt kódrészlet. Szerencsére az új eszközök felismerését és adatait tudjuk frissíteni így is, szóval még tudjuk egy kicsit kint hagyni, mérlegeljük mi is, hogy mikor frissítsünk, a húrt sem szeretnénk túlfeszíteni.