Låt oss börja från början: hur Face ID-systemet ser ut och hur det fungerar:


Hårdvarumässigt består detta system av ett par kameror – IR och RGB, och två typer av IR-sändare – vanlig belysning och en specialiserad punktprojektor.
Vi tar bort skalet från en iPhone X, tar bort allt onödigt och ser frontkamerablocket i ren form. IR-belysningen finns separat, men alla andra komponenter har vi i våra händer – de är säkert fastsatta i denna metallram.
Här ser vi IR-kameran och IR-punktprojektorn. Det är på detta infraröda par som TrueDepth- och FaceID-systemens funktion bygger. Och dagens huvudperson är just punktprojektorn.
Kort princip för FaceID:s funktion

IR-punktprojektorn gör just det som namnet antyder – den spottar ut tiotusentals infraröda punkter i omvärlden på kommando. Och IR-kameran, som också ger detta kommando, fotograferar omedelbart dessa punkter.
Med kunskap om de optiska egenskaperna hos projektorn, kameran och avståndet mellan dem, kan ISP:n i iPhone-processorn uppskatta hur långt bort varje punkt befinner sig. Jag förstår inte matematiken bakom processen fullt ut själv, och det skulle vara svårt att reverse engineera den – men att ta en serie bilder med olika punktmönster gör det möjligt att ganska exakt gissa positionen för varje enskild punkt, och på så sätt skapa en komplett djupkarta. Utan LIDAR och utan ToF.
Det är just djupkartan som gör att FaceID inte luras av utskrivna fotografier. Ett fotografi är platt – men ett ansikte har relief, och för FaceID är en topografisk karta över ansiktet viktigare än dess färg.

Systemet tittar dock också på ansiktets färg. IR-kameran är hårdvarusynkroniserad med RGB-kameran, och båda kamerorna fotograferar ansiktet samtidigt. Och iPhone kan blinka inte bara med IR-projektorn, utan även med IR-belysningen – och fotografera hela ansiktet i IR-spektrumet.
Djupkartan i sig är ganska grov, och analysen av ansiktets textur i IR- och RGB-bilder med hjälp av ett neuralt nätverk gör det möjligt att både förfina djupet och bättre förstå detaljer som mimik – både i dagsljus och i mörker.
Om detta system verkar bekant för dig, beror det förmodligen på att det är direkt taget från Kinect från Xbox 360. Bara att Kinect var en enorm klump, medan den här har krympts till storleken av en flärp i en smartphoneskärm.
Detta gjordes av företaget PrimeSense, som utvecklade tekniken bakom Kinect 1 – och sedan köptes upp av Apple för 350 miljoner dollar. Helt och hållet – med alla patent, utvecklingsarbete, anställda och annat inkråm.
Vi undersöker projektorns inre delar

Vi går djupare in i reverse engineering: vi tar ut punktprojektorn från kamerablocket i iPhone X och delar upp den i beståndsdelar. Den består av en FPC-kabel, en sändarenhet och en optisk enhet.
Kabeln är helt passiv och därför ointressant. Den är lödd till sändarenheten och leder signaler till FPC-kontakten, som ansluts till iPhone X:s moderkort. Kontakten har ett kontaktavstånd på 0,35 mm, är specialtillverkad (Apple är jobbiga) och verkar vara tillverkad av företaget JAE.
Låt oss titta på de viktigaste optiska komponenterna:

Och låt oss se vad som finns inuti sändaren:

Och MOSFET:ens och det mystiska chipets roll intresserade mig. Varför? För att det är oklart vad de egentligen gör där.
Det första uppenbara alternativet är att det mystiska chipet är ett minne för serienummer och kalibreringsdata. Chippet har ett typiskt I2C-gränssnitt för minne, och det finns definitivt minne inuti. Projektorer har serienummer, med vilka man bland annat kan fastställa tillverkningsdatum – och om projektorn byts ut helt kommer iPhone att se en avvikelse i serienumret och vägra att fungera med utbytet. Men den vanligaste I2C EEPROM finns i ett pyttelitet WLCSP-4-hölje – och det kan till och med spärras från överskrivning om man verkligen vill. Därför kan chipet inte bara vara ett enkelt minne. Det gör definitivt något mer.

Det andra uppenbara alternativet är att det mystiska chipet är en laserdrivrutin, och MOSFET:en är dess brytare. Och ja, MOSFET:en styrs faktiskt av chipet. Men chipet kan inte heller vara något kritiskt viktigt som en laserdrivrutin.
För det första sitter MOSFET:en i en brytning av den gemensamma katoden på laserenheten – och 4 separata anoder går direkt ut till kabeln och vidare in i djupet av iPhone:s lagerkort. Och för det andra stötte jag under datainsamlingen för reverse engineering på olika instruktioner från kinesiska reparationsmästare.

De klargjorde inte kärnan i frågan direkt, men i många av dessa instruktioner sades det: för att reparera en ”trasig” projektor måste man ta isär den, ta bort MOSFET:en och ersätta den med en bygel mellan dräneringen och källan. Projektorn kommer i slutändan att fungera med bygeln inuti, och FaceID-funktionen kommer att återställas. Men om projektorn fungerar normalt med en bygel istället för MOSFET:en, vad gjorde då denna MOSFET där?
Och då slog det mig: det var just det som var kärnan i reparationen. MOSFET:en styrs av chipet – så på chipets begäran kan den bryta strömförsörjningen till lasern och därmed förstöra projektorn. Och reparationen åtgärdar detta avbrott.
Vad är ditt namn
Nu när det har blivit klart att det mystiska chipet i kombination med MOSFET:en hindrar projektorn från att fungera normalt, uppstår frågan – varför gör den det? Varför sätter man in ett chip i projektorn som dödar projektorn?
För att få svar gick jag in i firmwaren för ISP-blocket i iPhone-processorn – det är den som pratar med I2C med kamerasensorerna och projektorn.
Först laddade jag ner en firmware-image av iOS 15 för iPhone X, en färsk sådan. Firmware-images för iPhone är i princip zip-filer. Inuti hittade jag den eftersökta ISP-firmwaren – i form av filen Firmwareisp_bniadc-nike-d22.im4p
. Från den komprimerade im4p-filen extraherades en binärfil i Mach-O-format med AArch64-kod inuti. Mach-O, till skillnad från en typisk ”firmware-image för en okänd mikrokontroller” – är ett dokumenterat format för en körbar fil, som liknar PE eller ELF. Inga gissningar om filstrukturen, processorarkitekturen eller adressen som koden ska laddas till. Man bara lägger filen i Ghidra och allt faller på plats av sig självt. Skönt.

Sedan tog instinkten över, och jag bestämde mig för att rota igenom äldre firmwares. Och i firmware-imagen för iOS 13 hittade jag filen adc-nike-d22. Storleken var till och med nästan densamma. Men i den nya firmwaren fanns det mer kod – och i den gamla fanns det mindre kod, men det fanns symboler. Alla funktionsnamn fanns på plats. Kontrollera alltid äldre versioner!
I ISP-firmwaren finns det mycket information, inklusive hur iPhone kommunicerar via I2C med olika chip – med kamerasensorer, med kamera-PMU:er, med chip för blixtstyrning och autofokus. Därifrån, tack vare symbolerna, lyckades jag extrahera ”namnen” på olika delar av systemet – och en del av dem korrelerar med material från andra delar av firmwaren, samt från andra reverse engineers och reparatörer. Till exempel är IR-kamerasensorn en STMicroelectronics VD56G0 ”Savage”. Hela TrueDepth-systemet kallas ”Pearl” i koden, och dess huvudmoduler har fått namn efter karaktärer från ”Romeo och Julia”. IR-projektorn kallas ”Romeo”, IR-kameran – ”Julia”, och IR-belysningen kallas ”Rosaline”. Laserdrivrutinen, som sitter på iPhone:s moderkort och matar både lasrarna inuti ”Romeo” och lasern inuti belysningen ”Rosaline”, kallas ”Rigel”.
Det mystiska chipet som intresserar oss? Det har också ett namn. I koden kallas det ”MamaBear”, kort ”MB”, och dess funktionalitet verkar vara ganska enkel. Det sitter på I2C-bussen. Det lagrar OTP-data, inklusive serienummer och olika kalibreringar. Det slår på och av MOSFET:en på kommando. Och det mäter även… kapacitans? Inte temperatur, det är inte anslutet till en NTC-termistor alls, utan just kapacitans. Men kapacitansen hos vad?
Romeo tragiska död

Svaret på den frågan får vi återigen hjälp med av kinesiska scheman. I schemat från JCID ser man att det i modulen ”Romeo” finns tre kontakter för att ansluta sändarenheten till den optiska enheten. En är jord, och ytterligare två går direkt till ”MamaBear”-chippet. Dessa kontakter går genom en speciell adapter på sidan av den optiska enheten, och hamnar på dess översta del – på det diffraktiva optiska elementet.
Den diffraktiva stråldelaren är ostyrbar och reagerar inte på ström. Men den har kapacitans. Och med hjälp av de tre ledningarna kan man mäta denna kapacitans. Men varför?
Saken är den hur viktig roll denna diffraktiva stråldelare spelar. Mönstret av punkter som används av projektorn bestäms av placeringen av pyttesmå laser-”gropar” på VCSEL-kristallen. Och sedan mångfaldigas detta mönster av ett diffraktionselement, som gör hundratals strålar av en enda stråle.

Så vad händer om detta diffraktionselement lossnar?
Strålarna kommer inte att delas upp. Istället för hundratals laserstrålar kommer det att finnas en stråle – men hundra gånger starkare. Och det är trots allt en laser. En infraröd laser är farligare än en röd, eftersom människan inte ser den – och därför inte instinktivt kommer att vända bort blicken även från en farligt kraftig ljuskälla. Och det finns en icke-noll chans att det karakteristiska mönstret av punkter i så fall kommer att brännas in i användarens näthinna.
För att förhindra detta behövs ett killer-chip. Efter påslagning övervakar den kontinuerligt kapacitansen hos diffraktionselementet – och om elementet visar sig vara utslaget eller skadat, går kapacitansen utanför det tillåtna området, och chipet stänger omedelbart av MOSFET:en och bryter strömförsörjningen till VCSEL. Och eftersom elementet sitter på toppen av den optiska enheten är det praktiskt taget omöjligt att skada resten av enheten genom ett slag utan att samtidigt förstöra den och bryta kontakten.
Efter en nödstängning av lasern bränner chipet in en flagga i OTP som markerar projektorn som defekt – vilket innebär att den brutna strömförsörjningen för alltid kommer att förbli bruten. Inga kommandon från ISP kommer längre att ha någon kraft över den. MOSFET:en kommer alltid att vara stängd, och projektorn kommer aldrig mer att fungera.
Chippet ”MamaBear”, som namnet antyder – är ett skyddschip. Det är en ”killswitch” för nödstopp av lasern. Den dödar projektorn för att förhindra att en skadad laseranordning lyser användaren i ögonen. Och modulen ”Julia”, som blivit utan sin partner ”Romeo”, förlorar meningen med livet – och hela TrueDepth-systemet går sönder.
Teknoprästernas arbetsdagar

Men detta skyddssystem har en brist. Saken är den att punktprojektorn sitter på enhetens övre kant, och nära högtalaren. Om vätska kommer in i iPhone är ett av de vanligaste ställena just där. Och kapacitiva sensorer är känsliga för strömledande vätskor. Därför händer det ofta att FaceID går sönder efter att enheten tappats i vatten – även om vattenintrånget är minimalt och det inte finns några andra skador. Helt enkelt missförstod ”Romeo” situationen och utförde Roskomnadzor i onödan.
Sådana enheter lämnas in för reparation. Ofta till inofficiella reparationer. Och eftersom iPhone kontrollerar serienumren på reservdelar (hej, Apple), går det inte att bara byta ut hela kamerablocket mot ett fungerande block från en donatorenhet. Telefonen kommer att avvisa det nya blocket, och FaceID kommer ändå inte att fungera. Det betyder att man på något sätt måste reparera det gamla. Men hur kan man ”återuppliva” en projektor som medvetet har satt sig själv ur spel?
Tillverkare av inofficiella verktyg för reparation har kommit på en hel rad olika ritualer för detta. Och händiga teknopräster-reparatörer följer dem helhjärtat och utför mikrokirurgi på detta komplexa och kalibrerade optiska system. Det krävs en otrolig händighet – komponenterna inuti är bara några millimeter stora, och optiken är extremt känslig. Om kalibreringen glider iväg för mycket på grund av kirurgiska ingrepp kommer systemet inte att fungera. Det finns inga verktyg för programmatisk omkalibrering (hej, Apple) – antingen hittar du ett sätt att hamna inom de ursprungliga parametrarna, eller så blir du utan FaceID.

Hur fungerar det? Jo, först och främst måste man läsa in OTP-data från det ursprungliga ”MamaBear”-chippet.
Data är läsbar även om projektorn anser sig vara defekt. För att läsa ut data tillverkar kineserna speciella ”reparations”-programmerare – som levereras med uppsättningar av kontakter-adaptrar och fungerar med en hel rad olika komponenter från olika iPhone-modeller, inklusive projektorer.
Och sedan måste man göra två saker – ta itu med MOSFET:en som bryter strömförsörjningen, och byta ut det ursprungliga skyddschipet. Och här finns det många olika metoder.

Man kan till exempel lägga en bygel istället för MOSFET:en, som på bilden ovan i artikeln, och byta ut ”MamaBear”-chippet genom att löda loss den ursprungliga FPC-kabeln och ersätta den med en speciell kabel med ett kinesiskt fusklösning-chip.
Det ursprungliga ”MamaBear”-chippet kan i detta fall sitta kvar inuti och hjälplöst skrika om att projektorn absolut inte får fungera. Men den har inte längre någon MOSFET för att stänga av projektorn med tvång, och iPhone ser å sin sida bara det kinesiska chipet – som ger ut en kopia av originaldata som programmeraren har lagt in, och rapporterar att projektorn är exakt-exakt felfri.

Eller så kan man dra ut ”MamaBear”-chippet helt och hållet och sätta en kinesisk ersättning två-i-en på dess ordinarie plats – den sluter både MOSFET-kontakterna och ger ut en kopia av OTP-data till telefonen.

Och så finns det ett alternativ med minimal lödning. En ”adapter” med ett fusklösning-chip, som sätts mellan den ursprungliga kabeln och iPhone:s moderkort.
Problemet med MOSFET:en löser den inte, men kineserna har hittat ett originellt tillvägagångssätt även för det, genom att göra ”högspännings”-programmerare.
Vet ni hur man kan ”återuppliva” och skriva över olika ATtiny med hjälp av en speciell högspänningsprogrammerare? Här är situationen helt annorlunda. Den kinesiska högspänningsprogrammeraren ”programmerar” brutalt och oåterkalleligt MOSFET:en inuti projektorn till en kortslutning mellan dräneringen och källan.
I det sista reparationssteget ansluter vi projektorn till programmeraren en gång till och lägger in den dump som sparades i det första steget i den. Och projektorn är redo att fungera och utge sig för att vara original och omodifierad.
Alla dessa olika anordningar tillverkas och marknadsförs av olika säljare av reparationsutrustning. Alla möjliga fusklösning-chip fungerar bara med ”egna” programmerare, och programmerarna har ofta DRM-funktioner som kontobindning och ett begränsat antal ”reparationer”, för vars påfyllning man måste betala.
Vet reparatörerna om att de med sin reparation fullständigt förstör det system som Apple har uppfunnit för att skydda användarens ögon? Egentligen inte. De är inte reverse engineers – de är schamaner. De har ingen förståelse för hur principerna fungerar. De har ritualer och de har resultat, och det räcker för dem. Och de smarta reverse engineers från Kina delar ogärna med sig av sina hemligheter till allmänheten. Det som jag har beskrivit i den här artikeln är i sin helhet bara känt för Apples ingenjörer och ett tiotal kineser ”som är insatta”. Och för mig. Och för dig, nu.
Varför Apple är idioter
Vet ni vad, jag kan inte klandra Apples ingenjörer alltför mycket för att deras ”killswitch” är för aktiv och förstör projektorer som mycket väl skulle kunna ha fungerat ett tag till. Lasrar är ett farligt ämne, och idén att skydda användaren från ”värsta tänkbara scenarier” är helt sund. Även om implementeringen av detta skydd kräver förbättringar.
Men Apples policy för att bekämpa inofficiella reparationer – är det värsta av alla onda ting. Om TrueDepth-blocken lugnt hade kunnat bytas från enhet till enhet, utan att behöva tänka på serienummer, hade det praktiskt taget inte funnits någon mening med de fruktansvärda perversa reparationsritualerna. Varför krångla med mikrokirurgisk lödning och dansa med programmerare, om man kan ta ett helt fungerande TrueDepth-block från en vanlig ”donatorenhet” med en krossad skärm, sätta in det i kundens telefon, helt återställa funktionaliteten och leva lyckligt? Det skulle vara enklare för reparatörerna och säkrare för enhetsägarna.
Men historien om Apples avskyvärda antireparationsbeteende visar tydligt att så inte kommer att ske. Ja, om inte alla möjliga ”Right to Repair”-rörelser i USA eller EU gör seriemärkningslåsning av reservdelar olaglig. Och det är möjligt nu. I skämtet om att EU lägger till fler användbara funktioner i nya iPhone-modeller än Apple, finns det en mycket stor andel sanning. Så vi får hålla ögonen på lagstiftningsinitiativen.
Artikeln är översatt från ryska. Artikelns författare: acc0unt. Vi har försökt att bevara originalförfattarens stil och formuleringar så gott det går vid översättningen.