За почетак, да видимо како систем Face ID изгледа и како функционише:


Хардверски, овај систем се састоји од пар камера – ИЦ и RGB, и два типа ИЦ емитера – обичног осветљења и специјализованог пројектора тачака.
Скидамо „кожу“ са iPhone-а X, уклањамо све сувишно и видимо блок предњих камера у голом облику. ИЦ осветљење постоји одвојено, али све остале компоненте су нам у рукама — оне су поуздано причвршћене у овом металном оквиру.
Овде видимо ИЦ камеру и пројектор ИЦ тачака. Управо на овом инфрацрвеном пару се заснива рад система TrueDepth и FaceID. И главни јунак данашње приче је управо пројектор тачака.
Кратак принцип рада FaceID-а

Пројектор ИЦ тачака ради управо оно што му име каже — избацује, на команду, десетине хиљада инфрацрвених тачака у околни свет. А ИЦ камера, која и даје ту команду, одмах фотографише те тачке.
Знајући оптичке карактеристике пројектора, камере и растојање између њих, ISP у процесору iPhone-а може да процени колико је свака тачка удаљена. Математику процеса ни сам до краја не разумем, а реверзовати је биће тешко — али снимање серије слика са различитим обрасцима тачака омогућава веома прецизно погађање позиције сваке појединачне тачке и прављење целовите мапе дубине. Без LIDAR-а и без ToF-а.
Управо мапа дубине омогућава FaceID-у да се не обмањује фотографијама одштампаним на штампачу. Фотографија је равна — а лице има рељеф, и за FaceID је топографска карта фаце важнија од њене боје.

Међутим, систем гледа и боју лица. ИЦ камера је хардверски синхронизована са RGB камером, и обе камере снимају лице истовремено. А iPhone може да трепће не само ИЦ пројектором, већ и ИЦ осветљењем — и да сними цело лице у ИЦ спектру.
Мапа дубине је сама по себи прилично груба, а анализа текстуре лица на ИЦ и RGB снимцима помоћу неуронске мреже омогућава да се прецизира дубина, али и боље разумеју детаљи попут мимике — и то како на дневном светлу, тако и у мраку.
Ако вам овај систем делује познато, то је вероватно зато што је директно преузет из Kinect-а за Xbox 360. Само што је тај Kinect био огромна бандура, а овде је смањен на величину уреза на екрану паметног телефона.
То је урадила компанија PrimeSense, која је и развила технологије у основи Kinect-а 1 — а потом је купљена од стране Apple-а за 350 милиона долара. Цела — са свим патентима, развојем, запосленима и осталим „утробама“.
Расклапамо утробу пројектора

Идемо дубље у реверс: вадимо пројектор тачака из блока камера iPhone-а X и растављамо га на саставне делове. Састоји се од FPС-шлејфа, емитујућег склопа и оптичког склопа.
Шлејф је потпуно пасиван и стога мање интересантан. Он се леми на емитујући склоп и изводи сигнале на FPC-конектор који се прикључује на матичну плочу iPhone-а X. Конектор са кораком контаката од 0.35mm, кастомни (Apple је зајебант), и изгледа да га је направила компанија JAE.
Погледајмо главне компоненте оптике:

И погледајмо шта се налази унутар емитера:

И ево, улога MOSFET-а и мистериозног чипа ме је заинтересовала. Зашто? Зато што није јасно шта они тамо уопште раде.
Прва очигледна опција — мистериозни чип је меморија за серијски број и податке о калибрацији. Чип има типичан I2C интерфејс за меморију, и меморије унутра сигурно има. Пројектори имају серијске бројеве, по којима се може утврдити и датум производње — а ако се пројектор замени у целости, iPhone ће видети неслагање серијског броја и одбиће да ради са заменом. Али најчешћи I2C EEPROM се налази у сићушном WLCSP-4 кућишту — и може се чак и блокирати од преписивања, ако се баш хоће. Стога, једноставна меморија чип не може бити. Он сигурно ради још нешто.

Друга очигледна опција — мистериозни чип је драјвер ласера, а MOSFET – његов кључ. И да, MOSFET-ом заиста управља чип. Само што чип не може бити нешто критично важно, попут драјвера ласера.
Прво, MOSFET се налази у прекиду заједничке катоде ласерског склопа — а 4 одвојене аноде излазе директно на шлејф и иду даље у утробу слојевите плоче iPhone-а. И друго, током прикупљања података за реверс, наилазио сам на различита упутства од кинеских мајстора за поправку.

Суштину питања нису директно разјаснили, али у многим од ових упутстава се говорило: за поправку „поквареног“ пројектора потребно га је раставити, MOSFET скинути и заменити мостом између стока и истока. Пројектор ће на крају радити са мостом унутра, и функционалност FaceID-а ће се обновити. А пошто пројектор са мостом уместо MOSFET-а нормално ради, шта је тај MOSFET тамо радио?
И синуло ми је: у томе је и била суштина поправке. MOSFET-ом управља чип – стога, по жељи чипа, може да прекине струјно коло ласера и тако поквари пројектор. А поправка уклања тај прекид.
Шта је теби име моје
Шта је теби име моје
Када је постало јасно да мистериозни чип у пару са MOSFET-ом спречава нормалан рад пројектора, поставља се питање — зашто он то ради? Зашто се у пројектор уграђује чип који убија пројектор?
За одговоре сам потражио у фирмверу ISP блока у процесору iPhone-а – управо он комуницира преко I2C-а са сензорима камера и са пројектором.
Прво сам преузео имиџ фирмвера iOS 15 за iPhone X, свежи. Имиџи фирмвера за iPhone — то су у суштини zip-датотеке. Унутра сам и пронашао тражени фирмвер ISP — у виду датотеке Firmwareisp_bniadc-nike-d22.im4p
. Из компримоване im4p-датотеке је извучен бинарни фајл, у Mach-O формату са AArch64 кодом унутра. Mach-O, за разлику од типичног „имиџа фирмвера за непознати микроконтролер“ — је документовани формат извршне датотеке, сличан PE или ELF-у. Нема никаквих нагађања о структури датотеке, архитектури процесора или адреси на коју треба учитати код. Једноставно убаците датотеку у Ghidra и све се само слаже на своје место. Пријатно.

Затим је инстинкт узео своје, и одлучио сам да рашчешљам старије фирмвере. И у имиџу фирмвера iOS 13 сам пронашао датотеку adc-nike-d22. Чак је и величина била скоро иста. Само што је у новом фирмверу било више кода — а у старом кода је било мање, али су били симболи. Сва имена функција на месту. Увек проверавајте старије верзије!
У фирмверу ISP-а има много информација, укључујући и то како iPhone комуницира преко I2C-а са различитим чиповима — са сензорима камера, са PMU камера, са чиповима за управљање блицевима и аутофокусом. Одатле је, захваљујући симболима, било могуће извући „имена“ различитих саставних делова система — и део њих се односи на материјале из других делова фирмвера, као и од других реверзера и сервисера. На пример, сензор ИЦ камере — то је STMicroelectronics VD56G0 “Savage”. Цео TrueDepth систем се у коду зове “Pearl”, а његовим главним модулима су дата имена ликова из „Ромеа и Јулије“. ИЦ пројектор се зове “Romeo”, ИЦ камера — “Juliet”, а ИЦ осветљење се зове “Rosaline”. Драјвер ласера, који се налази на матичној плочи iPhone-а и напаја и ласере унутар “Romeo”-а и ласер унутар осветљења “Rosaline”, зове се “Rigel“.
Мистериозни чип који нас интересује? И он има име. У коду га зову “MamaBear”, скраћено “MB”, и изгледа да је његова функционалност веома једноставна. Он се налази на I2C магистрали. Он чува OTP-податке у себи, укључујући серијски број и различите калибрације. Он укључује и искључује MOSFET на команду. И још мери… капацитивност? Не температуру, на NTC-термистор уопште није повезан, већ управо капацитивност. Само, капацитивност чега?
Трагична погибија Ромеа

Одговор на то питање нам поново помажу да добијемо кинеске шеме. На шеми од JCID-а се види да у модулу “Romeo” постоје три контакта за везу емитујућег склопа са оптичким склопом. Један — маса, а још два иду директно у чип “MamaBear”. Ови контакти пролазе кроз специјални прелазник са стране оптичког склопа и доспевају на сам његов врх — на дифракциони оптички елемент.
Дифракциони расцепитељ зрака је неуправљив и не реагује на струју. Али има капацитивност. И помоћу те три линије се та капацитивност може мерити. Али зашто?
Ствар је у томе колико важну улогу игра тај дифракциони расцепитељ. Цртеж тачака које користи пројектор задаје се распоредом сићушних ласера-„јамица“ на VСSEL-кристалу. А затим се тај цртеж умножава дифракционим елементом, који од једног снопа зрака прави стотине снопова зрака.

А шта ће се десити ако се тај дифракциони елемент откине?
Зраци се неће расцепљивати. Уместо стотину снопова ласерских зрака, биће један сноп — али сто пута моћнији. А то је ипак ласер. Инфрацрвени ласер је опаснији од црвеног, јер га човек не види — и стога неће инстинктивно склонити поглед чак ни од опасно моћног извора светлости. И постоји ненулта шанса да ће карактеристични цртеж тачака у том случају бити урезан кориснику у мрежњачи.
За спречавање тога је и потребан чип-убица. Након укључивања, он стално прати капацитивност дифракционог елемента — и ако се елемент поломи или оштети, капацитивност излеће ван дозвољених граница, а чип одмах искључује MOSFET и прекида напајање VCSEL-а. А пошто се елемент налази на самом врху оптичког склопа, практично је немогуће оштетити ударцем остатак склопа, а да се при томе не сломи он и не наруши контакт.
Након хитног искључивања ласера, чип уписује себи у OTP флаг који пројектор означава као неисправан — а то значи да ће прекинуто напајање заувек остати прекинуто. Никакве команде из ISP-а више неће имати моћ над њим. MOSFET ће увек бити затворен, и пројектор више никада неће радити.
Чип “MamaBear”, као што наговештава назив – је чип заштите. То је „killswitch“ за хитно заустављање ласера. Он убија пројектор како не би дозволио да оштећени ласерски уређај сија кориснику у очи. А модул “Juliet”, остајући без свог пара “Romeo”, губи смисао живота — и цео TrueDepth систем постаје неупотребљив.
Радни дани техносвештеника
Али ова шема заштите има ману. Ствар је у томе што пројектор тачака стоји на горњој ивици уређаја, и поред звучника. Ако течност уђе у iPhone, једно од најчешћих места за то је управо тамо. А капацитивни сензори су осетљиви на течности које проводе струју. Стога се често дешава да се FaceID поквари након пада уређаја у воду — чак и ако је улазак воде минималан и нема других оштећења. Једноставно, “Romeo” није добро разумео ситуацију и извршио Роскомнадзор узалуд.
Такви уређаји се носе на поправку. Често на незваничну поправку. А пошто iPhone проверава серијске бројеве резервних делова (поздрав, Apple), једноставно заменити цео блок камера радним блоком од донора није могуће. Телефон ће одбити нови блок, и FaceID и даље неће радити. Дакле, треба некако поправити стари. Али како „васкрснути“ пројектор који је сам себе намерно избацио из строја?
Произвођачи незваничних алата за поправку су за то осмислили читав низ различитих ритуала. А вешти техносвештеници-сервисери их се свето придржавају и изводе микрохирургију овог сложеног и калибрисаног оптичког система. Потребна је невероватна вештина руку — компоненте унутра су величине неколико милиметара, а оптика је крајње осетљива. Ако калибрација превише одступи због хируршких интервенција, систем неће радити. Алата за програмску рекалибрацију не постоји (поздрав, Apple) — или ћете пронаћи начин да се вратите на оригиналне параметре, или ћете остати без FaceID-а.

Како то функционише? Па, прво треба прочитати OTP податке из оригиналног чипа “MamaBear”.
Подаци су читљиви чак и ако пројектор сматра себе неисправним. За читање података, Кинези праве специјалне „сервисне“ програматоре — који се испоручују са сетовима конектора-прелазника и раде са читавим низом различитих компоненти од различитих модела iPhone-а, укључујући и пројекторе.
А затим треба урадити две ствари — позабавити се MOSFET-ом који прекида напајање и заменити оригинални чип заштите. И ту постоји много различитих метода.

Може се, на пример, убацити мост уместо MOSFET-а, као на фотографији изнад у чланку, а чип “MamaBear” заменити, одлемивши оригинални FPC-шлејф и заменивши га специјалним шлејфом са кинеским чипом-обманком.
Оригинални чип “MamaBear” при томе може да остане унутра и немоћно да вришти о томе да пројектор ни у ком случају не би требало да ради. Али он више нема MOSFET да принудно искључи пројектор, а iPhone са своје стране види само кинески чип — који даје копију оригиналних података учитану програматором и извештава да је пројектор сасвим-сасвим исправан.

А може се извадити чип “MamaBear” у целости и ставити на његово место кинеску замену два-у-један — она и контакте MOSFET-а затвара и копију OTP података у телефон даје.

Па, постоји и опција са минимумом лемљења. „Прелазник“ са чипом-обманком, који се поставља између оригиналног шлејфа и матичне плоче iPhone-а.
Проблем са MOSFET-ом он не решава, али су и за њега Кинези пронашли оригиналан приступ, направивши „високонапонске“ програматоре.
Знате како се разни ATtiny могу „оживети“ и преписати помоћу специјалног високонапонског програматора? Овде је ситуација сасвим другачија. Кинески високонапонски програматор брутално и неповратно „програмира“ MOSFET унутар пројектора у кратак спој између стока и истока.
У последњој фази поправке, пројектор поново прикључујемо на програматор и учитавамо у њега сачувани дамп из прве фазе. И пројектор је спреман за рад, представљајући се као оригинални и немодификовани.
Све ове различите направе праве и промовишу различити продавци опреме за поправку. Сви могући чипови-обманке раде само са „родним“ програматорима, а у програматоре се често уграђују DRM-фитуре попут везивања за налог и ограниченог броја „поправки“, за чије попуњавање мора да се плати.
Да ли сервисери знају да они својом поправком потпуно уништавају систем који је Apple осмислио за заштиту очију корисника? У ствари, не знају. Они нису реверзери — они су шамани. Немају разумевања принципа рада. Имају ритуале и имају резултате, и то им је довољно. А лукави реверзери из Кине неохотно деле своје тајне са јавношћу. Оно што сам ја описао у овом чланку, у потпуности је познато само инжењерима Apple-а и десетак Кинеза „у теми“. И мени. И теби, сада.
Зашто су Apple кретени
Знате, не могу превише да кривим инжењере Apple-а због тога што је њихов „killswitch“ превише активан и квари пројекторе који су сасвим могли још да раде. Ласери су опасна тема, а идеја да се корисник заштити од „најгорих сценарија“ је апсолутно здрава. Мада реализација те заштите захтева дораду.
Али политика Apple-а у борби против незваничних поправки — то је најгоре од свих зала. Када би се TrueDepth блокови могли мирно мењати са уређаја на уређај, без обзира на серијске бројеве, онда у ужасним изопаченим ритуалима поправке практично не би било смисла. Зашто се извртати са микрохируршком лемљењем и плесати са програматорима, ако се може скинути са следећег „донора“ са разбијеним екраном потпуно радни TrueDepth блок, ставити га у телефон клијента, потпуно обновити функционалност и живети мирно? Сервисерима би то било лакше, а власницима уређаја — безбедније.
Али историја кретенског антисервисног понашања Apple-а јасно показује да се то неће догодити. Па, осим ако у САД или у ЕУ сваки покрет “Right to Repair” не учини везивање резервних делова по серијским бројевима незаконитим. А то је сада могуће. У шали о томе да Европска унија додаје више корисних фича у нове моделе iPhone-а него Apple, има веома висок проценат истине. Тако да ћемо пратити законодавне иницијативе.
Чланак је преведен са руског језика. Аутор чланка: acc0unt. Потрудили смо се да сачувамо оригинални стил и формулације аутора, колико је то могуће при преводу.