Что внутри кабеля lightning
Как он работает кабель Lightning
Внутренний мир непростого аксессуара.
Настоящий бич для владельцев iOS-устройств — Lightning-кабели. Их много, они разные, но выбрать можно далеко не все.
Разберемся в устройстве этого, с виду простого, аксессуара с целым арсеналом секретов.
В рабстве Lightning
Apple никогда не стеснялась в одностороннем порядке придумывать стандарты и пересаживать на них своих пользователей.
Пока производители мобильных устройств прошлой десятилетки уверенно сидели на типе зарядных гнезд DC с самым разным диаметром штекеров, для своих плееров iPod Apple выбрала интерфейс FireWire.
Плавный переход тысяч брендов, выпускающих смартфоны на miniUSB, Apple встретила уникальным 30-пиновым портом в первом iPhone.
Сейчас «единым стандартом» в мире мобильных гаджетов остается разъем microUSB с перспективой замены на USB Type-C. Тем временем на iOS-устройствах прописался Lightning, и при этом надолго.
Найти кабель для подзарядки «обычного смартфона» очень легко. А вот Lightning – не очень. Поэтому среди владельцев Apple-техники принято брать его с собой.
Нишу «запасных», расходных, дорожных кабелей для iPhone и iPad оперативно закрыли китайцы. Вот только одно «но»: подделать их не так просто.
Что внутри Lightning и почему оригинал — это дорого
Понять, почему Apple остается компанией, стоимость аксессуаров которой иногда кажется неоправданно высокой, можно лишь после технической процедуры вскрытия.
Примечание: мы ровно дышим к компании Samsung. Просто сравнение южнокорейского и американского производителя.
Перед нами два оригинальных аксессуара к смартфонам компаний, которые уже несколько лет являются главными конкурентами на рынке мобильных устройств. Стоимость кабеля от Samsung — в районе 500 рублей. Оригинальный Lightning-кабель для iOS-устройств обойдется в 1590 рублей, в 3 раза дороже.
Достанем скальпель и попробуем разобраться, в чём причина такой разницы в цене. Сразу скажу, что пластик Samsung режется очень легко. А клипсу в Lightning взять «голыми руками» не так просто – предусмотрена мощная защита от проникновения.
Добираемся до внутренностей и наблюдаем.
Лучший вариант платы, который вы можете встретить в microUSB, выглядит так:
В худшем случае (и это будет действительно оригинальный кабель, но от другого производителя) не увидите даже выпрямителя напряжения. Просто четыре разноцветных провода с экранированием-оплеткой (на которой тоже нередко экономят).
После мучений по разборке оригинального Lightning-шнурка нас встречает вот такой «внутренний мир»:
И более крупный снимок миниатюрной платы:
Внутри Lightning спрятан полноценный микрокомпьютер, который не только анализирует весь процесс подзарядки iOS-устройства, но и облегчает эксплуатацию аксессуара пользователем.
И если до сегодняшнего дня вы с недоумением смотрели на стоимость оригинального кабеля Lightning – теперь вы знаете, что дело в компонентах и качестве.
Мало аргументов? Двигаемся дальше.
Что происходит внутри Lightning и как он работает
Под защитной металлической крышкой штекера Lightning установлена приведенная выше схема. Разумеется, сейчас мы говорим об оригинале, а проблему китайского ширпотреба затронем немного ниже.
На плате установлены четыре чипа и несколько вспомогательных вычислительных устройств, отвечающих за передачу данных на компьютер и использование кабеля для Data-соединения. После подключения iPhone к зарядному устройству, внутри этой схемы оживают любопытные процессы.
Внутренний мир одного из чипов
Два из представленных чипа очень просты по своей конструкции и состоят всего из нескольких транзисторов, задача которых преобразовывать поступающий сигнал электрического тока в состояние, максимально адаптированное для установленного в смартфоне аккумулятора.
Еще один чип с маркировкой NXP NX20P3 обеспечивает контроль над уровнем текущего состояния батареи, вычисляя накопленный полезный объем заряда.
Установленный в кабель микропроцессор помогает определять и то, какой стороной вы вставляете кабель в разъем устройства.
Стандартная распайка Lightning-кабеля выглядит следующим образом:
И именно тут срабатывает магия Apple. Вам не нужно думать, каким концом устанавливать штекер. За это отвечает и вышеуказанный микропроцессор, и асимметричное размещение контактов.
Т.е. пока вы вставляете шнур, начинка автоматически определяет на какие контакты подавать напряжение.
Всем этим технологиям сопутствуют десятки патентов, которые принадлежат Apple. Но китайской изобретательности нет предела: кабели подделываются с разной точностью и уровнем качества, до соблюдения закона им дела нет.
Поэтому в Apple предусмотрели защиту своих аксессуаров и разработали собственный стандарт сертификации MFI (Made for iPhone/iPad/iPod), а ограничить подключение низкопробных кабелей Lightning решили еще одним, четвертым чипом, установленном на той же миниатюрной плате оригинального шнура.
Американский Firewall против китайских Lightning-подделок
Ненавистный сторонними производителями аксессуаров чип с номером BQ2025. Его без преувеличения можно назвать «пропуском» к недрам гнезда Lightning в iPhone.
Если на неоригинальном кабеле такого чипа нет, iOS-устройство показывает следующее окно:
На этом «недошнурок» можно фактически выбрасывать: он не будет адекватно (или вообще) заряжать девайс, не позволит синхронизировать данные.
Важно: почему появляется сообщение «данный аксессуар или кабель не сертифицирован»?
На чипе BQ2025 есть специальный выделенный цифровой блок постоянной памяти, для изготовления которого используются полупроводники. Его имя — EEPROM. Особенность EEPROM заключается в возможности многократной перезаписи информации (вплоть до миллиона раз).
Объем памяти блока EPROM составляет порядка 64 – 128 бит, но этого вполне достаточно, чтобы туда сохранился уникальный ключ каждого существующего в мире аксессуара для iOS-экосистемы.
В этот блок записывается ключ, позволяющий идентифицировать «оригинальность» – соответствие стандартам Apple и подтверждение наличия официальной сертификации MFI. При подключении ключ на аксессуаре сопоставляется с базой значений на iOS-устройстве. Если такового не найдено, выскакивает сообщение об ошибке и невозможности работы.
Производители поддельных кабелей частично смогли обойти защиту. В качестве альтернативы EEPROM, кустарные фирмы используют эмулятор, в основе которого лежит микроконтроллер 8051. Он обходит защиту Apple, но не является долговечным, отчего кабель резко перестаёт работать с iOS.
Один из 10 вариантов китайского творчества
Любая другая компания стала бы заложником собственной технологии. Подумайте сами. С одной стороны, Apple может в любой момент начать выпуск смартфонов, к которым будут подходить только оригинальные кабели. С другой, на рынке аксессуаров наступит настоящий хаос, а уже приобретенные пользователями оригинальные Lightning станут несовместимыми с новым поколением устройств.
Поэтому хорошо, что Apple делает все порционно. Область EEPROM памяти легко перезаписывается во время очередного обновления iOS посредством приложения iTunes. И очень часто, именно после перепрошивки, китайский Lightning отказывается работать.
Прибавьте к этому DRM-защиту мультимедиа файлов, которую так поддерживает компания, и можете забыть о совместимости несертифицированных аксессуаров для вывода изображения и ретрансляции музыки через порт Lightning.
Еще одна проблема, которая мешает начать производство аксессуаров любому желающему — недоступность и дороговизна схем. Помните описанный выше чип NXP NX20P3? Цена его схемы на черном рынке составляет 2500 долларов!
И для старта производства одной схемы будет явно недостаточно.
Чем опасен поддельный Lightning
Apple задумала систему ключей не просто так. Помимо дохода, подумали и о своей репутации.
Вы часто слышали о взрывающихся смартфонах, лопающихся экранах, потекших аккумуляторах и ударах током при подключении зарядки в среде Android-устройств? Таких случаев масса, на них даже не обращают внимание. Таких ситуаций у Apple-техники – единицы, и каждая вызывает шквал внимания:
Главный вопрос в том, какой аксессуар использовали пострадавшие. В обоих случаях — неоригинальный. Понимаете теперь, почему это так важно?
Где и кто, полагаю, понятно без слов
Нужно смотреть в корень проблемы. Перед покупкой низкокачественного шнурка на китайском сайте подумайте о последствиях. Использование неоригинального Lightning-кабеля может вызвать ряд проблем:
Короче говоря, оригинал того стоит. И даже если кабель конкретно от Apple по каким-то причинам брать не хочется, всегда можно найти сертифицированную, качественную альтернативу. Иногда даже с интересной «фишкой».
Например: алюминиевый стильный кабель uBear за 2 490 руб; кабель в тканевой оплетке Native Union BELT за 3 990 руб, который не запутается и не завяжется; имиджевый аксессуар от Belkin MIXIT – 2 590 руб, который не стыдно доставать из дорожной сумки; еще один «тканевый» вариант от Maxco Lightning – 2 490 руб.
Что внутри кабеля lightning
Заполните форму ниже и наш менеджер свяжется с Вами в ближайшее время!
Ваша Заявка отправлена
Спасибо! Ваша заявка отправлена! В ближайшее время наш менджер перезвонит вам.
Почему оригинал Lightning — это хорошо, что внутри, и как он работает
Каждый владелец iPhone или iPad сталкивается с задачей замены кабеля зарядки. Выбор на рынке очень большой, цены разные, какой же выбрать? Давайте разберемся что внутри оригинального кабеля.
Что внутри Lightning, и почему оригинал — это дорого?
Понять, почему Apple остается компанией, стоимость аксессуаров которой иногда кажется неоправданно высокой, можно лишь после технической процедуры вскрытия.
Перед нами два оригинальных кабеля к смартфонам. Стоимость кабеля micro USB — 105 грн на сайте comfy.ua. Оригинальный Lightning-кабель обойдется в 779 грн (сайт istore.ua), в 7 раз дороже!
Добираемся до внутренностей. Лучший вариант платы, который вы можете увидеть в micro-USB, выглядит так:
В худшем случае, в таком же оригинальном кабеле, вы не увидите даже выпрямителя напряжения. Просто четыре разноцветных провода с экранированием-оплеткой (на которой тоже нередко экономят).
После длительного вскрытия оригинального Lightning-кабеля нам открывается вот такая картина:
Внутри кабеля Lightning спрятан полноценный микрокомпьютер, который не только сканирует весь процесс зарядки устройства, но и облегчает использование аксессуара юзером.
Теперь вы знаете, что сверхвысокая цена обусловлена качеством и внутренностями Lightning-кабеля.
Как работает Lightning и что происходит внутри него
На плате установлены четыре микросхемы и несколько вспомогательных вычислительных узлов, отвечающих за обмен данными с компьютером. После подключения айфона к зарядному устройству, внутри этой микросхемы начинают работать любопытные процессы.
Два из представленных выше чипа довольно просты по своей конструкции и состоят всего из нескольких транзисторов, которые преобразовывают поступающий сигнал тока в состояние, максимально адаптированное для установленной в iPhone батареи.
Еще одна микросхема NXP-NX20P3 обеспечивает контроль над уровнем текущего состояния аккумулятора, вычисляя накопленный объем заряда.
Также находящийся в кабеле микропроцессор определяет и то, какой стороной вы вставляете его в разъем устройства.
Стандартная схема распайки Lightning выглядит следующим образом:
И вот именно тут срабатывает магия Apple. Вам не нужно думать, каким концом вставлять штекер. Спасибо за это вышеуказанному микропроцессору, и асимметричному размещению контактов.
То есть пока вы вставляете провод, внутренности автоматически определяют на какие контакты подавать напряжение.
На эти технологии существуют десятки патентов, которые принадлежат Apple. Но китайским изобретателям до них нет дела, кабели копируются с разной точностью и уровнем качества.
В ответ на массовые подделки, компания Apple предусмотрела защиту своих аксессуаров и разработали собственный стандарт сертификации MFI, а ограничить подключение некачественных кабелей решили дополнительным четвертым чипом, установленном на той же плате оригинального Lightning-шнура.
Американский Firewall против подделок Lightning-кабелей
Ненавистная всеми другими производителями аксессуаров микросхема под названием BQ2025. Ее смело можно назвать «пропуском» к недрам гнезда Lightning.
Если на неоригинальном Lightning-кабеле такой микросхемы нет, iOS-устройство показывает сообщение «Данный кабель не сертифицирован»:
После чего подделку шнурка можно фактически выбрасывать: он либо не будет адекватно заряжать гаджет, либо не будет его заряжать вообще, либо не позволит синхронизировать данные.
Но почему появляется это сообщение?
На микросхема BQ2025 есть специальный выделенный цифровой блок постоянной памяти, для изготовления которого используются полупроводники. Его название — EEPROM. Его задача заключается в возможности многократной перезаписи информации (до миллиона раз).
Объем памяти данного блока EPROM составляет 64 – 128 бит, и этого достаточно, чтобы сохранить уникальный ключ каждого существующего в мире аксессуара Apple.
В этот блок чипа записывается ключ, позволяющий распознать «оригинальность» – соответствие стандартам Apple и подтверждение наличия официальной сертификации MFI. При подключении ключ аксессуара сравнивается с базой значений на iOS-устройстве. Если такой отсутствует, выскакивает сообщение с уведомлением об ошибке и невозможности работы.
Некоторые производители поддельных кабелей все же смогли обойти защиту. Так как поставки микросхем EEPROM строго контролирует компания Apple, подпольные фабрики используют эмулятор, в основе которого лежит чип 8051. Он эффективно обходит защиту Apple, но не является долговечным, отчего кабель в неожиданный момент перестаёт работать с iOS.
Один из вариантов кабелей — подделок:
Очень часто, именно после перепрошивки, китайский кабель отказывается работать. Это происходит из-за перезаписывания памяти EEPROM во время очередного обновления IOS.
Прибавьте к этому DRM-защиту мультимедиа файлов, которую так поддерживает компания, и можете забыть о совместимости несертифицированных аксессуаров для вывода изображения и ретрансляции музыки через порт Lightning.
Еще одна серьезная помеха, которая мешает начать производство поддельных аксессуаров любому желающему — недоступность и дороговизна схем. Помните описанную выше микросхему NXP NX20P3? Цена ее схемы на черном рынке составляет 2500 долларов!
И одной схемы для старта производства будет явно недостаточно.
Перед покупкой дешевого кабеля на непонятном сайте подумайте о последствиях. Использование неоригинального шнурка может вызвать ряд проблем:
Что сказать, оригинал того стоит. Но даже если обычный Lightning-кабель конкретно от Apple брать не хочется, всегда можно найти качественный сертифицированный MFI шнур. Часто даже с интересной «фишкой».
Как устроен Apple Lightning
Это моя маленькая статья с описанием (почти) всего, что я знаю об интерфейсе Apple Lightning и связанных с ним технологиях: Tristar, Hydra, HiFive, SDQ, IDBUS и др. Но сначала маленькое предупреждение…
Читайте эту статью на свой страх и риск! Информация основана на большом количестве внутренних материалов AppleInternal (утечка данных, схем, исходных кодов), которые я прочёл по диагонали. И, конечно, на моих собственных исследованиях. Должен предупредить, что я никогда раньше не проводил подобных исследований. Таким образом, эта статья может использовать неправильные или просто странные термины и оказаться частично или полностью неправильной!
Прежде чем углубиться, давайте кратко разберёмся в терминах:
Что такое Lightning?
Lightning — это цифровой интерфейс, используемый в большинстве устройств Apple iOS с конца 2012 года. Он заменил старый 30-контактный разъём.
На картинке выше гнездо разъёма, а на картинке ниже его распиновка:
Пожалуйста, обратите внимание, что в разъёме контакты с обеих сторон коннектора не соединены в одном и том же порядке. Таким образом, хост-устройство должно определить ориентацию кабеля, прежде чем что-то делать.
Хотя это не всегда так. У многих аксессуаров Lightning, которые мне попадались, в разъёмах зеркальная распиновка.
Что такое Tristar и Hydra?
Tristar — это интегральная схема, встроенная в каждое устройство с гнездом разъёма Lightning. По сути, это мультиплексор:
Кроме всего прочего, его основная цель состоит в том, чтобы соединяться со штекерным разъёмом Lightning, как только он подключён — определять ориентацию, Accessory ID и надлежащим образом маршрутизировать внутренние интерфейсы, такие как USB, UART и SWD.
Hydra — это новый вариант Tristar, используемый начиная с iPhone 8/X. Видимо, наиболее существенным изменением является поддержка беспроводной зарядки, но это ещё предстоит проверить:
Мне известны пять основных вариантов Tristar/Hydra:
Что такое HiFive?
HiFive — это дочерний интерфейс Lightning, то есть штекерный разъём. Он также содержит логический элемент — этот чип известен как SN2025/BQ2025.
Что такое SDQ и IDBUS?
Эти два термина часто считают своего рода синонимами. Для удобства я буду использовать только термин IDBUS, так как он кажется мне более правильным (и именно так технология называется в спецификации THS7383).
Итак, IDBUS — это цифровой протокол, используемый для коммуникации между Tristar и HiFive. Очень похож на протокол Onewire.
Теперь можем начать
Давайте прослушаем коммуникации Tristar и HiFive. Возьмите логический анализатор, переходную плату Lightning с соединением для гнезда и штекерного разъёма, какой-нибудь аксессуар (обычный кабель Lightning-to-USB отлично подойдёт) и, конечно, какое-нибудь устройство с портом Lightning.
Сначала подключите каналы логического анализатора к обеим линиям ID переходной платы (контакты 4 и 8) и подключите плату к устройству, но пока не подключайте аксессуар:
Сразу после этого начните выборку (подойдёт любая частота от 2 МГц и выше). Вы увидите что-то вроде этого:
Как видете, Tristar опрашивает каждую линию ID по очереди — одну за другой. Но поскольку мы не подключили никакого аксессуара, опрос явно провалился. В какой-то момент устройство устанет от этого бесконечного потока отказов и остановит его. А пока давайте разберёмся, что именно происходит во время опроса:
Сначала мы видим длинный интервал (около 1,1 миллисекунды), когда просто уровень высокий, но больше ничего не происходит:
Видимо, это время используется для зарядки внутреннего конденсатора HiFive — энергия от него будет затем использоваться для питания внутренних логических чипов.
Гораздо интереснее то, что происходит потом:
Очевидно, это поток каких-то данных. Но как его интерпретировать? Как расшифровать? Давайте виртуально разделим его на минимальные значимые части — то, что я называю словами:
По сути слово — это сочетание падения-подъёма-падения:
Содержание | Восстановление | ||||
---|---|---|---|---|---|
Слово | Min | Typ | Max | Min | Typ |
BREAK | 12 | 14 | 16 | 2.5 | 4.5 |
WAKE | 22 | 24 | 27 | 1100? | |
ZERO | 6 | 7 | 8 | 3 | |
ONE | 1 | 1.7 | 2.5 | 8.5 | |
ZERO и STOP* | 6 | 7 | 8 | 16 | |
ONE и STOP* | 1 | 1.7 | 2.5 | 21 |
* STOP используется, когда это последний бит в байте
Используя приведённую выше таблицу теперь мы можем построить простой декодер протокола:
Как видите, сначала хост посылает BREAK — когда Tristar хочет отправить новый запрос, хост всегда начинает с этого слова. Затем наступает этап передачи данных. Пожалуйста, обратите внимание, что у последнего (8-го) бита в байте более длительный этап восстановления. Когда этап передачи данных заканчивается, хост отправляет ещё один BREAK. Затем дочернее устройство должно отправить ответ (после задержки не менее 2,5 микросекунд — см. таблицу). Tristar будет ждать ответа около 2,2 мс. Если ответ не выдан в этот промежуток времени, Tristar попытается опросить другую линию ID.
Теперь давайте рассмотрим этап данных на примере выше — 0x74 0x00 0x02 0x1f :
И вот что появляется на IDBUS после запроса 0x74:
HiFive ответил! И если вы прокрутите дальше, то увидите много других пар запрос/ответ:
Некоторые запросы не нуждаются в ответе:
Интерпретация запросов и ответов IDBUS
Самый важный запрос IDBUS — это 0x74, он используется для двух целей: чтобы приказать HiFive включить полное напряжение и силу тока (в случае, если оно поддерживается аксессуаром), спросить его о конфигурации контактов, которые поддерживаются кабелем, и некоторых других метаданных.
О том, как кодируются данные ответа 0x75, известно не так уж много. Но некоторые биты доступны в старой спецификации Tristar:
Первый байт данных ответа 0x75
ACCx[1:0] | ACC1 | ACC2 | HOST_RESET |
---|---|---|---|
00 | Hi-Z (IDBUS) | Hi-Z | Hi-Z |
01 | UART1_RX | UART1_TX | Hi-Z |
10 | JTAG_DIO | JTAG_CLK | Hi-Z |
11 | Hi-Z | Hi-Z | HIGH |
ACCx[1:0] | ACC1 | ACC2 | HOST_RESET |
---|---|---|---|
00 | Hi-Z | Hi-Z (IDBUS) | Hi-Z |
01 | UART1_RX | UART1_TX | Hi-Z |
10 | JTAG_DIO | JTAG_CLK | Hi-Z |
11 | Hi-Z | Hi-Z | HIGH |
Dx[1:0] | DP1 | DN1 | DP2 | DN2 |
---|---|---|---|---|
00 | Hi-Z | Hi-Z | Hi-Z | Hi-Z |
01 | USB0_DP | USB0_DN | Hi-Z | Hi-Z |
10 | USB0_DP | USB0_DN | UART1_TX | UART1_RX |
11 | Hi-Z | Hi-Z | Hi-Z | Hi-Z |
Dx[1:0] | DP1 | DN1 | DP2 | DN2 |
---|---|---|---|---|
00 | Hi-Z | Hi-Z | Hi-Z | Hi-Z |
01 | Hi-Z | Hi-Z | USB0_DP | USB0_DN |
10 | USB0_DP | USB0_DN | UART1_TX | UART1_RX |
11 | Hi-Z | Hi-Z | Hi-Z | Hi-Z |
Используя эти таблицы, давайте расшифруем ID нашего кабеля ( 10 0C 00 00 00 00 ) с учётом того, что линия ID найдена на контакте ID0:
Первый байт ответа 0x75 кабеля
Таким образом, ACCx — это 00, Это означает, что пин ID0 просто привязан к IDBUS, а Dx = 01 означает, что пины DP1/DN1 настроены как USB0_DP/USB0_DN. Именно то, что мы ожидали от стандартного USB-кабеля.
А теперь давайте перехватим что-нибудь поинтереснее:
Аксессуар | ID (HOSTID = 1) |
---|---|
DCSD | 20 00 00 00 00 00 |
KongSWD (без работающего Astris) | 20 02 00 00 00 00 |
KongSWD (с работающим Astris) | A0 00 00 00 00 00 |
KanziSWD (без работающего Astris) | 20 0E 00 00 00 00 |
KanziSWD (с работающим Astris) | A0 0C 00 00 00 00 |
Haywire (HDMI) | 0B F0 00 00 00 00 |
Зарядка UART | 20 00 10 00 00 00 |
Lightning на 3,5 мм/EarPods с Lightning | 04 F1 00 00 00 00 |
Вот полный (?) список запросов IDBUS от @spbdimka:
Совет №1: вы можете легко получить свойства аксессуара, включая его идентификатор, используя accctl:
Это внутренняя утилита Apple, поставляемая со сборками NonUI/InternalUI. Но вы можете легко запустить её на любом устройстве после джейлбрейка.
Совет №2: вы можете легко получить конфигурацию контактов кабеля с помощью diags:
Обратите внимание, что эта команда доступна только на iOS 7+.
Совет №3: вы можете легко отслеживать запросы/ответы 0x74/0x75, генерируемые SWD-пробами, установив debug env var, равное 3:
Затем на виртуальном COM от кабеля вы увидите что-то вроде этого:
HOSTID
В одной из таблиц выше можно увидеть упоминание некоего HOSTID. Это 16-битное значение, передаваемое в запросе 0x74. Похоже, что оно также влияет на ответ HiFive. По крайней мере, если установить для него недопустимое значение (да, это возможно с diags), HiFive перестаёт с ним работать:
Впрочем, в прошивке KongSWD/KanziSWD есть переменная окружения disableIdCheck, которую вы можете настроить так, чтобы игнорировать недопустимый HOSTID.
Важное примечание: У Kong и Kanzi нет HiFive в качестве выделенного непрограммируемого чипа. Эти аксессуары эмулируют его с помощью микроконтроллера и/или блока FPGA, что позволяет его легко обновлять/перепрограммировать.
В таблице Accessory ID выше можно заметить, что Kong и Kanzi посылают разные ответы в зависимости от того, запускается или нет Astris, это программное обеспечение AppleInternal, предназначенное для отладки с помощью SWD-проб (или зондов). Если вы расшифруете эти ответы с помощью приведённых выше таблиц, то обнаружите, что когда Astris не запускается, зонд будет действовать точно так же, как DCSD — USB на линиях D1 и debug UART на линиях D2. Но когда отладочное программное обеспечение работает, линии ACCID переключаются на SWD.
Но что, если мы хотим запустить Astris после того, как зонд уже подключён к устройству? Что будет делать кабель? Как он будет переключаться между линиями ACC на SWD? Вот тут-то WAKE и вступает в игру! HiFive (или устройство, которое его эмулирует) может инициировать WAKE — и процесс перечисления IDBUS начнётся снова: Tristar отправит запрос 0x74, Kong/Kanzi ответит новым идентификатором, Tristar подтвердит его и направит линии ACC на внутренние линии SWD (SoC должен это поддерживать на физическом уровне, конечно).
Рукопожатия питания
Последнее, что я собираюсь рассмотреть — рукопожатия питания (power handshakes). Это алгоритм, основанный на запросах/ответах IDBUS, которые драйверы ядра Tristar используют перед тем, как разрешить зарядку от аксессуара.
Когда кабель Lightning просто где-то лежит, подключённый к зарядному устройству/компьютеру, но не подключённый к устройству, HiFive ограничивает ток на PWR действительно небольшим значением (около 10-15 мА по моим измерениям). Чтобы включить полный ток, запрос 0x74 должен быть выдан Tristar и обработан HiFive. Для SecureROM/iBoot этого достаточно, но при загрузке ядра необходимо сделать дополнительные шаги:
Несколько слов об ESN и интерфейсе Tristar I2C
Ещё одна особенность Tristar, о которой я хотел бы рассказать, — ESN. Это маленький блоб, который Tristar хранит в своём EEPROM (на CBTL1610A2 и более поздних версиях). Его можно получить по IDBUS с помощью кабеля Serial Number Reader (или Kanzi, они в основном одинаковые, за исключением разных USB-PID и немного отличающихся корпусов)
Проще говоря, отправив этот блоб на ttrs.apple.com, вы можете получить серийный номер устройства. Этот механизм используется сотрудниками Apple Store/Apple Premium Reseller для извлечения SN с мёртвых устройств (если Tristar ещё жив):
Что происходит на IDBUS при получении ESN, задокументировал @spbdimka:
Подготовка
Процедура «прошивки» ESN на Tristar называется подготовка (provisioning). Она происходит с диагностикой на стороне устройства, через EzLink на принимающей стороне в три этапа.
Вы можете проверить состояние с помощью diags:
… а также получить ESN:
Кстати, у diags вообще богатый набор команд Tristar (доступен, начиная с iOS 7):
Tristar I2C
Tristar доступен на шине I2C (адрес 0x34 для записи, 0x35 для чтения). Именно так diag и драйверы ядра с ним взаимодействуют.
О реестрах публично известно не так уж много. Много информации о самой карте регистра можно получить из утёкшего исходного кода iBoot (только для THS7383 — кажется, обратно совместимого с CBTL1608 — и CBTL1610), но не так много о том, что нужно туда записать, чтобы добиться каких-то интересных результатов.
Ещё одним источником знаний является модуль Tristar из diags (легко извлекаемый через SWD во время его работы). Например, мне удалось отреверсить алгоритмы чтения состояния подготовки и ESN. Затем я реализовал это как дополнение к моей нагрузке для iBoot под названием Lina:
Я также попытался изменить алгоритм записи ESN, но потерпел неудачу — механизм слишком сложный для меня. Однако фрагменты кода от Lina доступны здесь.
Электрические характеристики Tristar
Сам Tristar питается от источника 1,8 В. Линии для IDBUS устойчивы к 3,0 В, согласно моему осциллографу:
Таким образом, без схемы сдвига уровня лучше не пытаться взаимодействовать с IDBUS с помощью устройств, устойчивых к 5 В, как некоторые модели Arduino.