DisplayPort: tocando no Altmode

Notícias

LarLar / Notícias / DisplayPort: tocando no Altmode

Apr 16, 2024

DisplayPort: tocando no Altmode

Na verdade, a implementação mais moderna do DisplayPort é o altmode USB-C DisplayPort, sinônimo de “vídeo sobre USB-C”, e perderíamos se eu o ignorasse. Aliás, nossos dois últimos artigos

Na verdade, a implementação mais moderna do DisplayPort é o altmode USB-C DisplayPort, sinônimo de “vídeo sobre USB-C”, e perderíamos se eu o ignorasse. Aliás, nossos dois últimos artigos sobre USB-PD deram a algumas pessoas um novo brinquedo legal para brincar – as pessoas comentaram os artigos, me procuraram para obter ajuda na depuração e até vi pessoas construindo o FUSB302B em seus projetos! Logo após essa conquista, vamos ir mais longe e conquistar mais um recurso USB-C – um que ainda não está abertamente disponível para hackearmos, embora mereça estar.

Para os nossos leitores de longa data, não é nenhuma surpresa ver capacidades mundanas negadas aos hackers. Até agora, todos nós sabemos que muitos laptops e telefones permitem obter uma conexão DisplayPort de uma porta USB-C. Dado que as especificações USB-C estão disponíveis abertamente e já implementamos um coletor PD usando essas especificações, seria de esperar que pudéssemos fazer o DisplayPort com a mesma facilidade. No entanto, a especificação Altmode DisplayPort está por trás de um acesso pago para membros VESA, com um preço elevado – uma prática deles que tem sido amplamente criticada, contrária ao seu propósito como organização de padrões e que resultou na falha de alguns de seus padrões.

Não se preocupe, entretanto – podemos encontrar facilmente uma variedade de PDFs que fornecem uma visão geral de alto nível e alguns detalhes do modo alternativo DisplayPort, e aqui está o meu favorito! Também tenho um dispositivo executando MicroPython com um chip FUSB302 conectado e alguns dispositivos DisplayPort altmode meus que posso desmontar. Acontece que isso é mais do que suficiente para fazermos engenharia reversa e chegarmos a uma biblioteca DisplayPort altmode de código aberto!

A porta USB-C possui quatro pares de alta velocidade e um par auxiliar de baixa velocidade (SBU). Isso mapeia perfeitamente os requisitos do DisplayPort, com até quatro pares de transferência de dados de alta velocidade e um canal de configuração AUX. Uma pequena peculiaridade – não há pino para o sinal HPD; em vez disso, seu status é encaminhado dentro das mensagens de modo alt do DisplayPort através do canal PD. Como resultado, você pode conectar seu dispositivo a um USB-C compatível com DisplayPort, escrever algumas palavras mágicas em PD e obter um sinal DisplayPort nos pinos TX/RX USB-C! Não há necessidade de se aprofundar nos detalhes internos do DisplayPort; o máximo que você precisa é encaminhar o HPD como uma mensagem PD e, se o seu dispositivo usar um soquete USB-C, peça a um mux barato para inverter os sinais de acordo com a forma como o cabo USB-C está conectado.

Além do DisplayPort, você também obtém USB 2.0 nos bons e velhos pinos USB2 – perfeito para conectar um teclado e mouse ao lado do monitor. No entanto, isso não é tudo que você pode extrair – se estiver satisfeito com DisplayPort de duas pistas, você pode solicitar ao dispositivo upstream que forneça duas pistas de DisplayPort em um par de pinos e uma porta USB3 em outro! É assim que a maioria dos docks USB-C baratos funcionam – eles têm duas pistas de DisplayPort usadas para VGA ou HDMI, USB3 para uma porta de alta velocidade ou alguns periféricos e USB2 para um monte de outras coisas, controlando sua energia entrada ao lado.

A julgar pelo PDF que temos da ST, existem sete tipos de mensagens PD que precisamos responder se quisermos construir um dispositivo DisplayPort – o diagrama na página 13 mostra todos eles. No artigo “Tudo sobre USB-C: respondendo ao PD de baixo nível”, aprendemos dois tipos de mensagens – Source_Capabilities, que é um anúncio de perfil de energia da fonte de alimentação USB-C, e a mensagem de solicitação, que criamos para obter um desses perfis de energia e obtenha uma voltagem mais alta de uma porta USB-C. Das duas às sete – isso está bem ao nosso alcance!

O que precisamos fazer para fazer engenharia reversa, no mínimo? Eu diria que o PDF parece conter informações mais do que suficientes por si só – o fluxo de comunicação, diferentes códigos de comando e conteúdos estão descritos lá. No entanto, será muito mais confortável se quisermos ter capturas de pacotes para referência!

A detecção de comunicações USB-C é um campo pouco explorado – especialmente se estiverem envolvidos sinais de alta velocidade. Para esses, você precisa de uma placa intermediária que preserve a integridade do sinal e, ao mesmo tempo, permita que você conecte os pinos CC, e esses não custam nem um centavo. Quando se trata de ferramentas comerciais para detecção de USB-C, sinto que a maioria delas tem um preço que leva em conta o fato de que muitas pessoas não entendem o USB-C. No entanto, certamente há maneiras de contornar isso - na seção de comentários do primeiro artigo de conversação sobre PD, [WF] nos indicou uma maneira de detectar pacotes USB-C arbitrários com um analisador lógico e um circuito extra simples, com a ajuda de sigrok e Visão de pulso! Estamos criando um dispositivo que pode falar no modo alternativo DisplayPort, não apenas cheirá-lo, mas se você quiser acessar um dispositivo seu conforme segue este artigo, isso deve ser suficiente.