Miks Apple lisas iPhone’ile kiibi, mis rikub Face ID?

Categorized as Hardware, Uncategorized @et
Save and Share:

Alustame algusest: milline Face ID süsteem välja näeb ja kuidas see töötab:

Kõik Face ID tööks vajalik raudvara asub just selles ekraani väljalõikes

Riistvaraliselt koosneb see süsteem paarist kaamerast – infrapuna- ja RGB-kaamerast – ning kahest tüüpi infrapuna-kiirgurist – tavalisest taustavalgustusest ja spetsiaalsest punktiprojektorist.

Võtame iPhone X-ilt “naha” maha, eemaldame kõik ülearuse ja näeme esikaamerate plokki palja kujul. Infrapuna-taustavalgustus on eraldi, kuid kõik ülejäänud komponendid on meil käes – need on kindlalt kinnitatud sellesse metallraami.

Siin me näeme infrapunakaamerat ja infrapuna-punktiprojektorit. Just see infrapuna-paar hoiab üleval TrueDepth ja Face ID süsteemide tööd. Ja tänase loo peategelane ongi punktiprojektor.

Face ID lühike tööpõhimõte

iPhone X-i kiirgatavad punktid – foto siit.

Infrapuna-punktiprojektor teeb just seda, mida tema nimetuski ütleb – “sülitab” käsu peale ümbritsevasse maailma kümneid tuhandeid infrapunapunkte. Ja infrapunakaamera, mis seda käsku annab, pildistab need punktid kohe üles.

Teades projektori ja kaamera optilisi omadusi ning nendevahelist kaugust, saab iPhone’i protsessori ISP hinnata, kui kaugel iga punkt asub. Protsessi matemaatikat ma ise lõpuni ei mõista ja selle tagurpidi inseneritöö on raske – kuid erinevate punktimustritega pildiseeria tegemine võimaldab üsna täpselt ära arvata iga üksiku punkti positsiooni ja teha seeläbi tervikliku sügavuskaardi. Ilma LIDARi ja ToF-ita.

Just sügavuskaart võimaldab Face ID-l mitte petta saada printerile trükitud fotodest. Foto on lame – aga näol on reljeef ja Face ID jaoks on “nägude” topograafiline kaart olulisem kui selle värvus.

PrimeSense’i referentskaamera plokkskeem

Kuigi süsteem vaatab ka näo värvust. Infrapunakaamera on riistvaraliselt sünkroniseeritud RGB-kaameraga ja mõlemad kaamerad pildistavad nägu samaaegselt. Lisaks võib iPhone vilgutada mitte ainult infrapuna-projektoriga, vaid ka infrapuna-taustavalgustusega – ja pildistada kogu nägu infrapunaspektris.

Sügavuskaart ise on piisavalt jäme ja näo tekstuuri analüüs infrapuna- ja RGB-piltidel neurovõrgu abil võimaldab nii sügavust täpsustada kui ka paremini mõista detaile nagu miimika – nii päevavalguses kui ka pimedas.

Kui see süsteem tundub teile tuttav, siis on see ilmselt sellepärast, et see on otse Xbox 360 Kinectist välja rebitud. Ainult et Kinect oli tohutu monstrum, aga siin on see kokku surutud nutitelefoni ekraani väljalõike suuruseks.

Selle tegi ettevõte PrimeSense, mis töötas välja tehnoloogiad Kinect 1 aluseks – ja seejärel ostis Apple selle 350 miljoni dollari eest ära. Täielikult – koos kõigi patentide, arenduste, töötajate ja muu sisuga.

Projektori sisikonna lahtivõtmine

Lähme tagurpidi inseneritöös sügavamale: võtame punktiprojektori iPhone X-i kaamerablokist välja ja võtame selle koostisosadeks lahti. See koosneb FPC-kaablist, kiirgavast moodulist ja optilisest moodulist.

Kaabel on täiesti passiivne ja seetõttu vähe huvitav. See on joodetud kiirgava mooduli külge ja viib signaalid FPC-pistikusse, mis ühendatakse iPhone X-i emaplaadiga. Pistiku kontaktide samm on 0,35 mm, kohandatud (Apple on pätid) ja tundub, et see on tehtud ettevõtte JAE poolt.

Vaatame optika peamisi komponente:

Projektor ristlõikes: foto siit, allkirjad minu

Ja vaatame, mis on kiirguri sees:

Ja MOSFET-i ja salapärase kiibi roll hakkas mind huvitama. Miks? Sest pole selge, millega nad seal üldse tegelevad.

Esimene ilmne variant – salapärane kiip on mälu seerianumbri ja kalibreerimisandmete jaoks. Kiibil on mälule tüüpiline I2C liides ja mälu sees kindlasti on. Projektoritel on seerianumbrid, mille järgi saab muu hulgas kindlaks teha tootmiskuupäeva – ja kui projektor tervikuna välja vahetada, siis iPhone näeb seerianumbri mittevastavust ja keeldub asendusega töötamast. Kuid kõige tavalisem I2C EEPROM on pisikeses WLCSP-4 korpuses – ja seda saab isegi ülekirjutamise eest blokeerida, kui väga tahta. Seetõttu ei saa kiip olla lihtne mälu. See teeb kindlasti midagi enamat.

Projektori pinout Hiina meistritelt JCID-ist. Kirjad on vildakad, aga üldiselt klapivad.

Teine ilmne variant – salapärane kiip on laserdraiver ja MOSFET on selle lüliti. Ja jah, MOSFET-i juhitakse tõepoolest kiibiga. Ainult et millegi kriitiliselt olulisega, nagu laserdraiver, ei saa kiip ka olla.

Esiteks seisab MOSFET laserimooduli ühise katoodi katkestuses – ja 4 eraldi anoodi lähevad otse kaablile ja edasi iPhone’i kihilise plaadi sügavustesse. Ja teiseks sattusin andmete kogumise käigus tagurpidi inseneritöö jaoks erinevatele Hiina remondimeistrite juhistele.

MOSFET asendatakse korraliku traadijupiga

Küsimuse olemust nad otse ei selgitanud, kuid paljudes neist juhistest öeldi: “katkise” projektori parandamiseks tuleb see lahti võtta, MOSFET eemaldada ja asendada ühenduslüliga stooki ja lähte vahel. Projektor hakkab lõpuks sees oleva ühenduslüliga tööle ja Face ID funktsionaalsus taastub. Ja kui projektor MOSFET-i asemel oleva ühenduslüliga normaalselt töötab, siis mida see MOSFET seal tegi?

Ja siis jõudis mulle kohale: just see oligi remondi mõte. MOSFET-i juhitakse kiibiga – seega võib see kiibi soovil katkestada laseri toiteahela ja rikkuda seeläbi projektori. Ja see remont kõrvaldab selle katkestuse.

Mis nimes sulle on

Kui sai selgeks, et salapärane kiip koos MOSFET-iga takistab projektori normaalset tööd, siis tekib küsimus – miks ta seda teeb? Miks pannakse projektorisse kiip, mis projektori tapab?

Vastuste otsimiseks kaevusin iPhone’i protsessori ISP-ploki püsivara – just see suhtleb I2C kaudu kaamerasensorite ja projektoriga.

Kõigepealt laadisin alla värske iPhone X-i iOS 15 püsivara kujutise. iPhone’i püsivara kujutised on sisuliselt zip-failid. Seest leidsingi otsitava ISP püsivara – faili kujul Firmwareisp_bniadc-nike-d22.im4p. Pakitud im4p-failist eraldasin binaarfaili, Mach-O formaadis AArch64 koodiga sees. Mach-O, erinevalt tüüpilisest “tundmatu mikrokontrolleri püsivara kujutisest” – on dokumenteeritud käivitatava faili formaat, mis sarnaneb PE või ELF-iga. Ei mingit faili struktuuri, protsessori arhitektuuri või aadressi kohta arvamise mängu, kuhu kood laadida. Lihtsalt viskad faili Ghidrasse ja kõik laguneb ise riiulitele. Mõnus.

Siis võttis instinkt võimust ja ma otsustasin vanemaid püsivara versioone lahti harutada. Ja iOS 13 püsivara kujutisest leidsin faili adc-nike-d22. Isegi suurus oli peaaegu sama. Ainult et uues püsivaras oli rohkem koodi – ja vanas oli koodi vähem, aga olid sümbolid. Kõik funktsioonide nimed olid alles. Kontrolli alati vanemaid versioone!

ISP püsivaras on palju infot, sealhulgas see, kuidas iPhone suhtleb I2C kaudu erinevate kiipidega – kaamerasensorite, kaamera PMU-de, välklampide ja autofookuse juhtkiipidega. Sealt õnnestus tänu sümbolitele välja noppida ka süsteemi erinevate koostisosade “nimed” – ja osa neist on seotud materjalidega püsivara teistest osadest, aga ka teiste tagurpidi inseneride ja remondimeeste materjalidega. Näiteks infrapunakaamera sensor on STMicroelectronics VD56G0 “Savage”. Kogu TrueDepth süsteemi nimetatakse koodis “Pearl” ja selle peamistele moodulitele on antud nimed “Romeo ja Julia” tegelaste järgi. Infrapuna-projektor on “Romeo”, infrapunakaamera on “Juliet” ja infrapuna-taustavalgustus on “Rosaline”. Laseridraiver, mis asub iPhone’i emaplaadil ja toidab nii “Romeo” sees olevaid lasereid kui ka “Rosaline” taustavalgustuse laserit, on “Rigel”.

Meid huvitav salapärane kiip? Ka temal on nimi. Koodis nimetatakse teda “MamaBear”, lühidalt “MB”, ja tundub, et tema funktsionaalsus on üsna lihtne. Ta elab I2C siinil. Ta hoiab endas OTP-andmeid, sealhulgas seerianumbrit ja erinevaid kalibreeringuid. Ta lülitab MOSFET-i käsu peale sisse ja välja. Ja veel ta mõõdab… mahtuvust? Mitte temperatuuri, NTC-termistoriga ta üldse ühendatud ei ole, vaid just mahtuvust. Aga mille mahtuvust?

Romeo traagiline hukkumine

Vastuse sellele küsimusele aitavad meil jälle saada Hiina skeemid. JCID-i skeemist on näha, et “Romeo” moodulis on kolm kontakti kiirgava mooduli ühendamiseks optilise mooduliga. Üks on maandus ja veel kaks lähevad otse “MamaBear” kiipi. Need kontaktid läbivad spetsiaalset adapterit optilise mooduli küljel ja jõuavad selle kõige ülemisse ossa – difraktsioonoptilise elemendini.

Difraktsioonkiire jagaja on juhitamatu ja voolule ei reageeri. Kuid sellel on mahtuvus. Ja nende kolme liini abil saab seda mahtuvust mõõta. Aga milleks?

Asi on selles, kui olulist rolli see difraktsioonkiire jagaja mängib. Projektori kasutatava punktimustri määrab VСSEL-kristallil asuvate pisikeste laser-“aukude” asukoht. Ja siis seda mustrit paljundab difraktsioonielement, mis teeb ühest valgusvihust sadu valgusvihke.

Anoodi “SPARSE” laserite asukoha ja projitseeritavate punktide võrdlus

Ja mis siis juhtub, kui see difraktsioonielement lahti rebida?

Kiired ei jagune. Sadade laserkiirte asemel on üks kiir – aga sada korda võimsam. Ja see on ikkagi laser. Infrapunalaser on ohtlikum kui punane, sest inimene seda ei näe – ja seetõttu ei hakka instinktiivselt pilku ära pöörama isegi ohtlikult võimsast valgusallikast. Ja on nullist erinev tõenäosus, et sellisel juhul põletatakse iseloomulik punktimuster kasutaja võrkkesta.

Selle vältimiseks ongi vaja tapjakiipi. Pärast sisselülitamist jälgib see pidevalt difraktsioonielemendi mahtuvust – ja kui element osutub väljalõhutuks või kahjustatuks, siis mahtuvus väljub lubatud piiridest ja kiip lülitab kohe MOSFET-i välja ja katkestab VCSEL-i toite. Ja kuna element asub optilise mooduli kõige ülemises osas, siis on peaaegu võimatu kahjustada löögiga ülejäänud moodulit, ilma et seda elementi kahjustamata ja kontakti rikkumata.

Pärast laseri avariilist väljalülitamist põletab kiip endale OTP-sse lipu, mis märgib projektori defektseks – ja seega jääb katkestatud toide igavesti katkestatuks. Ükski ISP käsk ei oma enam selle üle jõudu. MOSFET on alati suletud ja projektor ei tööta enam kunagi.

Kiip “MamaBear”, nagu nimigi vihjab – on kaitsekiip. See on laseri avariiseiskamiseks mõeldud “killswitch”. See tapab projektori, et mitte lasta kahjustatud laserseadmel kasutaja silma paista. Ja moodul “Juliet”, jäädes ilma oma paarilisest “Romeost”, kaotab elumõtte – ja kogu TrueDepth süsteem muutub kasutuks.

Tehnopreestrite tööpäevad

Kuid sellel kaitseskeemil on puudus. Asi on selles, et punktiprojektor asub seadme ülemises servas ja kõlari kõrval. Kui iPhone’i satub vedelikku, siis üks sagedasemaid kohti selleks on just seal. Ja mahtuvusandurid on tundlikud voolu juhtivate vedelike suhtes. Seetõttu juhtub sageli, et Face ID läheb katki pärast seadme vette kukkumist – isegi kui veekahjustus on minimaalne ja muid kahjustusi pole. Lihtsalt “Romeo” ei saanud olukorrast õigesti aru ja tegi asjata “Roskomnadzori”.

Sellised seadmed viiakse remonti. Sageli mitteametlikku remonti. Ja kuna iPhone kontrollib varuosade seerianumbreid (tere, Apple), siis lihtsalt vahetada kogu kaamerablokki töökorras bloki vastu doonorilt ei saa. Telefon tõrjub uue bloki tagasi ja Face ID ikka ei tööta. Seega tuleb kuidagi vana parandada. Aga kuidas saab “ülestõsta” projektorit, mis on end ise tahtlikult rivist välja viinud?

Mitteametlike remonditööriistade tootjad on selle jaoks välja mõelnud terve rea erinevaid rituaale. Ja osavad tehno-preester-remondimehed järgivad neid pühalt ja teevad selle keeruka ja kalibreeritud optilise süsteemi mikro-kirurgiat. Käte osavus peab olema kujuteldamatu – komponendid sees on vaid mõne millimeetri suurused ja optika on äärmiselt tundlik. Kui kalibreerimine kirurgiliste sekkumiste tõttu liiga palju paigast nihkub, siis süsteem ei tööta. Tarkvaralisi ümberkalibreerimise tööriistu pole olemas (tere, Apple) – sa kas leiad viisi originaalparameetritesse sattumiseks või jääd ilma Face ID-ta.

«Kõrgepinge» programmeerija

Kuidas see töötab? Noh, esimese asjana tuleb lugeda OTP-andmed originaal-kiibist “MamaBear”.

Andmed on loetavad isegi siis, kui projektor peab end vigaseks. Andmete väljalugemiseks teevad hiinlased spetsiaalseid “remondi” programmeerijaid – mis tarnitakse koos pistikute-adapterite komplektidega ja töötavad terve rea erinevate iPhone’i mudelite komponentidega, sealhulgas ka projektoritega.

Ja siis tuleb teha kaks asja – tegeleda toidet katkestava MOSFET-iga ja asendada originaal-kaitsekiip. Ja siin on palju erinevaid meetodeid.

Kaabel petukiibiga

Võib näiteks visata MOSFET-i asemele ühenduslüli, nagu on näha ülaltoodud fotol artiklis, ja kiip “MamaBear” asendada, jootes originaal-FPC-kaabli lahti ja asendades selle spetsiaalse Hiina petukiibiga kaabliga.

Originaal-kiip “MamaBear” võib seejuures sees edasi olla ja jõuetult karjuda, et projektor mingil juhul ei tohiks töötada. Kuid tal pole enam MOSFET-i, et projektorit sunniviisiliselt välja lülitada, ja iPhone näeb omalt poolt ainult Hiina kiipi – mis annab programmeerijaga valatud originaalandmete koopia ja teatab, et projektor on kindlasti-kindlasti korras.

Kraabime vanad sisikonnad välja ja paneme uued asemele

Ja võib ka kiibi “MamaBear” tervikuna välja rebida ja panna selle tavapärasele kohale Hiina “kaks-ühes” asenduse – see nii sulgeb MOSFET-i kontaktid kui ka annab telefoni OTP-andmete koopia.

Adapterplaat petukiibiga

Noh, ja on variant minimaalse jootmisega. “Adapter” petukiibiga, mis pannakse originaalkaabli ja iPhone’i emaplaadi vahele.

MOSFET-i probleemi see ei lahenda, aga ka sellele leidsid hiinlased originaalse lähenemise, tehes “kõrgepinge” programmeerijad.

Teate, kuidas igasuguseid ATtiny’sid saab “kivist välja” aidata ja ümber kirjutada spetsiaalse kõrgepinge programmeerija abil? Siin on olukord hoopis teine. Hiina kõrgepinge programmeerija “programmeerib” MOSFET-i projektori sees jõhkralt ja pöördumatult lühisesse stooki ja lähte vahel.

Remondi viimases etapis ühendame projektori programmeerijaga veel kord ja valame sellesse esimeses etapis salvestatud dämpi. Ja projektor on valmis töötama, esinedes originaalse ja modifitseerimata seadmena.

Kõiki neid erinevaid seadmeid teevad ja edendavad erinevad remondiseadmete müüjad. Igasugused petukiibid töötavad ainult “omade” programmeerijatega ja programmeerijates on sageli DRM-funktsioonid, nagu konto sidumine ja piiratud arv “remonte”, mille täiendamise eest tuleb maksta.

Kas remondimehed teavad, et nad oma remondiga hävitavad täielikult süsteemi, mille Apple on välja mõelnud kasutaja silmade kaitsmiseks? Tegelikult ei tea. Nad pole tagurpidi insenerid – nad on šamaanid. Tööpõhimõtete mõistmist neil pole. Neil on rituaalid ja on tulemused ja sellest neile piisab. Ja kavalad tagurpidi insenerid Hiinast jagavad oma saladusi avalikkusega vastumeelselt. See, mida ma selles artiklis kirjeldasin, on täies mahus teada ainult Apple’i inseneridele ja kümmekonnale hiinlasele, kes on “teemas”. Ja mulle. Ja nüüd ka sulle.

Miks Apple on jobukad

Teate, ma ei saa liiga palju süüdistada Apple’i insenere selles, et nende “killswitch” on liiga aktiivne ja rikub projektoreid, mis võiksid veel vabalt töötada. Laserid on ohtlik teema ja idee kaitsta kasutajat “halvimate stsenaariumide” eest on täiesti terve mõistusega. Kuigi selle kaitse rakendamine vajab veel täiustamist.

Kuid Apple’i poliitika võitluses mitteametlike remontide vastu – see on kõige suurem kurjus. Kui TrueDepth plokke saaks rahulikult seadmest seadmesse vahetada, seerianumbreid arvestamata, siis ei oleks nendel kohutavatel perverssetel remondirituaalidel praktiliselt mingit mõtet. Miks perverditseda mikro-kirurgilise jootmisega ja tantsida programmeerijatega, kui saab võtta järjekordselt “doonorilt” katkise ekraaniga täiesti töökorras TrueDepth ploki, panna see kliendi telefoni, taastada täielikult funktsionaalsus ja elada rahulikult? Remondimeestele oleks see lihtsam ja seadmete omanikele – turvalisem.

Kuid Apple’i jobukate remondivastase käitumise ajalugu näitab selgelt, et seda ei juhtu. Noh, kui just USA-s või EL-is ei muuda igasugused “Right to Repair” liikumised varuosade sidumist seerianumbritega ebaseaduslikuks. Ja see on praegu võimalik. Naljas selle kohta, et Euroopa Liit lisab iPhone’i uutele mudelitele rohkem kasulikke funktsioone kui Apple, on väga suur osa tõde. Nii et jälgime seadusandlikke algatusi.

Artikkel on tõlgitud vene keelest. Artikli autor: acc0unt. Püüdsime säilitada autori originaalstiili ja sõnastust nii palju kui võimalik tõlkimisel.

Leave a comment

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga