DisplayPort: toccando la modalità Alt

Notizia

CasaCasa / Notizia / DisplayPort: toccando la modalità Alt

Apr 16, 2024

DisplayPort: toccando la modalità Alt

In realtà, l'implementazione più moderna di DisplayPort è la modalità altmode USB-C DisplayPort, sinonimo di "video su USB-C", e ci perderemmo qualcosa se la saltassi. Per inciso, i nostri ultimi due articoli

In realtà, l'implementazione più moderna di DisplayPort è la modalità altmode USB-C DisplayPort, sinonimo di "video su USB-C", e ci perderemmo se la saltassi. Per inciso, i nostri ultimi due articoli sulla comunicazione USB-PD hanno dato ad alcune persone un nuovo fantastico giocattolo con cui giocare: le persone hanno commentato gli articoli, mi hanno contattato per chiedere aiuto per il debug e ho persino visto persone costruire il FUSB302B in i loro progetti! Sulla scia di questo risultato, andiamo oltre e conquistiamo un'altra funzionalità USB-C, una che non è ancora apertamente disponibile per essere modificata, anche se merita di esserlo.

Per i nostri lettori di lunga data, non è una sorpresa vedere capacità banali negate agli hacker. Ormai sappiamo tutti che molti laptop e telefoni consentono di ottenere una connessione DisplayPort da una porta USB-C. Dato che le specifiche USB-C sono liberamente disponibili e abbiamo precedentemente implementato un sink PD utilizzando tali specifiche, ti aspetteresti di poter realizzare DisplayPort con la stessa facilità. Tuttavia, la specifica DisplayPort altmode è dietro un paywall per l'adesione VESA, con un prezzo elevato: una loro pratica che è stata ampiamente criticata, contraria al loro scopo di organizzazione di standard e che ha portato al fallimento di alcuni dei loro standard.

Non preoccuparti, tuttavia: possiamo facilmente trovare un assortimento di PDF che forniscono una panoramica di alto livello e alcuni dettagli della modalità altmode DisplayPort, ed ecco il mio preferito! Ho anche un dispositivo che esegue MicroPython con un chip FUSB302 collegato e alcuni miei dispositivi DisplayPort altmode che posso smontare. Questo, a quanto pare, è più che sufficiente per consentirci di effettuare il reverse engineering verso una libreria DisplayPort altmode open source!

La porta USB-C ha quattro coppie ad alta velocità e una coppia ausiliaria a bassa velocità (SBU). Ciò si adatta perfettamente ai requisiti DisplayPort, con un massimo di quattro coppie di trasferimento dati ad alta velocità e un canale di configurazione AUX. Un piccolo inconveniente: non esiste un pin per il segnale HPD; invece, il suo stato viene inoltrato all'interno dei messaggi altmode DisplayPort sul canale PD. Di conseguenza, puoi collegare il tuo dispositivo a una porta USB-C compatibile con DisplayPort, scrivere alcune parole magiche su PD e ottenere un segnale DisplayPort sui pin TX/RX USB-C! Non è necessario approfondire in alcun modo gli interni di DisplayPort; il massimo di cui avrai bisogno è inoltrare HPD come messaggio PD e, se il tuo dispositivo utilizza una presa USB-C, procurati un mux economico che inverta i segnali in base al modo in cui è collegato il cavo USB-C.

Oltre a DisplayPort, ottieni anche USB 2.0 sui buoni vecchi pin USB2, perfetti per collegare una tastiera e un mouse insieme al monitor. Tuttavia, non è tutto ciò che puoi estrarre: se ti accontenti di DisplayPort a due corsie, puoi chiedere al dispositivo upstream di fornirti due corsie di DisplayPort su una coppia di pin e una porta USB3 su un altro! Questo è il modo in cui funziona la maggior parte dei dock USB-C economici: dispongono di due corsie DisplayPort utilizzate per VGA o HDMI, USB3 per una porta ad alta velocità o alcune periferiche e USB2 per un sacco di altre cose, gestendo la tua alimentazione. ingresso sul lato.

A giudicare dal PDF che abbiamo dalla ST, ci sono sette tipi di messaggi PD a cui dobbiamo rispondere se vogliamo costruire un dispositivo DisplayPort: il diagramma a pagina 13 li mostra tutti. Nell'articolo "Tutto su USB-C: risposta al PD di basso livello", abbiamo appreso due tipi di messaggi: Source_Capabilities, che è un annuncio del profilo di alimentazione dell'alimentatore USB-C, e il messaggio Request, che abbiamo creato per ottenere uno di quei profili di potenza e ottieni una tensione più elevata da una porta USB-C. Da due a sette: questo è alla nostra portata!

Cosa dobbiamo fare per decodificarlo, come minimo? Direi che il PDF sembra contenere da solo informazioni più che sufficienti: lì sono descritti il ​​flusso di comunicazione, i diversi codici di comando e i contenuti. Tuttavia, sarebbe molto più comodo se dovessimo avere acquisizioni di pacchetti a cui fare riferimento!

Lo sniffing delle comunicazioni USB-C è un campo sottoesplorato, soprattutto se sono coinvolti segnali ad alta velocità. Per questi, hai bisogno di una scheda interposer che preservi l'integrità del segnale permettendoti allo stesso tempo di attingere ai pin CC, e quelli non sono proprio una dozzina. Quando si tratta di strumenti commerciali per lo sniffing di USB-C, sento che la maggior parte di questi hanno un prezzo che tiene conto del fatto che molte persone non capiscono USB-C. Tuttavia, ci sono sicuramente dei modi per aggirare il problema: nella sezione commenti del primo articolo parlante del PD, [WF] ci ha indicato un modo per annusare pacchetti USB-C arbitrari con un analizzatore logico e un semplice circuito aggiuntivo, con l'aiuto di sigrok e Visualizzazione pulsata! Stiamo realizzando un dispositivo in grado di comunicare con la modalità alternativa DisplayPort, non solo di annusarlo, ma se desideri accedere a un tuo dispositivo mentre segui questo articolo, questo dovrebbe essere sufficiente.