Apple lightning usb host

USB-OTG и Apple. Подключаем любые USB-флешки к iPhone и iPad


Испокон веков отсутствие возможности подключать флешки к iPhone вызывало ехидные смешки у пользователей Android.

На самом деле, это было не совсем правдой. Теоретически USB-носители к iOS подключались и раньше, однако должны были удовлетворять нескольким критериям — то бишь в реальности из нескольких флешек дома могла не подойти ни одна. Китайские производители развернули на этом целую индустрию, выпуская флеш-носители со встроенным разъемом Lightning, и придавая им причудливую форму, чтобы использовать такие носители «на ходу». Кроме того, для таких флешек необходимо специальное приложение, и у каждого китайского вендора оно свое — зачастую не очень красивое и с иероглифами.

  • Кстати, если у тебя устройство с iOS 12 или старше — это как раз твой вариант)) выбирай известный бренд, тогда проблем с софтом и подключением точно не будет. Например, точно будет беспроблемной
    Lightning-флешка SanDisk

Однако с приходом iOS и iPadOS 13 всё изменилось
Операционная система теперь поддерживает намного больше USB-носителей и аксессуаров, при наличии соответствующего универсального переходника. И, самое главное, больше не нужно сторонних программ — встроенное приложение «Файлы» работает с подключенными носителями на нативном уровне.

Но не всё так просто. Многие пользователи, которые попробовали подключить флешку к устройству на iOS 13 обнаружили, что она всё так же не читается системой. Всё дело в одной маленькой хитрости, которую надо знать, выбирая переходник для подключения USB-флешки к iPhone или iPad.

Питание
Это и есть та самая хитрость. Сейчас объясню. Кому не интересно — переходите к следующему подзаголовку.

Любая флешка нуждается в питании, так как состоит из сложных микросхем — они ведь не работают от воздуха. То есть, когда мы подключаем флеш-носитель к устройству, происходит симбиоз: флешка берет у устройства питание через разъем подключения, при этом давая нам возможность работать с информацией на ней через этот же разъем. И вот тут проблема: подавляющее большинство флеш-накопителей требуют питания больше, чем отдает обычный переходник Lightning-USB.
К слову, даже оригинальный «Apple Camera Connection Kit» пропускает через себя всего 100mA тока, так как предполагается, что подключенный через него фотоаппарат имеет свой аккумулятор и не требует питания у iPhone или iPad (на флешки этот переходник не рассчитан вообще).
Большинство же USB-флешек требует до 200mA. Получается, чтобы иметь возможность подключить любую флешку к iOS 13 и работать с ней — нужен переходник, пропускающий через себя не менее 200mA.

Корявый скриншот из карточки товара — ищите такую надпись

Необходимый переходник
И я нашел такой на просторах AliExpress. Более того, я заказал его сразу после релиза новой iOS 13 осенью 2019 года. Переходник приехал и оправдал все мои ожидания. С его помощью мой iPad адекватно распознал каждую флешку, которая есть у меня дома — и свежие USB 3.0, и очень старые 2.0, которые я покупал себе, еще будучи школьником.

  • Вот это тот самый переходник →Lightning to USB (200mA power)
  • Есть еще второй вариант, но мне он нравится меньше → Lightning to USB (200mA, with power connector)

«32GB» — это название моей самой старой флешки, ей уже порядка 10 лет

Стоит сказать, что подключить через него SSD-накопитель с помощью переходника «SATA3 — USB» у меня не удалось, так как SSD-диски требуют намного больше питания. Возможно, здесь как раз поможет второй адаптер Lightning по ссылке выше или же переходник на SATA3 — оба с возможностью подключения дополнительного питания. Внешнего HDD-диска с собственным питанием для проверки у меня просто нет под рукой. Просто имей в виду этот момент, если собираешься подключать именно жесткие диски.

Источник

Секретные возможности переходника Lightning на USB

Раскрываем недокументированные способности USB-порта для iДевайсов. Всё здесь.

Переходник USB – Lightning давно продаётся в России, но знают о нём немногие. В конце прошлого года после релиза iOS 9.2 на официальном сайте обновили описание данной модели и расширили список поддерживаемых устройств. Теперь пользоваться аксессуаром можно практически с любым iPhone и iPad.

Официальное описание гласит:

О других возможностях в Apple умалчивают. И зря, потому что переходник рулит и может реально облегчить жизнь.

Подключение флешек


Зачем: расширить память iPhone и iPad.

Памяти никогда не бывает много, особенно на мобильном устройстве. Часто хочется добавить несколько гигабайт для хранения фото или видео. Для таких случаев отлично подойдут специальные Lightning-флешки от сторонних производителей, например, PQI iConnect или JetDrive Go 300.

Простая флешка, подключенная через USB – Lightning переходник, будет иметь ряд ограничений. Не каждый накопитель захочет работать без дополнительного питания, особенно современные емкие флешки. Другим преимуществом специализированных решений является отдельное приложение, которое позволяет считывать и записывать на носитель любые типы данных.

В случае с обычной флешкой придется довольствоваться лишь просмотром фото и видео в совместимом формате. Чтобы файлы были распознаны, они должны находиться по пути DCIM -> 100DICAM, и иметь названия DSC_0001, DSC_0002 и т.д.

Читайте также:  Как узнать место нахождения айфон

Подключение карт памяти


Зачем: просматривать отснятые на камеру фото на большом экране.

При таком использовании переходника будут как положительные, так и отрицательные моменты. Распознаются почти любые карты памяти, файлы, которые будут храниться на них не нужно будет называть специфическим образом (если они действительно отсняты на камеру). К сожалению, помимо переходника USB – Lightning потребуется специальный картридер.

Подключение внешнего накопителя


Зачем: сложно представить.

С внешними дисками ситуация не лучше, чем с USB флешками. Действуют ограничения на формат файлов и их название, накопители часто требуют питание даже больше, чем флешки. Модели с внешним питанием могут распознать смартфоном или планшетом Apple, но 100% гарантии никто не даст.

Ну и представьте себе схему подключения, при которой к iPhone подключен внешний диск через USB – Lightning, а сам накопитель получает энергию от сетевого адаптера или Power Bank. Просто ужас!

Подключение клавиатуры


Зачем: чтобы писать письма, сообщения, статьи и даже романы на своем любимом устройстве.

Странно, но беспроводное соединение с bluetooth клавиатурой выглядит вполне логично, а проводная «клава» необычно смотрится с iPhone и iPad.

Если по ряду причин брать полноценный ноутбук с собой нет возможности, а беспроводная клавиатура еще не куплена, переходник поможет «подружить» практически любое проводное средство ввода со смартфоном или планшетом Apple.

Подключение MIDI-синтезатора


Зачем: чтобы превратить смартфон или планшет в музыкальный инструмент.

Некоторые профессиональные производители аудио-аксессуаров уже выпустили микшерские пульты, микрофонные предусилители и инструменты с возможностью подключения через Lightning. Большинство аналогичных моделей с USB-портом смогут работать с техникой Apple через переходник USB – Lightning.

Для работы потребуется специальное ПО. Подходящих приложений в App Store великое множество, даже сама Apple предлагает такие функции в программе GarageBand.

Подключение USB-микрофона


Зачем: чтобы превратить мобильное устройство Apple в портативную студию звукозаписи.

USB-интерфейс стал одним из стандартов подключения микрофонов к современной технике. Большинство блогеров и вокалистов-любителей используют устройства с USB-разъемом для записи голоса прямо на компьютере. При помощи уже знакомого переходника большинство моделей микрофонов можно подключить к iPhone или iPad.

Уже хочу, дайте два!

Теперь, когда полезность аксессуара от Apple значительно выросла в глазах большинства пользователей, самое время узнать о цене новенького адаптера Apple Lightning to USB. Приобрести аксессуар можно за 2 290 руб.

Предлагаю в комментариях делиться другими устройствами, которые вам удалось «подружить» с iPhone и iPad при помощи переходника USB – 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:

  • TI THS7383 — Tristar первого поколения в iPad mini 1 и iPad 4
  • NXP CBTL1608A1 — Tristar первого поколения в iPhone 5 и iPod touch 5
  • NXP CBTL1609A1 — таинственный Tristar первого поколения в iPod nano 7 — источник
  • NXP CBTL1610Ax — TriStar второго поколения, используется начиная с iPhone 5C/5S и, по-видимому, во всём остальном, что не поддерживает беспроводную зарядку. Существует несколько поколений (x — номер поколения)
  • NXP CBTL1612Ax — Hydra используется с iPhone 8/X и, видимо, во всём остальном, что поддерживает беспроводную зарядку. Существует несколько поколений (x — номер поколения)

С этого момента я буду использовать только термин TriStar, но имейте в виду, что он также означает Hydra, поскольку они очень похожи в большинстве аспектов, которые будут рассмотрены в этом тексте.

Что такое HiFive?

HiFive — это дочерний интерфейс Lightning, то есть штекерный разъём. Он также содержит логический элемент — этот чип известен как SN2025/BQ2025.

Что такое SDQ и IDBUS?

Эти два термина часто считают своего рода синонимами. Для удобства я буду использовать только термин IDBUS, так как он кажется мне более правильным (и именно так технология называется в спецификации THS7383).

Читайте также:  Как проверить батарейку iphone

Итак, 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 :

  • 0x74 — тип запроса/ответа. Всегда чётный для запроса и нечётный для ответа (тип запроса +1)
  • 0x00 0x02 — фактические данные. Может быть пустым
  • 0x1f — это CRC8 как байта типа запроса, так и всех данных (полином — 0x31, начальное значение — 0xff)

Давайте подключим к нашей установке какой-нибудь аксессуар и посмотрим, что произойдёт. Я буду использовать оригинальный кабель Lightning-to-USB от Apple:

И вот что появляется на IDBUS после запроса 0x74:

HiFive ответил! И если вы прокрутите дальше, то увидите много других пар запрос/ответ:

Некоторые запросы не нуждаются в ответе:

Интерпретация запросов и ответов IDBUS

Самый важный запрос IDBUS — это 0x74, он используется для двух целей: чтобы приказать HiFive включить полное напряжение и силу тока (в случае, если оно поддерживается аксессуаром), спросить его о конфигурации контактов, которые поддерживаются кабелем, и некоторых других метаданных.

О том, как кодируются данные ответа 0x75, известно не так уж много. Но некоторые биты доступны в старой спецификации Tristar:

Первый байт данных ответа 0x75

7 6 5 4 3 2 1 0
ACCx Dx DATA[43:40]
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 кабеля

7 6 5 4 3 2 1 0
ACCx Dx DATA[43:40]
0 0 0 1 0 0 0 0

Таким образом, 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 этого достаточно, но при загрузке ядра необходимо сделать дополнительные шаги:

  1. TriStar выдаёт два запроса 0x70
  2. Как только второй запрос обработан HiFive и отправлен ответ, он вообще отключает ток примерно на 20 миллисекунд
  3. По истечении этого времени Tristar выдаёт ещё один запрос 0x70, но с содержанием 0x80 в данных. HiFive обрабатывает его и отвечает
  4. На этом этапе драйвер ядра, ответственный за Tristar, должен разрешить зарядку

Важное замечание: это та часть, которую я знаю меньше всего. И это одна из тех частей, которые я в основном сам отреверсил. Таким образом, будьте осторожны с этой информацией

Несколько слов об 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.

Источник

Оцените статью