Почему одни аксессуары работают с адаптером Lightning — USB3 Camera Adapter, а другие нет?

Контекст

Я одолжил iPad Pro, чтобы поработать, пока мой ноутбук выключен, но без физической клавиатуры мне было неприятно печатать на нем что-то большее, чем короткое предложение.

После бесчисленных опечаток и усталости запястья я попытался подключить полноразмерную USB-клавиатуру (в частности, эту ) с помощью адаптера Lightning to USB 3 Camera, и это сработало отлично! Регулятор громкости, яркость экрана, функциональные клавиши — все работало почти так же, как Bluetooth-клавиатура при подключении к устройству iOS.

Но, к моему большому замешательству, на следующий день все произошло с точностью до наоборот. Когда я подключил клавиатуру, iPad, похоже, не распознал ее.

Нажатие на текстовое поле, как обычно, вызывало программную клавиатуру, и ни одно из нажатий клавиш, которые я вводил на физической клавиатуре, казалось, не регистрировалось. Кнопка выхода работала как кнопка «Домой» за день до этого, а также fnклавиши « » для управления мультимедиа, но не больше.

Я не вносил никаких изменений, которые, по моему мнению, были бы значительными (ни обновлений iOS, ни обновлений прошивки адаптера — если бы они не устанавливались автоматически, я бы не знал). iPad даже не перезагружался. Однажды он работал нормально, но после того, как его отключили на ночь, он, видимо, решил вообще не распознавать клавиатуру ?? Не было всплывающего окна «Возможно, этот аксессуар не поддерживается», которое я видел при подключении неподходящих кабелей, зарядных устройств и т. д.

Вопрос

Я был немного разочарован и нашел это настолько странным, что попытался выяснить, что именно привело к тому, что установка перестала работать в одночасье, и в конце концов пришел к вопросу о том, что заставляет конкретную настройку устройства iOS + USB-адаптера камеры + USB-устройства работать в первое место?

Обычно при проблеме совместимости USB-аксессуаров между компьютером дерево драйверов/устройств было бы первым местом, которое я бы посмотрел, но связь, которая происходит через адаптер камеры и порт молнии, кажется черным ящиком. Недавно я получил iPad Pro (9,5 дюйма), и одним из первых способов, который я попробовал, было использование с ним аппаратной клавиатуры, но безуспешно.

Я сделал джейлбрейк iPad (iOS 11.2.5, используя Electra1131 MPTCP), но понял, что понятия не имею, где открыты устройства USB-через-адаптер-через-молнию, и есть ли они вообще.

Теперь я знаю, что использование адаптера камеры для чего-либо, кроме камер и некоторых специально перечисленных устройств, сертифицированных для работы с ним, является случайностью, но я всегда думал, что это либо одно, либо другое. Тот факт, что он работал в какой-то момент и вскоре перестал работать, заставляет меня умирать от желания узнать, кто виноват и как работает связь, позволяющая iPad выступать в качестве USB-хоста.

Есть ли драйвера в iOS? Они зашиты в прошивку адаптера камеры? Это просто большая загадка? Любые указатели на то, где искать, также будут оценены, учитывая, что у меня есть доступ к файловой системе и среде выполнения системы, но обычно не для сторонних приложений.

Я обнаружил, что клавиатура распознается, если iPad также подключен к источнику питания. В противном случае он не распознается.

Ответы (2)

Да, в iOS есть драйвера. iOS основана на Darwin, как и macOS. Это точно такой же тип драйверов.

Нет, эти драйвера не встроены в прошивку адаптера камеры. Сам адаптер камеры не имеет специальной поддержки устройств хранения данных, клавиатур, камер, адаптеров Ethernet, MIDI-клавиатур или чего-либо еще, что вы хотели бы подключить. Эти типы драйверов работают в операционной системе на самом устройстве iOS.

Место, где можно начать поиск дополнительной информации о подключенных USB-устройствах, — запустить команду «dmesg» после подключения устройства. Вы также можете искать и/или устанавливать пользовательские расширения ядра, поддерживающие определенные типы USB-устройств.

Одной из распространенных причин проблем с USB-устройствами на устройствах iOS является то, что порт USB обеспечивает очень небольшое количество энергии. Многим USB-устройствам требуется больше энергии, чем может обеспечить этот порт. Затем вам нужно будет подключить USB-устройство к USB-концентратору с питанием, а затем подключить концентратор с адаптером камеры к устройству iOS.

о ничего себе, dmesg, да. Я искал logили даже syslogс тех пор, как сервер ведения журналов оказался более или менее идентичным OS X, но я думаю, неудивительно, что их нет на iOS. Я обнаружил, что могу передавать журналы в консольное приложение, если подключаюсь с помощью кабеля молнии, но в моем случае это не так полезно, лол. Есть ли способ заставить dmesg «ждать» в iOS? dmesg -wтак и dmesg --followне получилось, любопытно печатая сообщение usage: sudo dmesgперед выходом. редактировать, потому что автозамена ненавидит слово dmesg
О, и требования к питанию были одной из первых вещей, которые я проверил, чтобы увидеть, не виноват ли он. Я пробовал почти все, клавиатура -> концентратор с питанием -> адаптер -> iPad, клавиатура + зарядное устройство -> iPad, подключая их в разных последовательностях, все, кроме вуду. Был почти соблазн соединить кабель, который соединился с отдельной шиной 5v, но здравый смысл/неуверенность в моих знаниях в области электротехники остановили меня. Кстати, спасибо за ответ, забыл сказать.
iOS и macOS имеют более или менее одинаковую командную строку. Вы можете использовать что-то вроде «watch -n 1» dmesg | хвост -n 60””.
часы не установлены в iOS или Mac по умолчанию: / может быть, кто-то упаковал их для iOS, или я думаю, что мне придется испечь свой собственный
Он определенно установлен по умолчанию в macOS.
и я бы согласился с вами вчера, но which watchничего не получается на iOS 11.3.1 и macOS 10.13.6, Xcode 9 и/или Server 5.4 установлены или не установлены. Не уверен, что он перестал быть включен в какой-то момент, я не могу вспомнить, чтобы использовать его на Mac сейчас, когда я думаю об этом.
Ах, да, ты прав. Я использовал 10.12 до недавнего времени, поэтому я не обнаружил, что он на самом деле не включен в 10.13. Но по крайней мере до 10.12 он включен в macOS. Вы можете установить его из доморощенного на 10.13, скомпилировать самостоятельно или просто «сделать свой собственный».
Т.е. вы могли бы определить функцию в bash следующим образом: "mywatch() { while true; do clear; date; ${1}; sleep 1; done; }". Запустите его как «mywatch dmesg». Он будет каждую секунду очищать терминал, показывать текущую дату/время, а затем запускать указанную вами команду. Вы можете расширить это, чтобы сделать настраиваемые интервалы сна и т. д.
Подождите, что, если вы пишете драйверы, то не имеет значения, что они оба для Darwin ARM и Intel — это совершенно разные драйверы, не так ли? Я имею в виду, я думаю, что теперь Mac также являются ARM.
@ kumowoon1025 Я не могу понять, о чем ты спрашиваешь? Однако могу сказать, что драйверы не обязательно должны быть отдельными для ARM и Intel — это может быть один и тот же драйвер. В современных macOS обычно используется один и тот же драйвер.
о, да, из-за этой странной эмуляции, такой как rosetta. Но обычно вам нужно писать отдельные драйверы для отдельной архитектуры. Я имел в виду, что хотя и iOS, и macOS работают поверх Darwin, если вы пишете драйверы устройств, вам нужно писать их отдельно для Intel и Arm. Или вы делаете, если хотите улучшить совместимость и производительность, не используя rosetta.
Нет, Розетта тут ни при чем. И нет, их не нужно писать отдельно для ARM и Intel.

Я видел эту проблему, и решение заключается в том, чтобы подключить питание перед подключением телефона или USB-устройства. Да, и блок питания должен быть рассчитан не менее чем на 12 Вт. Концентратор с питанием мог бы помочь, но, насколько я помню, этого было недостаточно.

Ваши комментарии указывают на то, что вы пытались подключать элементы в другом порядке, но не упомянули выходную мощность блока питания. Я видел такое поведение с источником питания 5 Вт, но не с источником питания 12 Вт. Если у вас есть что-то более мощное, чем 12 Вт, я рекомендую вам использовать его.

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

Правда, я не помню мощность кирпича, я предполагаю, что он был маленьким, потому что, знаете ли, это была чертова клавиатура.