Začněme od začátku: jak systém Face ID vypadá a jak funguje:


Hardwarově se tento systém skládá z dvojice kamer – IR a RGB, a dvou typů IR zářičů – běžného osvětlení a specializovaného projektoru bodů.
Sundáme z iPhonu X slupku, odstraníme vše nepotřebné a uvidíme blok předních kamer v holé podobě. IR osvětlení existuje samostatně, ale všechny ostatní komponenty máme v ruce – jsou spolehlivě upevněny v tomto kovovém rámečku.
Zde vidíme IR kameru a projektor IR bodů. Právě na této infračervené dvojici stojí funkčnost systémů TrueDepth a Face ID. A hlavním hrdinou dnešního vyprávění je právě projektor bodů.
Stručný princip fungování Face ID

Projektor IR bodů dělá přesně to, co říká jeho název – chrlí na povel do okolního světa desítky tisíc infračervených bodů. A IR kamera, která i dává tento povel, tyto body okamžitě fotografuje.
Díky znalosti optických charakteristik projektoru, kamery a vzdálenosti mezi nimi, může ISP v procesoru iPhonu odhadnout, jak daleko se každý bod nachází. Matematiku procesu sám do konce nechápu a reverzní inženýrství by bylo těžké – ale pořízení série snímků s různými vzory bodů umožňuje velmi přesně uhodnout pozici každého jednotlivého bodu, a vytvořit tak celistvou mapu hloubky. Bez LIDARu a bez ToF.
Právě mapa hloubky umožňuje Face ID, aby se nenechalo oklamat fotografiemi vytištěnými na tiskárně. Fotografie je plochá – a obličej má reliéf, a pro Face ID je topografická mapa obličeje důležitější než jeho barva.

Nicméně, na barvu obličeje se systém také dívá. IR kamera je hardwarově synchronizovaná s RGB kamerou a obě kamery snímají obličej současně. A iPhone může blikat nejen IR projektorem, ale i IR osvětlením – a snímat celý obličej v IR spektru.
Mapa hloubky je sama o sobě poměrně hrubá, a analýza textury obličeje v IR a RGB snímcích pomocí neuronové sítě umožňuje jak zpřesnit hloubku, tak i lépe se orientovat v detailech, jako je mimika – a to jak za denního světla, tak i ve tmě.
Pokud vám tento systém připadá povědomý, pak je to pravděpodobně proto, že je přímo převzatý z Kinectu od Xboxu 360. Jen ten Kinect byl obrovské monstrum, a tady ho scvrkli do velikosti výřezu v displeji smartphonu.
Učinila tak společnost PrimeSense, která vyvinula technologie v základu Kinectu 1 – a poté byla koupena Apple za 350 milionů dolarů. Celá – se všemi patenty, know-how, zaměstnanci a jinými vnitřnostmi.
Rozebíráme střeva projektoru

Jdeme hlouběji do reverzního inženýrství: vyjmeme projektor bodů z bloku kamer iPhone X a rozebereme ho na součástky. Skládá se z FPC páskového kabelu, vyzařovací sestavy a optické sestavy.
Pásek je zcela pasivní, a proto málo zajímavý. Připájí se k vyzařovací sestavě a vyvádí signály na FPC konektor, který se připojuje k základní desce iPhone X. Konektor s roztečí pinů 0,35 mm, custom (Apple jsou parchanti), a vypadá to, že je vyroben společností JAE.
Podívejme se na hlavní komponenty optiky:

A podívejme se, co se nachází uvnitř zářiče:

A role MOSFETu a tajemného čipu mě zaujala. Proč? Protože není jasné, co tam vlastně dělají.
První zřejmá varianta – tajemný čip je paměť pro sériové číslo a kalibrační data. Čip má typické rozhraní I2C pro paměti a paměť uvnitř určitě je. Projektory mají sériová čísla, podle kterých lze mimo jiné určit datum výroby – a pokud projektor vyměníte celý, iPhone uvidí neshodu sériového čísla a s výměnou odmítne pracovat. Ale nejběžnější I2C EEPROM se vyskytuje v drobném pouzdře WLCSP-4 – a lze ho dokonce zablokovat proti přepsání, pokud se vám chce. Proto jednoduchou pamětí čip být nemůže. Určitě dělá něco víc.

Druhá zřejmá varianta – tajemný čip je driver laserů a MOSFET je jeho klíč. A ano, MOSFET je skutečně řízen čipem. Jenže něčím kriticky důležitým, jako je driver laseru, čip také být nemůže.
Za prvé, MOSFET stojí v přerušení společné katody laserové sestavy – a 4 oddělené anody vycházejí přímo na pásek a jdou dále do útrob vrstvené desky iPhonu. A za druhé, během sběru dat pro reverzní inženýrství jsem narazil na různé instrukce od čínských opravářských mistrů.

Podstatu problému přímo neobjasnily, ale v mnoha z těchto instrukcí se uvádělo: pro opravu „rozbitého“ projektoru je třeba ho rozebrat, MOSFET odstranit a nahradit propojkou mezi drainem a source. Projektor nakonec s propojkou uvnitř zafunguje a funkčnost Face ID se obnoví. A když projektor s propojkou místo MOSFETu normálně funguje, co tam ten MOSFET dělal?
A mě napadlo: v tom právě spočívala podstata opravy. MOSFET je řízen čipem – proto může na přání čipu přerušit napájení laseru a tím projektor zničit. A oprava toto přerušení odstraňuje.
Co v jménu tvém
Když už je jasné, že tajemný čip v páru s MOSFETem brání normálnímu fungování projektoru, vyvstává otázka – proč to dělá? Proč do projektoru dávají čip, který projektor zabíjí?
Pro odpovědi jsem se ponořil do firmwaru bloku ISP v procesoru iPhonu – právě ten komunikuje po I2C se senzory kamer a s projektorem.
Nejprve jsem stáhl obraz firmwaru iOS 15 pro iPhone X, čerstvý. Obrazy firmwaru pro iPhone jsou v podstatě zip soubory. Uvnitř jsem našel hledaný firmware ISP – v podobě souboru Firmwareisp_bniadc-nike-d22.im4p
. Z komprimovaného im4p souboru se extrahoval binární soubor ve formátu Mach-O s AArch64 kódem uvnitř. Mach-O, na rozdíl od typického „obrazu firmwaru pro neznámý mikrokontrolér“ – je zdokumentovaný formát spustitelného souboru, podobný PE nebo ELF. Žádné hádání o struktuře souboru, architektuře procesoru nebo adrese, na kterou je třeba nahrát kód. Prostě hodíte soubor do Ghidry a vše se samo uspořádá. Příjemné.

Potom se projevil instinkt a rozhodl jsem se rozpitvat starší firmwary. A v obraze firmwaru iOS 13 jsem našel soubor adc-nike-d22. Dokonce i velikost byla téměř stejná. Jenže v novém firmwaru bylo více kódu – a ve starém kódu bylo méně, zato tam byly symboly. Všechny názvy funkcí na místě. Vždycky kontrolujte starší verze!
Ve firmwaru ISP je spousta informací, včetně toho, jak iPhone komunikuje po I2C s různými čipy – se senzory kamer, s PMU kamer, s čipy pro řízení blesků a autofokusu. Odtud se, díky symbolům, podařilo získat „jména“ různých součástí systému – a část z nich odpovídá materiálům z jiných částí firmwaru a také od jiných reverzních inženýrů a opravářů. Například senzor IR kamery – to je STMicroelectronics VD56G0 “Savage”. Celý systém TrueDepth se v kódu nazývá “Pearl” a jeho hlavním modulům jsou dána jména postav z “Romea a Julie”. IR projektor se nazývá “Romeo”, IR kamera – “Julie” a IR osvětlení se nazývá “Rosaline”. Driver laserů, který žije na základní desce iPhonu a napájí jak lasery uvnitř “Romea”, tak i laser uvnitř osvětlení “Rosaline”, se nazývá “Rigel“.
Tajemný čip, který nás zajímá? I ten má jméno. V kódu se nazývá “MamaBear”, zkráceně “MB”, a vypadá to, že jeho funkčnost je velmi jednoduchá. Žije na sběrnici I2C. Ukládá v sobě OTP data, včetně sériového čísla a různých kalibrací. Zapíná a vypíná na povel MOSFET. A ještě měří… kapacitu? Ne teplotu, k NTC termistoru vůbec není připojen, ale právě kapacitu. Jenže kapacitu čeho?
Tragická smrt Romea

Odpověď na tuto otázku nám opět pomáhají získat čínská schémata. Ve schématu od JCID je vidět, že v modulu “Romeo” jsou tři kontakty pro spojení vyzařovací sestavy s optickou sestavou. Jeden – zem, a ještě dva jdou přímo do čipu “MamaBear”. Tyto kontakty procházejí speciálním přechodem na boku optické sestavy a dostávají se na její samotný vrch – na difrakční optický element.
Difrakční štěpitel paprsku je neřízený a na proud nereaguje. Ale má kapacitu. A pomocí těch tří linek lze tuto kapacitu měřit. Ale proč?
Jde o to, jak důležitou roli hraje tento difrakční štěpitel. Vzor bodů, používaných projektorem, je dán umístěním drobných laserů-„jam“ na VCSEL krystalu. A pak se tento vzor rozmnožuje difrakčním elementem, který z jednoho svazku paprsků dělá stovky svazků paprsků.

A co se tedy stane, pokud tento difrakční element utrhneme?
Paprsky se nebudou štěpit. Místo stovek svazků laserových paprsků bude jeden svazek – zato stokrát silnější. A to je přece jen laser. Infračervený laser je nebezpečnější než červený, protože ho člověk nevidí – a proto instinktivně neodvrátí pohled ani od nebezpečně silného zdroje světla. A existuje nenulová šance, že charakteristický vzor z bodů se v takovém případě uživateli vypálí do sítnice.
Pro prevenci tohoto je potřeba čip-zabiják. Po zapnutí neustále sleduje kapacitu difrakčního elementu – a pokud se element ukáže být vylomený nebo poškozený, pak kapacita vyletí za hranice povoleného a čip okamžitě odpojí MOSFET a přeruší napájení VCSEL. A protože se element nachází na samém vrchu optické sestavy, poškodit nárazem zbytek sestavy, aniž by se přitom zlomil on a nenarušil kontakt, je prakticky nemožné.
Po nouzovém vypnutí laseru si čip vypálí do OTP flag, který označuje projektor jako defektní – a to znamená, že přerušené napájení navždy zůstane přerušené. Žádné povely z ISP už nad ním nebudou mít moc. MOSFET bude vždy uzavřený a projektor už nikdy nebude fungovat.
Čip “MamaBear”, jak napovídá název – je to čip ochrany. Je to “killswitch” pro nouzové zastavení laseru. Zabíjí projektor, aby zabránil poškozenému laserovému zařízení svítit uživateli do očí. A modul “Julie”, zůstavší bez svého párového “Romea”, ztrácí smysl života – a celý systém TrueDepth se stává nepoužitelným.
Pracovní den technokněží
Ale toto schéma ochrany má chybu. Jde o to, že projektor bodů stojí na horním okraji zařízení a vedle reproduktoru. Pokud se dovnitř iPhonu dostane kapalina, tak jedno z nejčastějších míst pro to – je právě tam. A kapacitní senzory jsou citlivé na kapaliny vedoucí proud. Proto se často stává, že se Face ID rozbije po pádu zařízení do vody – i když je vniknutí vody minimální a žádná jiná poškození nejsou. Prostě “Romeo” špatně pochopil situaci a zbytečně provedl Roskomnadzor.
Taková zařízení se nosí do opravy. Často do neoficiální opravy. A protože iPhone porovnává sériová čísla náhradních dílů (zdravíme, Apple), tak jednoduše vyměnit celý blok kamer za funkční blok z dárce nelze. Telefon bude odmítat nový blok a Face ID stejně nebude fungovat. Znamená to, že je třeba nějakým způsobem opravit starý. Ale jak lze „vzkřísit“ projektor, který sám sebe záměrně vyřadil z provozu?
Výrobci neoficiálních nástrojů pro opravy vymysleli pro to celou řadu různých rituálů. A šikovní technokněží-opraváři je svatě dodržují a provádějí mikrochirurgii tohoto složitého a kalibrovaného optického systému. Šikovnost rukou je potřeba nepředstavitelná – komponenty uvnitř mají velikost v řádu milimetrů a optika je extrémně citlivá. Pokud se kalibrace v důsledku chirurgických zákroků příliš vychýlí, systém nebude fungovat. Nástroje pro softwarovou rekalibraci neexistují (zdravíme, Apple) – buď najdete způsob, jak se dostat do původních parametrů, nebo zůstanete bez Face ID.

Jak to funguje? No, prvním krokem je načíst OTP data z originálního čipu “MamaBear”.
Data jsou čitelná, i když projektor považuje sám sebe za nefunkční. Pro načítání dat Číňané vyrábějí speciální „opravárenské“ programátory – které se dodávají se sadami konektorů-adaptérů a pracují s celou řadou různých komponent od různých modelů iPhonů, včetně projektorů.
A pak je třeba udělat dvě věci – vypořádat se s MOSFETem, který přerušuje napájení, a nahradit originální čip ochrany. A zde existuje mnoho různých metod.

Můžete například dát místo MOSFETu propojku, jako na fotce výše v článku, a čip “MamaBear” nahradit, odletováním originálního FPC pásku a jeho nahrazením speciálním páskem s čínským čipem-podvodníkem.
Originální čip “MamaBear” přitom může zůstat uvnitř a bezmocně řvát o tom, že projektor v žádném případě nemá fungovat. Ale už nemá MOSFET, aby projektor nuceně vypnul, a iPhone ze své strany vidí pouze čínský čip – který vydává programátorem nahranou kopii originálních dat a hlásí, že projektor je naprosto v pořádku.

A lze vytrhnout čip “MamaBear” celý a dát na jeho standardní místo čínskou náhradu dva v jednom – ta i kontakty MOSFETu propojí a kopii dat OTP do telefonu odevzdá.

No a existuje varianta s minimem pájení. „Adaptér“ s čipem-podvodníkem, který se vkládá mezi originální pásek a základní desku iPhonu.
Problém s MOSFETem neřeší, ale i k němu Číňané našli originální přístup, když vyrobili „vysokonapěťové“ programátory.
Víte, jak lze různé ATtiny „odbrickovat“ a přepsat pomocí speciálního vysokonapěťového programátoru? Zde je situace úplně jiná. Čínský vysokonapěťový programátor brutálně a nevratně „programuje“ MOSFET uvnitř projektoru do zkratu mezi drainem a source.
V posledním kroku opravy připojíme projektor k programátoru ještě jednou a nahrajeme do něj uložený dump z prvního kroku. A projektor je připraven fungovat, vydávaje se za originální a nemodifikovaný.
Všechny tyto různé pomůcky vyrábějí a propagují různí prodejci opravárenského vybavení. Všechny možné čipy-podvodníky fungují pouze s „rodnými“ programátory a v programátorech často bývají DRM funkce, jako je vazba na účet a omezený počet „oprav“, za jejichž doplnění se musí platit.
Vědí opraváři, že svou opravou kompletně ničí systém, vymyšlený Apple pro ochranu očí uživatele? Ve skutečnosti ne. Nejsou to reverzní inženýři – jsou to šamani. Pochopení principů fungování nemají. Mají rituály a mají výsledky a to jim stačí. A vychytralí reverzní inženýři z Číny se neradi dělí o svá tajemství s veřejností. To, co jsem popsal v tomto článku, je v plném rozsahu známo pouze inženýrům Applu a desítce Číňanů „v tématu“. A mně. A tobě, teď už taky.
Proč je Apple hnusný
Víte, nemůžu moc vinit inženýry Applu za to, že jejich “killswitch” je příliš aktivní a ničí projektory, které by klidně ještě mohly fungovat. Lasery – to je nebezpečná věc a myšlenka chránit uživatele před „nejhoršími scénáři“ je naprosto rozumná. I když realizace této ochrany vyžaduje vylepšení.
Ale politika Applu v boji proti neoficiálním opravám – to je nejhorší ze všech zel. Kdyby se daly bloky TrueDepth klidně měnit z přístroje na přístroj, bez ohledu na sériová čísla, pak by v hrozných zvrácených rituálech oprav prakticky nebylo smyslu. Proč se trápit s mikrochirurgickou pájením a tančit s programátory, když lze sundat z dalšího „dárce“ s rozbitým displejem naprosto funkční blok TrueDepth, dát ho do telefonu zákazníka, plně obnovit funkčnost a žít v klidu? Opravářům by to bylo jednodušší a majitelům zařízení – bezpečnější.
Ale historie hnusného protireparátorského chování Applu jasně ukazuje, že se to nestane. No, pokud v USA nebo v EU různé hnutí “Right to Repair” neučiní přiřazování náhradních dílů podle sériových čísel nezákonným. A to je nyní možné. Na vtipu o tom, že Evropská unie přidává do nových modelů iPhonu více užitečných funkcí než Apple, je velký kus pravdy. Takže budeme sledovat legislativní iniciativy.
Článek byl přeložen z ruštiny. Autor článku: acc0unt. Snažili jsme se zachovat originální styl a formulace autora, nakolik je to možné při překladu.