Коннектор в айфоне что это
Чем Lightning лучше USB Type-C
Apple внедрила USB Type-C в iPad Pro и добавила разъем в новый адаптер быстрой зарядки, но не спешит устанавливать его в iPhone, делая ставку на проверенный временем Lightning. Кажется, пришло время с ним прощаться, ведь появился по-настоящему серьезный конкурент от USB, который, кажется, способен на большее. Так ли это? В чем разница между этими интерфейсами? Какой надежнее и лучше? Почему пользователи iPhone недолюбливают Lightning? Собрали необходимую информацию воедино.
Рассказываем об основных отличиях Lightning и USB Type-C
Что такое Lightning
Apple представила Lightning в 2012 году и с тех пор ходило немало пересудов на тему того, что этому разъему пора на покой. Несмотря на компактность и простоту в использовании, есть ряд недостатков. Один из них связан с тем, что Lightning — это закрытый стандарт Apple и все характеристики и права на эту марку принадлежат ей. Именно по этой причине такие аксессуары стоят гораздо дороже, чем пресловутый USB, в том числе, Type-С. В нашем канале Яндекс.Дзен мы уже не раз говорили, что инсайдеры не первый год трубят о том, что компания планирует избавиться от своей разработки, выбрав универсальный Type-C, но в это сложно поверить.
Что лучше? У обоих разъемов есть свои плюсы
На это есть одна важная причина, точнее, три буквы: MFi (Made For iPhone/iPad). Это программа сертификации, которая существует еще с начала позапрошлого десятилетия. Данная сертификация подразумевает то, что производитель аксессуаров обязан выполнить специальные условия, связанные с надежностью товара. Если все отлично, то производитель может использовать логотип на продукции, а покупатель получает более-менее качественный товар, который проверен и безопасен для смартфона. Основная фишка сертификации в том, что внутри кабеля для зарядки установлен чип, который контролирует процесс и не дает устройству перегреться. Если чипа нет, или он работает неправильно, то появляется уведомление «Этот аксессуар не поддерживается».
Поэтому, покупая новый аксессуар, не скупитесь на тот, что подороже с логотипом MFi.
Что лучше: Lightning или Type-C
Оба разъема симметричны: благодаря конструкции, нет разницы, как вставлять кабель в гнездо. Что надежнее? Lightning — это цельный штекер, который медленно изнашивается. Благодаря отсутствию выемки (как у USB Type-C) он меньше подвержен износу. В пользу нового Type-C говорит и то, что он гораздо популярнее разъема Apple — больше шансов найти такой кабель для Android, чем «зарядку для айфона». Не стоит забывать о скорости передачи данных: у Type-C она может достигать 10 Гбит/с.
Как показывает практика, разъем от Apple гораздо надежнее
Что лучше? У обоих стандартов есть свои плюсы, но всё же будущее за USB Type-C — этот разъем быстрее и эффективнее, он универсальнее и создан на долгие годы. Вот увидите, его будут внедрять не только в смартфоны и умные колонки, но и в другие умные гаджеты — возможности Type-C невероятно велики. Проблематично то, что Apple вряд ли откажется от своего детища, ведь контролировать сертификацию кабелей Type-C станет гораздо проблематичнее.
За что не любят Lightning
Недолюбливают фирменный разъем Apple не только хейтеры, но и собственные фанаты, устраивающие friendly fire. Большинство использующихся кабелей Lightning по-прежнему оснащены USB 2.0 и передают данные с низкой скоростью. Этого крайне недостаточно в 2021 году. Единственный выход — приобрести новый iPhone, в котором USB 2.0 заменен на Type-C, но вариант, мягко говоря, не самый бюджетный. Кстати, о цене: фирменные зарядки — не из дешевых, в отличие от USB. Об этом уже написано чуть выше, но эта претензия — палка о двух концах. С одной стороны, пользователей ограждают от бракоделов с их копеечными зарядками. С другой, это за наш же счет. Хорошо это или плохо? Поделитесь своим мнение в нашем Telegram-чате.
Apple по-своему трактует понятие «быстрая» зарядка
Пользователей также не устраивает отсутствие по-настоящему быстрой зарядки. Android-смартфоны давно бьют рекорды, но в iPhone приходится довольствоваться тем, что есть. Вся проблема кроется в ограничениях Lightning, которых нет у USB Type-C. В целом, если не Apple, то кто должен прекратит эту тягомотину с разъемами, которая тянется аж с самых истоков существования смартфонов. Да, это ударит по выручке компании, но вряд ли это принесет непоправимый урон — сомневаюсь, что фирменные кабели Type-C от Apple перестанут пользоваться спросом.
Отказ от Lightning — смелое решение в стиле Apple. В это сложно поверить, но когда-то это должно произойти. С другой стороны, на данный момент фирменный разъем гораздо надежнее, чем Type-C. Понятно, что за ним будущее и у него больше плюсов, чем минусов. Отказавшись от Lightning компания потеряет немного денег, зато мощно расширит экосистему, над которой усердно работает в последние годы. Тот самый случай, когда нужен шаг назад, чтобы потом сделать два шага вперед.
Как устроен 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.
Apple пора отказаться от Lightning и поставить Type-C в iPhone. Какие у этого плюсы и минусы
Уже практически вся техника Apple имеет разъём USB Type-C. Впервые он появился в MacBook 2015 года, потом в iPad Pro 2018 и в сентябре 2021 года разъём дебютировал в новом поколении iPad mini.
На презентациях Apple всегда подчёркивает, что с помощью Type-C можно удобно работать с различным оборудованием, напрямую подключать камеры и другую периферию. Да, чёрт возьми, это действительно позволяет сделать из мобильного гаджета рабочий девайс!
До сих пор не понимаю, почему такого разъёма не появилось в iPhone, хотя бы в Pro-версии. Я, как обладатель Google Pixel с разъёмом Type-C, могу сказать, что это действительно то, чего не хватает в iPhone. Но есть минусы.
Плюс: iPhone можно будет заряжать кабелем практически от любого смартфона
Lightning был прорывом для 2012 года. Но прошло уже 9 лет.
Не могу сказать, что найти Lighting в компании друзей или в каком-то заведении сложно, нет, они есть практически везде и практически у всех. Но Type-C не менее распространён, и есть в большинстве современных смартфонов. Даже в самых бюджетных.
Представьте, что вы можете одним кабелем и одним блоком питания заряжать, как MacBook, iPad, так и iPhone. Согласитесь, удобно!
Недавно ЕС изъявили, что приложат усилия, дабы внести единый стандарт разъёма для всех смартфонов, в том числе и для iPhone. Apple на это резко отреагировали, заявив, что подобный проект будет тормозить развитие технологий. Я так не считаю.
Потому что сама Apple не обновляла стандарт Lightning с момента его появления в 2012 году. Да-да, iPhone 13 Pro Max передаёт информацию по кабелю со скоростью iPhone 5. Даже самые ярые фанаты Apple наверняка не будут против такого нововведения.
Минус: множество аксессуаров отправится на покой
На рынке есть много достойных док-станций для iPhone.
Пресловутая экосистема Apple, о которой многие любят говорить, заключается не только в софтверных фишках, но и в «железках». Производители делают огромные деньги на продаже аксессуаров Lightning. В том числе и сама Apple.
Так что большинство док-станций, кабелей которые используются в течение нескольких лет придётся выкинуть или продать. Это печально.
Хотя рынок аксессуаров с Type-C не менее богат, а его адаптация под iPhone наверняка заняла бы всего несколько месяцев.
Плюс: передавать данные можно будет быстрее
Формат USB 2.0, используемый в Lightning не соответствует современным реалиям.
Есть категория людей, которые считают, что в мир облачных хранилищ, AirDrop и прочей беспроводной синхронизации проводное подключение не нужно. Отвечу за другую категорию кратко: нужно!
Как минимум в случае с iPhone 13 Pro Max и тяжеловесным кодеком ProRes. Допустим, вы наснимали экранного времени на полтерабайта и вам нужно всё это скинуть на рабочий компьютер, чтобы добавить на монтажную линию. И все эти файлы будут перекачиваться по стандарту USB 2.0.
Напомню, что минута видео в ProRes 4K на iPhone 13 Pro весит 5,5 Гбайт. И скачивать такой объём информации на компьютер придётся явно не пару минут.
Минус: Lightning для AirPods придётся носить отдельно
Беспроводная зарядка не универсальный вариант.
Новые AirPods 3 по-прежнему имеют зарядку Lightning. Точно так же, как и AirPods Pro, и AirPods Max… Это я ещё не говорю о россыпи разных наушников Beats.
Выходит, что для этих наушников всё равно придётся носить отдельный кабель. Единственное, что спасает, так это поддержка беспроводной зарядки в некоторых моделях наушников.
Надеюсь, что если Apple переведёт iPhone на Type-C, но то же произойдёт и с AirPods. Ну или хотя бы выпустит новые футляры с Type-C.
Плюс: iPhone Pro станет по-настоящему Proфессиональным
Альтернативой iPhone Pro Max теперь является iPad mini 6.
Закончу свой материал последним пунктом, и пусть это будет плюс, потому что мне кажется, что необязательно лишать всю линейку смартфонов Apple разъёма Lightning. Type-C будет достаточно для Pro-линейки iPhone.
Думаю, что настоящие профессионалы, приобретающие себе эти смартфоны, оценят нововведение с положительной стороны. Вспомните анонс iPad mini, где Apple хвалилась тем, что для iPad есть различное медицинское оборудование.
А теперь представьте, какой прирост мобильности получат врачи, если они смогут подключать портативный аппарат ЭКГ или УЗИ к устройству весом несколько грамм. Бывают случаи, когда нести тяжёлое и дорогостоящее оборудование с собой невозможно.
Такие возможности пиарит сама Apple.
В таком случае iPhone мог бы стать ещё незаменимым помощником и для фотографов. Не зря же в максимальных конфигурациях теперь есть 1 терабайт памяти.
А вы, как думаете, нужен ли Type-C в iPhone? Пишите своё мнение в комментарии.