Давайте будем откровенны — одних только кабелей USB-C — USB-C недостаточно. Существует и много других видов, которые могут потребоваться в повседневной жизни, пока в нашем обиходе присутствуют устройства без разъёма USB-C. Однако в спецификации учитываются далеко не все типы кабелей, которые мы можем захотеть купить или собрать самостоятельно.
Лично я считаю, что как у хакера у вас должна быть возможность приобрести любую необходимую приспособу со стандартом подключения USB-C. Хакерам не нужны ограничения, обуславливаемые маркетингом, — им необходимо понимать, как можно или нельзя применить тот или иной девайс, исходя из его внутреннего устройства. И я хочу поделиться с вами таким пониманием, чтобы вы могли принимать осмысленные решения.
С другой стороны, USB-C создан для использования не умудрёнными опытом людьми, хотя и в этом плане у данного стандарта есть пробелы. Здесь нам поможет ясность определения того, что соответствует стандарту. Вот известная история о кабеле USB-C, который убил Chromebook и подтолкнул Бенсона Люна к запуску онлайн-блога с рекомендациями относительно USB-C. На деле существует множество подобных печальных историй.
Сегодня же мы разберём виды кабелей USB-C, которые в зависимости от своего использования могут как выполнить свою роль, так и подвести вас.
Прим. пер.: эта статья является логическим продолжением предыдущей публикации «Подробно о типах кабелей USB-C».
▍ Удлинители — принять или истребить?
Удлинители кабелей USB-C не соответствуют спецификации. Или соответствуют? Доставляют ли они проблемы на практике, несмотря на своё несоответствие? Разберём один плохой пример.
Предположим, вы захотели подключить удлинитель к порту питания на Raspberry Pi 4.
Вот вариант с Type-C, который удлиняет VBUS и линии данных USB 2.0, но не выводы CC. Если использовать его с Raspberry Pi 4, то установленный на порту малинки резистор 5.1 кОм окажется для стороны «мама» удлинителя недоступен, и БП уже не сможет подать на Pi питание. Естественно, это не касается фирменного блока питания Raspberry Pi, который присутствие резистора обнаруживать не может. Конечно, так он нарушает спецификацию Type-C, но при этом подходит в качестве кабеля USB-A — USB-C для всех задач, что делает это нарушение не столь значительным.
А что, если в удлинителе для вывода CC будет использована отдельная жила? Это вполне возможно, и в некоторых кабелях так и есть. К сожалению, это означает, что они могут работать только в одном направлении, и при соединении кабеля с таким удлинителем вам может потребоваться его перевернуть. Это вдвойне актуально в случае соединителей F-F типа — с ними вам придётся разворачивать кабель в половине случаев, чтобы соединение сработало.
А что насчёт удлинения обоих выводов CC, каждого с помощью отдельной жилы? Это рабочее решение, и такие варианты тоже продаются. В действительности именно так работают карты расширения USB-C на ноутбуках Framework — поскольку разъём таких карт выполнен по стандарту USB-C, они выступают в качестве удлинителя, соединяющего выводы один к одному. Есть ли здесь отличие от удлинительных кабелей? Да.
▍ Сгодится? Не совсем
В чём кроется проблема с удлинителями? Во-первых, сложность в том, что такие кабели не соответствуют спецификации, и ввиду нежелания отступать от группы стандартов USB наиболее надёжные производители их не выпускают. В результате нам приходится рассчитывать лишь на ненадёжных вендоров с невысоким контролем качества на производстве. Учитывая все задачи, для которых мы используем USB-C, это может довольно быстро привести к проблемам. Но что мешает производить эти кабели в соответствии со спецификацией?
Карта расширения ноутбука Framework со снятой крышкой
Предположим, у вас есть «проводящий все выводы» удлинитель USB-C, поддерживающий не более 3 А. Если вы попытаетесь зарядить устройство мощностью 100 Вт с помощью БП на 5 А и кабеля, подключённого через такой удлинитель, то БП передаст свои 5 А, но вы можете столкнуться с опасной ситуацией, когда изоляция кабеля начнёт плавиться. С другой стороны, насколько я знаю, Raspberry Pi 4 никогда не потребит более 3 А тока, так что в этом случае всё может обойтись, но риск остаётся за вами.
В случае же высокоскоростных сигналов существует уже большее число подвохов. Кабели USB-C по умолчанию должны собираться в соответствии с определённым стандартом, чтобы подходить для скоростей в 40 Гб/с, не ограничиваясь 20 Гб/с. При использовании удлинителей для таких кабелей вы можете столкнуться с тем, что подключаемое устройство начнёт глючить, постоянно отключаясь и переподключаясь.
Спецификация USB-C, вероятно, могла бы решить эти проблемы с помощью дополнительной логики E-marker, которая бы позволила удлинителям USB-C мирно сосуществовать с остальными кабелями, но разработчики решили не заморачиваться. Карты расширения для ноутбуков Framework никого не волнуют, поскольку в рамках своего использования их работоспособность проверена, и никаких проблем с передачей сигнала не возникает. А должна ли у вас, как у хакера, быть возможность при желании купить удлинитель USB-C? Ответ «да». Далее мы разберём ещё некоторые возможные подвохи при использовании кабелей.
▍ Кабели с блокировкой передачи данных
Вы можете подумать, что здесь установлены различные резисторы, а на деле столкнуться с различными эксплоитами
У каждого кабеля должна быть как минимум пара USB 2.0. Однако, насмотревшись на вредоносные USB-зарядки, кабели и просто эксплоиты, способные взломать ваш телефон при подключении к ПК, можно представить себе ситуации, когда наличие такой пары нежелательно. Вы можете приобрести на AlịExpress кабель «data isolator», но здесь нужно понимать проблемы подобных кабелей, чтобы выбирать их сознательно.
При подключении к порту USB-A единственный способ согласовать характеристики потребляемого тока (в частности его силу и иногда напряжение) — это использовать линии данных. Такие зарядные кабели созданы с учётом этого, и в них линии данных замкнуты, сигнализируя устройству, что оно может получить до 1,5 А. Однако, поскольку линии данных от порта зарядного устройства отсоединены, телефон не знает, действительно ли зарядка замыкает эти линии, сигнализируя о возможности передачи 1,5 А. Подавляющее большинство портов способны обеспечивать 1,5 А, что относится к ноутбукам и зарядным устройствам. Некоторые совсем старые порты (или порты USB-OTG смартфонов) обеспечивают только 500 мА, и в некоторых из них даже нет защиты от превышения тока, которую требует стандарт USB.
Это очень редкие случаи, но всё же данная проблема расстраивает людей, когда дело касается кабелей с блокировкой передачи данных. Некоторые зарядки проектируются без учёта согласования, но в некоторые эта функциональность заложена. В результате мы имеем забавные ситуации, когда, например, контроллеры Sony PlayStation не заряжаются от определённых зарядных устройств.
Не знаю как вам, но мне предельно ясно, что ограничение USB-C относительно кабелей с блокировкой передачи данных является заговором всех разведывательных служб мира, и мы просто обязаны противостоять им, всё равно покупая такие кабели. Если же говорить серьёзно, то порты с поддержкой всего 500 мА встречаются очень редко, тем более без защиты от превышения силы тока, и вы можете сознательно избежать возможных проблем с ними, используя подобный кабель с блокировкой.
Кстати, если ваш блокирующий кабель содержит линию CC (а он должен, если вам нужна передача данных), помните, что множество микросхем контроллеров USB-C позволяют обновлять прошивку через соединение CC, не отличаясь в этом плане особой безопасностью. То есть, если вы хотите защититься, то лучше будет говорить потише и таскать с собой мощный пауэрбанк.
▍ Переходники с USB-C на любой USB
Как правило, большинство переходников с разъёмом USB-C «мама» стандарту не соответствуют. Это не остановит меня от создания кучи подобных кабелей для своих друзей, равно как не должно остановить вас. Опять же — что конкретно ставит такие переходники вне стандарта?
Выше вы видите пассивный переходник USB-A «папа» — USB-C «мама», который я регулярно использовал, когда единственный USB-C порт моего ноутбука умер, а мне требовалось продолжать подключать к нему устройства с USB-C. Сегодня я использую этот переходник для зарядки девайсов USB-C от пауэрбанка с USB-A. В таких кабелях обычно реализован стандарт передачи USB 2.0, поскольку для обработки двухсторонней передачи высокоскоростного сигнала в USB-C требуется активная электроника. Если вам вдруг попадётся такой переходник, действительно функционирующий с USB 3.0, то бьюсь об заклад, эту возможность он обеспечит только при подключении штекера USB-C в определённом направлении — при подключении в обратном он однозначно будет работать на скоростях 2.0.
Из двух таких переходников и кабеля USB-C — USB-C или одного переходника и кабеля USB-A – USB-C можно собрать кабель USB-A — USB-A «папа» — «папа». Вам вряд ли это потребуется, но теоретически такое возможно, и группу разработчиков USB-C данная возможность не радует. Если соединить два устройства кабелем USB-A — USB-A, между их источниками питания 5 В может возникнуть «столкновение тока», ведущее к непредсказуемым последствиям — источники питания с переключением режима не любят таких манипуляций, и установленные в их портах микросхемы защиты могут с подобным нюансом не справиться.
И проблема не в том, что кабель USB-A — USB-A соберёт хакер и в итоге спалит им свой ноутбук. Дело в том, что это может сделать не особо опытный пользователь. Вынесение таких переходников за рамки стандарта отталкивает всех, кто хотел бы собирать их, особенно крупных производителей. Кстати, в переходнике, который я показал, также есть посадочные места для подтягивающих резисторов на стороне источника питания, но самих резисторов, конечно, там нет. Это довольно грубый технический ход, хотя сам переходник очень полезен.
▍ Переходники с круглого разъёма на USB-C
Иногда можно встретить в продаже переходники с круглого разъёма «мама» на USB-C. Я не говорю о триггерных платах, в которые вы подключаете БП с USB-C, получая высокое напряжение через круглый штекер. Я имею в виду переходники, через которые вы соединяете БП с круглым разъёмом и устройство с USB-C. Очевидно, что речь здесь ни о какой защите не идёт, и я даже не заикаюсь о резисторах.
При использовании с БП 5 В такой переходник равнозначен кабелю USB-A — USB-C. Но нельзя гарантировать, что он будет использоваться только с БП на 5 В. Хакер, конечно, может никогда не подключать с его помощью ничего с напряжением выше 5 В. Но в случае среднестатистического пользователя такое вполне может случиться, и человек просто спалит своё устройство. Что уж говорить, даже хакер может по запамятству допустить подобную ошибку.
При этом не все устройства требуют согласования перед получением через свой порт USB-C тока с высоким напряжением. В качестве примера можно привести паяльник Pinecil. Я специально собрал переходник с круглого разъёма на разъём Type-C «мама», чтобы можно было соединять мой Pinecil и БП 20 В крутыми силиконовыми кабелями.
Если вдруг вы через подобный переходник подключите к ноутбуку блок питания 20 В, то бук, скорее всего, умрёт. Известно немало случаев с ноутбуками, которые скончались именно в таких обстоятельствах. Хотя иногда в портах USB-C присутствует защита от подобных эксцессов, поскольку некоторые ранние БП с USB-C могли к ним приводить сами по себе просто из-за того, что не переключали режим обратно и подавали ток с напряжением 20 В следующему подключённому устройству.
Пока что я написал «DO NOT» на штекерах кабеля, который использую для этого переходника, чтобы никогда не подключать его куда-либо ещё. Если вы предполагали, что я мог бы придумать что-нибудь получше, то у меня действительно есть идея. Существуют, вроде бы, годные переходники вроде этого, которые, как заявлено, созданы для использования с ноутбуками. На AliExpress их можно найти по ключевой фразе «USB PD Step Down». Они поддерживают не более 60 Вт, но при этом реализуют согласование. И если на деле окажется, что такие переходники допустят подъём напряжения до 20 В только после согласования, то их можно смело использовать для зарядки ноутбука с USB-C от блока питания с круглым разъёмом. Я также планирую собрать собственный переходник, который будет выполнять согласование и, возможно, даже поддерживать 100 Вт. Честно говоря, у меня тут лежит много БП на 20 В, и мне хочется найти им удачное применение.
▍ Палка о двух концах
По теме соответствия стандартам USB-C можно сказать гораздо больше. Меня бы не удивило, если бы почтенные триггерные платы с Type-C оказались несоответствующими из-за того, что триггерная микросхема не обеспечивает некий вид сигнализирования. Тем не менее мы как хакеры используем их очень активно и будем использовать ещё больше. Несоответствие стандарту не мешает нам наслаждаться сборкой крутых штуковин с USB-C.
Несоответствие стандарту USB заставит вас постоянно быть начеку
Иногда звучат заявления, что площадки вроде Amazon должны снять с прилавков электронику, не соответствующую стандартам. Соглашусь, что кабель-убийца Chromebook продаваться не должен, так как под безобидным видом скрывает в себе опасную конструкцию. А вот скромный переходник USB-A — USB-C «папа»-«мама» определённо следует оставить несмотря на то, что в гипермаркетах ему явно не место.
А у вас есть любимое устройство, не соответствующее стандартам?
Автор: Дмитрий Брайт