DisplayPort: нажатие альтернативного режима

Новости

ДомДом / Новости / DisplayPort: нажатие альтернативного режима

Mar 15, 2024

DisplayPort: нажатие альтернативного режима

На самом деле, самой современной реализацией DisplayPort является альтернативный режим USB-C DisplayPort, синоним слова «видео через USB-C», и мы бы его упустили, если бы пропустили его. Кстати, две наши последние статьи

На самом деле, самой современной реализацией DisplayPort является альтернативный режим USB-C DisplayPort, синоним слова «видео через USB-C», и мы бы его упустили, если бы пропустили его. Между прочим, наши последние две статьи о USB-PD дали нескольким людям классную новую игрушку — люди комментировали статьи, обращались ко мне за помощью в отладке, и я даже видел, как люди встраивали FUSB302B в свои проекты! Идя по пятам этого достижения, давайте пойдем дальше и освоим еще одну функцию USB-C – ту, которая еще не доступна для взлома в открытом доступе, хотя она того и заслуживает.

Для наших давних читателей неудивительно, что хакерам отказывают в повседневных возможностях. К настоящему времени мы все знаем, что многие ноутбуки и телефоны позволяют подключаться к DisplayPort через порт USB-C. Учитывая, что спецификации USB-C общедоступны и ранее мы реализовали приемник PD, используя эти спецификации, можно ожидать, что мы сможем реализовать DisplayPort с такой же легкостью. Тем не менее, спецификация альтернативного режима DisplayPort стоит за платным доступом для членов VESA и имеет огромную цену – их практика, которая подверглась широкой критике, противоречит их целям как организации по стандартизации и привела к провалу некоторых из их стандартов.

Однако не волнуйтесь — мы легко можем найти множество PDF-файлов с общим обзором и некоторыми подробностями альтернативного режима DisplayPort, и вот мой любимый! У меня также есть устройство под управлением MicroPython с подключенным чипом FUSB302 и несколько моих устройств с альтернативным режимом DisplayPort, которые я могу разобрать. Оказывается, этого более чем достаточно для того, чтобы провести реверс-инжиниринг и создать альтернативную библиотеку DisplayPort с открытым исходным кодом!

Порт USB-C имеет четыре высокоскоростные пары и одну вспомогательную низкоскоростную пару (SBU). Это прекрасно соответствует требованиям DisplayPort: до четырех пар высокоскоростной передачи данных и один канал конфигурации AUX. Одна маленькая странность – здесь нет контакта для сигнала HPD; вместо этого его статус пересылается внутри сообщений альтернативного режима DisplayPort по каналу PD. В результате вы можете подключить свое устройство к USB-C с поддержкой DisplayPort, написать несколько волшебных слов через PD и получить сигнал DisplayPort на контактах USB-C TX/RX! Нет необходимости вникать во внутренности DisplayPort; Максимум, что вам понадобится, — это переслать HPD как сообщение PD, а если ваше устройство использует разъем USB-C, используйте дешевый мультиплексор, переворачивающий сигналы в соответствии со способом подключения кабеля USB-C.

Помимо DisplayPort, вы также получаете USB 2.0 на старых добрых контактах USB2 — идеально подходит для подключения клавиатуры и мыши рядом с монитором. Однако это еще не все, что вы можете извлечь — если вас устраивает двухполосный DisplayPort, вы можете попросить вышестоящее устройство предоставить вам две линии DisplayPort на одной паре контактов и порт USB3 на другой! Именно так работают большинство дешевых док-станций USB-C: они имеют две линии DisplayPort, используемые для VGA или HDMI, USB3 для высокоскоростного порта или нескольких периферийных устройств и USB2 для целой кучи других устройств, управляющих питанием. вход сбоку.

Судя по PDF-файлу, который мы получили от ST, существует семь типов PD-сообщений, на которые нам нужно отвечать, если мы хотим создать устройство DisplayPort — на схеме на странице 13 показаны они все. В статье «Все о USB-C: ответ на низкоуровневый PD» мы узнали два типа сообщений — Source_Capabilities, которое представляет собой рекламу профиля мощности блока питания USB-C, и сообщение запроса, которое мы создали для получения один из этих профилей мощности и получить более высокое напряжение от порта USB-C. От двух до семи – это вполне по силам!

Что нам нужно сделать, чтобы провести его реверс-инжиниринг, как минимум? Я бы сказал, что PDF-файл сам по себе содержит более чем достаточно информации – там описан поток связи, различные коды команд и содержимое. Однако было бы гораздо удобнее, если бы у нас были перехваченные пакеты, на которые можно было бы ссылаться!

Перехват коммуникаций USB-C — недостаточно изученная область, особенно если речь идет о высокоскоростных сигналах. Для этого вам понадобится плата-переходник, которая сохраняет целостность сигнала, позволяя при этом подключаться к контактам CC, а их не так уж и пруд пруди. Когда дело доходит до коммерческих инструментов для перехвата USB-C, мне кажется, что цена большинства из них указана с учетом того факта, что многие люди не понимают USB-C. Однако, безусловно, есть способы обойти это - в разделе комментариев к первой статье о PD [WF] указал нам на способ перехвата произвольных пакетов USB-C с помощью логического анализатора и простой дополнительной схемы с помощью sigrok и Пульсвью! Мы создаем устройство, которое может использовать альтернативный режим DisplayPort, а не просто прослушивать его, но если вы хотите подключиться к своему устройству, следуя этой статье, этого должно быть достаточно.