Это мой маленький твиттер-тред о видеоадаптерах Lightning, также известных как Haywire, которые на самом деле являются компьютерами с Apple Secure Boot и ядром Darwin.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/368/8c8/e75/3688c8e758a604ca447a98cf2eafb9cc.jpg)
Есть два вида Haywire:
Оба поддерживают видео до 1080p и используют один и тот же SoC — S5L8747. Номер микросхемы H9TKNNN2GD. Согласно iPhone Wiki, на ней 256 МБ оперативной памяти. Больше ничего не известно.
К сожалению, у этих адаптеров ужасное качество. Адаптер HDMI получил 2 из 5 звёзд на сайте Apple Store в США, а отзывы на него примерно такие:
Мой b137 постигла та же судьба, так что появилась возможность его разобрать. Вот как он выглядит без пластика:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/384/6c8/f8e/3846c8f8e4a4b2332421164481f8f0d8.jpg)
Итак, уничтожим металлический корпус плоскогубцами.
Эти медные контакты представляют собой точки тестирования: некоторые должны быть UART и SWD (оба недоступны через Lightning):
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/28f/732/cf1/28f732cf152c0ba89594ac8bcb55db57.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/1a3/a39/7ec/1a3a397ecd9666b45829cc4750847530.jpg)
Сама Haywire не хранит никакой прошивки (ну, кроме SecureROM), поэтому iOS должна каждый раз загружать её. Прошивка довольно маленькая, около 25 МБ в несжатом виде. Поставляется как предустановленный ресурс с iOS и/или её можно загрузить. Вот структура папок:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/a4c/f06/118/a4cf0611888cf0b1a8c4fdc4a68bf603.jpg)
Прошивка предварительно подписана и не требует никакой персонализации. APTicket хотя и используется, но всё же статичен, т. е. не привязан ни к какому ECID и nonce.
В отличие от всех других устройств начиная с iOS 5, в iBSS для Haywire есть режим Recovery с интерактивной оболочкой. Он используется для загрузки кэша ядра по USB (вместе с DeviceTree и ramdisk, конечно).
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/999/4bd/118/9994bd11838ed822aa065945fba939b0.png)
Некоторая интересная информация о программном обеспечении на ramdisk здесь.
У Image3 в iBSS странный, ранее неизвестный тег ‘RAND’, содержащий 64-разрядное целое число и некоторую набивку. Я не смогла найти, что означает этот тег, даже в утечке исходного кода iBoot. Кроме того, у него всегда только один KBAG:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/646/497/c26/646497c26067a20624ce8ab9857e9360.jpg)
Его SecureROM (iBoot-1413.8 в последней версии чипа), как известно, сбрасывается с помощью аппаратных трюков. По крайней мере, у одного человека так получилось. Я попросила у него дамп, но получила отказ по очевидной причине. По его словам, ROM очень похожа на A6.
Согласно утёкшим исходникам iBoot, в Haywire используется флэш-память SPI NOR, и она есть в коммерческих экземплярах, но, похоже, не отформатирована, поскольку команда saveenv в iBoot не проходит:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/d72/e16/912/d72e1691230847563c566df213d30a7a.jpg)
Вы можете легко подключить Haywire к ПК, потому что это по сути USB-устройство. Потребуется только плата расширения (breakout board) с контактами Lightning, микро-USB мама и несколько соединительных проводов:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/5b4/7cb/c77/5b47cbc77b3e60b848519c4f3cc1e023.jpg)
Схема подключения:
Обратите внимание, что iPhone изначально даёт 3,3 В, но на USB — 5 В. Не уверена, что это хорошая идея, но она работает. В любом случае, если что-то сломаете, я не виновата.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/6f0/fd9/737/6f0fd9737b85a52528cac5925b7b665f.jpg)
И вот результат!
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/9da/f2c/ae4/9daf2cae48d70035835559eebac648af.jpg)
![](https://habrastorage.org/getpro/habr/post_images/368/8c8/e75/3688c8e758a604ca447a98cf2eafb9cc.jpg)
Есть два вида Haywire:
- Lightning Digital AV Adapter (b137ap/iAccy1,1): адаптер от Lightning к HDMI, поддерживает видео и аудио.
- Lightning to VGA Adapter (b165ap/iAccy1,2) — не поддерживает аудио по очевидной причине.
Оба поддерживают видео до 1080p и используют один и тот же SoC — S5L8747. Номер микросхемы H9TKNNN2GD. Согласно iPhone Wiki, на ней 256 МБ оперативной памяти. Больше ничего не известно.
К сожалению, у этих адаптеров ужасное качество. Адаптер HDMI получил 2 из 5 звёзд на сайте Apple Store в США, а отзывы на него примерно такие:
1 звезда из 5
Перестал работать после нескольких использований! Пустая трата денег!
Купил этот видеоадаптер Lightning за 50 долларов. Мне и детям он очень понравился. В первый вечер всё работало нормально! Мы смогли посмотреть фильм через приложение на телефоне. Второй раз тоже не было проблем. Но в третий раз он перестал работать. Я подумал, что проблема в кабеле HDMI, поэтому пошёл и купил более дорогой. Вернулся домой, подключил его, но ситуация не изменилась! Я пробовал на трёх разных телевизорах, но безрезультатно! На прошлой неделе я обновился на iPhone XR (раньше был iPhone 6) и решил, что теперь точно всё заработает, но нет! Совершенно пустая трата денег! Apple делает отличные продукты, но это определённо не один из них! Просто разочарован. Если бы я знал, что он выйдет из строя через несколько дней, то потратил бы 50 долларов на что-нибудь более полезное для детишек.
Автор: Джойс В из Гранд-Рапидс, 19 июля 2019 года
Мой b137 постигла та же судьба, так что появилась возможность его разобрать. Вот как он выглядит без пластика:
![](https://habrastorage.org/getpro/habr/post_images/384/6c8/f8e/3846c8f8e4a4b2332421164481f8f0d8.jpg)
Итак, уничтожим металлический корпус плоскогубцами.
Эти медные контакты представляют собой точки тестирования: некоторые должны быть UART и SWD (оба недоступны через Lightning):
![](https://habrastorage.org/getpro/habr/post_images/28f/732/cf1/28f732cf152c0ba89594ac8bcb55db57.jpg)
![](https://habrastorage.org/getpro/habr/post_images/1a3/a39/7ec/1a3a397ecd9666b45829cc4750847530.jpg)
Сама Haywire не хранит никакой прошивки (ну, кроме SecureROM), поэтому iOS должна каждый раз загружать её. Прошивка довольно маленькая, около 25 МБ в несжатом виде. Поставляется как предустановленный ресурс с iOS и/или её можно загрузить. Вот структура папок:
![](https://habrastorage.org/getpro/habr/post_images/a4c/f06/118/a4cf0611888cf0b1a8c4fdc4a68bf603.jpg)
Прошивка предварительно подписана и не требует никакой персонализации. APTicket хотя и используется, но всё же статичен, т. е. не привязан ни к какому ECID и nonce.
В отличие от всех других устройств начиная с iOS 5, в iBSS для Haywire есть режим Recovery с интерактивной оболочкой. Он используется для загрузки кэша ядра по USB (вместе с DeviceTree и ramdisk, конечно).
![](https://habrastorage.org/getpro/habr/post_images/999/4bd/118/9994bd11838ed822aa065945fba939b0.png)
Некоторая интересная информация о программном обеспечении на ramdisk здесь.
У Image3 в iBSS странный, ранее неизвестный тег ‘RAND’, содержащий 64-разрядное целое число и некоторую набивку. Я не смогла найти, что означает этот тег, даже в утечке исходного кода iBoot. Кроме того, у него всегда только один KBAG:
![](https://habrastorage.org/getpro/habr/post_images/646/497/c26/646497c26067a20624ce8ab9857e9360.jpg)
Карта распределения памяти:
0x20000000-0x20020000 - ROM (128 KB) 0x22000000-0x22020000 - SRAM (128 KB) (iBSS works from here) 0x8000000-0x18000000 - SDRAM (256 MB) 0x08000000-0x0B000000 - Область загрузки (48 MB) 0x0B000000-0x0DF00000 - Ядро (47 MB) 0x0DF00000-0x0E000000 - Дерево устройств (1 MB) 0x0E000000-0x11000000 - Ramdisk (48 MB) 0x11000000-0x17F00000 - Куча (111 MB) 0x17F00000-0x17FFC000 - iBoot (не используется) (1008 kB) 0x17FFC000-0x18000000 - Panic (16kB)
Его SecureROM (iBoot-1413.8 в последней версии чипа), как известно, сбрасывается с помощью аппаратных трюков. По крайней мере, у одного человека так получилось. Я попросила у него дамп, но получила отказ по очевидной причине. По его словам, ROM очень похожа на A6.
Согласно утёкшим исходникам iBoot, в Haywire используется флэш-память SPI NOR, и она есть в коммерческих экземплярах, но, похоже, не отформатирована, поскольку команда saveenv в iBoot не проходит:
![](https://habrastorage.org/getpro/habr/post_images/d72/e16/912/d72e1691230847563c566df213d30a7a.jpg)
Вы можете легко подключить Haywire к ПК, потому что это по сути USB-устройство. Потребуется только плата расширения (breakout board) с контактами Lightning, микро-USB мама и несколько соединительных проводов:
![](https://habrastorage.org/getpro/habr/post_images/5b4/7cb/c77/5b47cbc77b3e60b848519c4f3cc1e023.jpg)
Схема подключения:
GND -> GND L0p -> D+ L0n -> D- ID1 (ACC_PWR1) -> VCC
Обратите внимание, что iPhone изначально даёт 3,3 В, но на USB — 5 В. Не уверена, что это хорошая идея, но она работает. В любом случае, если что-то сломаете, я не виновата.
![](https://habrastorage.org/getpro/habr/post_images/6f0/fd9/737/6f0fd9737b85a52528cac5925b7b665f.jpg)
И вот результат!
![](https://habrastorage.org/getpro/habr/post_images/9da/f2c/ae4/9daf2cae48d70035835559eebac648af.jpg)