Po co Apple dodało do iPhone’a czip, który psuje Face ID

Umieszczono w kategoriach: Hardware, News
Save and Share:

Zacznijmy od początku: jak system Face ID wygląda i jak działa:

Wszystkie elementy potrzebne do działania FaceID znajdują się właśnie w tym wycięciu w ekranie

Sprzętowo system ten składa się z pary kamer – IR i RGB, oraz dwóch rodzajów emiterów IR – zwykłego podświetlenia i specjalistycznego projektora punktów.

Zdejmujemy obudowę z iPhone’a X, usuwamy wszystko, co zbędne i widzimy blok kamer przednich w całej okazałości. Podświetlenie IR istnieje oddzielnie, ale wszystkie pozostałe komponenty mamy w rękach — są one solidnie zamocowane w tej metalowej ramce.

Tutaj widzimy kamerę IR i projektor punktów IR. To na tej podczerwonej parze opiera się działanie systemów TrueDepth i FaceID. A główny bohater dzisiejszej opowieści — to właśnie projektor punktów.

Krótki opis działania FaceID

Punkty emitowane przez iPhone X — zdjęcie stąd.

Projektor punktów IR robi dokładnie to, co sugeruje jego nazwa — na polecenie „wypluwa” w otaczający świat dziesiątki tysięcy punktów podczerwieni. A kamera IR, która wydaje to polecenie, natychmiast robi zdjęcie tych punktów.

Znając parametry optyczne projektora, kamery i odległość między nimi, ISP w procesorze iPhone’a może oszacować, jak daleko znajduje się każdy punkt. Matematyki tego procesu sam do końca nie rozumiem i trudno byłoby ją odtworzyć — ale wykonanie serii zdjęć z różnymi wzorami punktów pozwala bardzo dokładnie określić pozycję każdego pojedynczego punktu i w ten sposób stworzyć kompletną mapę głębi. Bez LIDAR-u i bez ToF.

Właśnie mapa głębi sprawia, że FaceID nie da się oszukać wydrukowanymi na drukarce zdjęciami. Zdjęcie jest płaskie — a twarz ma relief, i dla FaceID topograficzna mapa twarzy jest ważniejsza niż jej kolor.

Schemat blokowy referencyjnej kamery PrimeSense

Zresztą system patrzy też na kolor twarzy. Kamera IR jest sprzętowo zsynchronizowana z kamerą RGB i obie kamery robią zdjęcie twarzy jednocześnie. A iPhone może migać nie tylko projektorem IR, ale i podświetleniem IR — i zrobić zdjęcie całej twarzy w spektrum podczerwieni.

Mapa głębi sama w sobie jest dość gruba, a analiza tekstury twarzy na zdjęciach IR i RGB za pomocą sieci neuronowej pozwala zarówno na doprecyzowanie głębi, jak i lepsze rozpoznawanie szczegółów mimiki — zarówno w świetle dziennym, jak i w ciemności.

Jeśli ten system wydaje się wam znajomy, to prawdopodobnie dlatego, że jest on bezpośrednio wyjęty z Kinecta od Xbox 360. Tylko tamten Kinect był ogromnym klocem, a tutaj udało się go zmniejszyć do rozmiaru wycięcia w ekranie smartfona.

Zrobiła to firma PrimeSense, która opracowała technologie leżące u podstaw Kinecta 1 — a potem została kupiona przez Apple za 350 milionów dolarów. W całości — ze wszystkimi patentami, opracowaniami, pracownikami i innymi bebechami.

Rozbieramy wnętrzności projektora

Idziemy głębiej w analizę: wyjmujemy projektor punktów z bloku kamer iPhone’a X i rozbieramy go na części składowe. Składa się on z taśmy FPC, zespołu emitującego i zespołu optycznego.

Taśma jest całkowicie pasywna, a więc mało interesująca. Jest przylutowana do zespołu emitującego i wyprowadza sygnały na złącze FPC, które podłącza się do płyty głównej iPhone’a X. Złącze o rozstawie pinów 0,35 mm, niestandardowe (Apple to dranie) i wygląda na to, że wyprodukowane przez firmę JAE.

Spójrzmy na główne komponenty optyki:

Projektor w przekroju: zdjęcie stąd, podpisy moje

I zobaczmy, co znajduje się wewnątrz emitera:

I tutaj rola MOSFET-u i tajemniczego czipa mnie zainteresowała. Dlaczego? Ponieważ nie jest jasne, czym oni się tam w ogóle zajmują.

Pierwsza oczywista opcja — tajemniczy czip to pamięć na numer seryjny i dane kalibracyjne. Czip ma typowy dla pamięci interfejs I2C i pamięć wewnątrz na pewno jest. Projektory mają numery seryjne, po których można między innymi określić datę produkcji — a jeśli projektor zostanie wymieniony w całości, to iPhone zobaczy niezgodność numeru seryjnego i odmówi pracy z zamiennikiem. Ale najzwyklejszy I2C EEPROM występuje w maleńkiej obudowie WLCSP-4 — i można go nawet zablokować przed ponownym zapisem, jeśli bardzo się chce. Dlatego prostą pamięcią ten czip być nie może. On na pewno robi coś jeszcze.

Rozpiska pinów projektora od chińskich mistrzów z JCID. Napisy krzywe, ale ogólnie się zgadzają.

Druga oczywista opcja — tajemniczy czip to sterownik laserów, a MOSFET to jego klucz. I tak, MOSFET jest faktycznie sterowany przez czip. Tylko czymś krytycznie ważnym, jak sterownik lasera, czip też być nie może.

Po pierwsze MOSFET znajduje się w przerwaniu wspólnej katody zespołu laserowego — a 4 oddzielne anody wychodzą bezpośrednio na taśmę i idą dalej w głąb warstwowej płyty iPhone’a. I po drugie, w trakcie zbierania danych do analizy natknąłem się na różne instrukcje od chińskich mistrzów napraw.

MOSFET zastępowany schludnym kabelkiem

Sedna sprawy bezpośrednio nie wyjaśniły, ale w wielu z tych instrukcji mówiono: aby naprawić „zepsuty” projektor, należy go rozebrać, zdemontować MOSFET i zastąpić go zworką między drenem a źródłem. Projektor w efekcie ze zworką wewnątrz zacznie działać, a funkcjonalność FaceID zostanie przywrócona. A skoro projektor ze zworką zamiast MOSFET-u działa normalnie, to co ten MOSFET tam robił?

I wtedy mnie olśniło: w tym właśnie tkwił sens naprawy. MOSFET jest sterowany przez czip – dlatego na życzenie czipa może przerwać obwód zasilania lasera i w ten sposób zepsuć projektor. A naprawa eliminuje to przerwanie.

Co w imieniu twoim jest

Skoro stało się jasne, że tajemniczy czip w parze z MOSFET-em utrudnia normalne działanie projektora, to pojawia się pytanie — po co on to robi? Po co w projektorze umieszcza się czip, który go zabija?

W poszukiwaniu odpowiedzi zajrzałem do firmware bloku ISP w procesorze iPhone’a – to on komunikuje się przez I2C z sensorami kamer i z projektorem.

Najpierw pobrałem obraz firmware iOS 15 dla iPhone’a X, najświeższy. Obrazy firmware dla iPhone’a — to w zasadzie pliki zip. W środku znalazłem poszukiwany firmware ISP — w postaci pliku Firmwareisp_bniadc-nike-d22.im4p. Ze skompresowanego pliku im4p wyodrębniłem binarkę, w formacie Mach-O z AArch64 kodem w środku. Mach-O, w przeciwieństwie do typowego „obrazu firmware dla nieznanego mikrokontrolera” — to udokumentowany format pliku wykonywalnego, podobny do PE lub ELF. Nie ma żadnych zgadywanek co do struktury pliku, architektury procesora lub adresu, pod który należy załadować kod. Po prostu wrzucasz plik do Ghidry i wszystko samo układa się na półkach. Przyjemnie.

Potem instynkt wziął górę i postanowiłem przeszukać starsze firmware. I w obrazie firmware iOS 13 znalazłem plik adc-nike-d22. Nawet rozmiar był prawie taki sam. Tylko w nowym firmware było więcej kodu — a w starym kodu było mniej, za to były symbole. Wszystkie nazwy funkcji na miejscu. Zawsze sprawdzaj starsze wersje!

W firmware ISP jest wiele informacji, w tym to, jak iPhone komunikuje się przez I2C z różnymi czipami — z sensorami kamer, z PMU kamer, z czipami sterowania lampami błyskowymi i autofokusem. Stamtąd też, dzięki symbolom, udało się wyciągnąć „imiona” różnych części składowych systemu — i część z nich pokrywa się z materiałami z innych części firmware, a także od innych analityków i serwisantów. Na przykład sensor kamery IR — to STMicroelectronics VD56G0 “Savage”. Cały system TrueDepth w kodzie nazywa się “Pearl”, a jego główne moduły mają imiona postaci z „Romea i Julii”. Projektor IR nazywa się “Romeo”, kamera IR — “Juliet”, a podświetlenie IR nazywa się “Rosaline”. Sterownik laserów, który znajduje się na płycie głównej iPhone’a i zasila zarówno lasery wewnątrz “Romeo”, jak i laser wewnątrz podświetlenia “Rosaline”, nazywa się “Rigel“.

Tajemniczy czip, który nas interesuje? On też ma imię. W kodzie nazywają go “MamaBear”, w skrócie “MB” i wygląda na to, że jego funkcjonalność jest bardzo prosta. On żyje na magistrali I2C. Przechowuje w sobie dane OTP, w tym numer seryjny i różne kalibracje. Włącza i wyłącza na polecenie MOSFET-a. I jeszcze mierzy… pojemność? Nie temperaturę, do termistora NTC w ogóle nie jest podłączony, a właśnie pojemność. Tylko pojemność czego?

Tragiczna śmierć Romea

Odpowiedź na to pytanie ponownie pomagają nam uzyskać chińskie schematy. Na schemacie od JCID widać, że w module “Romeo” są trzy styki do połączenia zespołu emitującego z zespołem optycznym. Jeden — uziemienie, a dwa pozostałe idą bezpośrednio do czipa “MamaBear”. Te styki przechodzą przez specjalną przejściówkę z boku zespołu optycznego i trafiają na sam jego wierzchołek — na dyfrakcyjny element optyczny.

Dyfrakcyjny rozszczepiacz wiązki jest niekontrolowany i nie reaguje na prąd. Ale ma pojemność. I za pomocą tych trzech linii można tę pojemność mierzyć. Ale po co?

Chodzi o to, jak ważną rolę odgrywa ten dyfrakcyjny rozszczepiacz. Wzór punktów używanych przez projektor jest określony położeniem maleńkich laserów-„dołków” na krysztale VСSEL. A potem ten wzór jest powielany przez element dyfrakcyjny, który z jednej wiązki światła robi setki wiązek światła.

Porównanie rozmieszczenia laserów anody “SPARSE” i projektowanych punktów

A więc, co się stanie, jeśli ten element dyfrakcyjny zostanie oderwany?

Wiązki nie będą się rozszczepiać. Zamiast setek wiązek laserowych będzie jedna wiązka — za to stukrotnie mocniejsza. A to przecież laser. Laser podczerwony jest groźniejszy od czerwonego, ponieważ człowiek go nie widzi — i dlatego nie odruchowo nie odwróci wzroku nawet od niebezpiecznie mocnego źródła światła. I istnieje niemałe ryzyko, że charakterystyczny wzór z punktów zostanie w takim przypadku wypalony użytkownikowi w siatkówce.

Aby temu zapobiec, potrzebny jest czip-zabójca. Po włączeniu on stale monitoruje pojemność elementu dyfrakcyjnego — i jeśli element okaże się wyłamany lub uszkodzony, to pojemność wykracza poza dopuszczalne granice, a czip natychmiast odcina MOSFET-a i przerywa zasilanie VCSEL. A ponieważ element znajduje się na samym wierzchołku zespołu optycznego, to uszkodzenie uderzeniem reszty zespołu bez jednoczesnego uszkodzenia jego i przerwania kontaktu jest praktycznie niemożliwe.

Po awaryjnym wyłączeniu lasera czip wypala sobie w OTP flagę, która oznacza projektor jako wadliwy — a więc przerwane zasilanie na zawsze pozostanie przerwane. Żadne polecenia z ISP nie będą miały już nad nim mocy. MOSFET zawsze będzie zamknięty, a projektor nigdy więcej nie będzie działać.

Czip “MamaBear”, jak sugeruje nazwa – to czip ochronny. To “killswitch” do awaryjnego zatrzymania lasera. On zabija projektor, aby nie dopuścić do tego, by uszkodzone urządzenie laserowe świeciło użytkownikowi w oczy. A moduł “Juliet”, pozostając bez sparowanego z nim “Romeo”, traci sens życia — i cały system TrueDepth staje się bezużyteczny.

Praca w pocie czoła technomagików

Ale ten schemat ochrony ma wadę. Projektor punktów znajduje się na górnej krawędzi urządzenia i obok głośnika. Jeśli do wnętrza iPhone’a dostanie się ciecz, to jednym z najczęstszych miejsc jest właśnie to miejsce. A czujniki pojemnościowe są wrażliwe na ciecze przewodzące prąd. Dlatego często zdarza się, że FaceID psuje się po upadku urządzenia do wody — nawet jeśli dostanie się minimalna ilość wody i nie ma żadnych innych uszkodzeń. Po prostu “Romeo” źle zrozumiał sytuację i dokonał niepotrzebnego „Roskomnadzoru”.

Takie urządzenia trafiają do naprawy. Często do nieoficjalnej naprawy. A ponieważ iPhone sprawdza numery seryjne części zamiennych (witaj, Apple), to po prostu zamiana całego bloku kamer na sprawny blok od dawcy jest niemożliwa. Telefon odrzuci nowy blok i FaceID i tak nie zadziała. Zatem trzeba jakoś naprawić stary. Ale jak można „wskrzesić” projektor, który sam siebie celowo wyłączył z eksploatacji?

Producenci nieoficjalnych narzędzi do naprawy wymyślili w tym celu cały szereg różnych rytuałów. A zręczni technomagicy-serwisanci święcie ich przestrzegają i przeprowadzają mikrochirurgię tego złożonego i skalibrowanego systemu optycznego. Potrzebna jest niewiarygodna zręczność — komponenty wewnątrz mają rozmiar kilku milimetrów, a optyka jest niezwykle czuła. Jeśli kalibracja z powodu interwencji chirurgicznych zbyt mocno się rozjedzie, to system nie będzie działać. Narzędzi do programowej rekalibracji nie ma (witaj, Apple) — albo znajdziesz sposób, aby trafić w oryginalne parametry, albo zostaniesz bez FaceID.

„Wysokonapięciowy” programator

Jak to działa? No cóż, na początek trzeba odczytać dane OTP z oryginalnego czipa “MamaBear”.

Dane są czytelne nawet jeśli projektor uważa się za uszkodzony. Do odczytu danych Chińczycy robią specjalne „naprawcze” programatory — które są dostarczane z zestawami złączy-przejściówek i współpracują z całym szeregiem różnych komponentów z różnych modeli iPhone’a, w tym również z projektorami.

A potem trzeba zrobić dwie rzeczy — uporać się z MOSFET-em przerywającym zasilanie i podmienić oryginalny czip ochronny. I tutaj jest wiele różnych metod.

Taśma z czipem-oszustem

Można na przykład wrzucić zamiast MOSFET-u zworkę, jak na zdjęciu wyżej w artykule, a czip “MamaBear” podmienić, odlutowując oryginalną taśmę FPC i zastępując ją specjalną taśmą z chińskim czipem-oszustem.

Oryginalny czip “MamaBear” przy tym może pozostać w środku i bezsilnie krzyczeć, że projektor w żadnym wypadku nie powinien działać. Ale on nie ma już MOSFET-u, aby wymusić wyłączenie projektora, a iPhone ze swojej strony widzi tylko chiński czip — który oddaje wgrane programatorem kopie oryginalnych danych i raportuje, że projektor na pewno jest sprawny.

Wyskrobujemy stare wnętrzności i wstawiamy nowe

A można wyrwać czip “MamaBear” w całości i wstawić na jego miejsce chiński zamiennik dwa-w-jednym — on i styki MOSFET-u zwiera, i kopię danych OTP do telefonu oddaje.

Płytka-przejściówka z czipem-oszustem

No i jest opcja z minimalną ilością lutowania. „Przejściówka” z czipem-oszustem, która jest umieszczana między oryginalną taśmą a płytą główną iPhone’a.

Problemu z MOSFET-em to nie rozwiązuje, ale i do niego Chińczycy znaleźli oryginalne podejście, robiąc „wysokonapięciowe” programatory.

Wiecie, jak różne ATtiny można „odceglić” i przepisać za pomocą specjalnego wysokonapięciowego programatora? Tutaj sytuacja jest zupełnie inna. Chiński wysokonapięciowy programator brutalnie i nieodwracalnie „programuje” MOSFET-a wewnątrz projektora w zwarcie między drenem a źródłem.

Na ostatnim etapie naprawy podłączamy projektor do programatora jeszcze raz i wgrywamy do niego zapisany na pierwszym etapie dump. I projektor jest gotowy do pracy, udając oryginalny i niemodyfikowany.

Wszystkie te różne przyrządy są produkowane i promowane przez różnych sprzedawców sprzętu do napraw. Wszelkiego rodzaju czipy-oszuki działają tylko z „rodzimymi” programatorami, a w programatorach często są funkcje DRM, takie jak przypisanie do konta i ograniczona liczba „napraw”, za uzupełnienie których trzeba płacić.

Czy serwisanci wiedzą, że swoją naprawą całkowicie niszczą system, wymyślony przez Apple w celu ochrony oczu użytkownika? Tak naprawdę nie. Oni nie są analitykami — oni są szamanami. Nie rozumieją zasad działania. Mają rytuały i mają wyniki i to im wystarcza. A przebiegli analitycy z Chin niechętnie dzielą się swoimi sekretami z publicznością. To, co opisałem w tym artykule, jest w pełni znane tylko inżynierom Apple i dziesiątce Chińczyków „w temacie”. I mnie. I tobie, teraz.

Dlaczego Apple to oszuści

Wiecie co, nie mogę zbytnio winić inżynierów Apple za to, że ich “killswitch” jest zbyt aktywny i psuje projektory, które całkiem dobrze mogłyby jeszcze popracować. Lasery — to niebezpieczny temat i idea ochrony użytkownika przed „najgorszymi scenariuszami” jest całkowicie zdrowa. Chociaż realizacja tej ochrony wymaga jeszcze dopracowania.

Ale polityka Apple w zakresie walki z nieoficjalnymi naprawami — to największe zło. Gdyby bloki TrueDepth można było swobodnie wymieniać z urządzenia na urządzenie, bez oglądania się na numery seryjne, to te straszne, pokręcone rytuały naprawy praktycznie nie miałyby sensu. Po co wykręcać się z mikrochirurgicznym lutowaniem i tańczyć z programatorami, skoro można zdjąć z kolejnego „dawcy” z potłuczonym ekranem całkowicie sprawny blok TrueDepth, włożyć go do telefonu klienta, całkowicie przywrócić funkcjonalność i żyć spokojnie? Serwisantom byłoby łatwiej, a właścicielom urządzeń — bezpieczniej.

Ale historia paskudnego, antynaprawczego zachowania Apple wyraźnie pokazuje, że tak się nie stanie. No, chyba że w USA lub w UE wszelkie ruchy “Right to Repair” uznają przypisywanie części zamiennych do numerów seryjnych za niezgodne z prawem. A to jest teraz możliwe. W żarcie o tym, że Unia Europejska dodaje do nowych modeli iPhone’a więcej przydatnych funkcji niż Apple, jest bardzo dużo prawdy. Tak więc będziemy śledzić inicjatywy legislacyjne.

Artykuł przetłumaczony z języka rosyjskiego. Autor artykułu: acc0unt. Staraliśmy się zachować oryginalny styl i sformułowania autora w stopniu, w jakim jest to możliwe przy tłumaczeniu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *