Apr 16, 2024
DisplayPort : appuyer sur le mode Alt
En réalité, l'implémentation la plus moderne de DisplayPort est l'altmode USB-C DisplayPort, synonyme de « vidéo sur USB-C », et nous manquerions quelque chose si je devais l'ignorer. D'ailleurs, nos deux derniers articles
En réalité, l'implémentation la plus moderne de DisplayPort est l'altmode USB-C DisplayPort, synonyme de « vidéo sur USB-C », et nous manquerions quelque chose si je devais l'ignorer. À propos, nos deux derniers articles sur l'USB-PD ont donné à quelques personnes un nouveau jouet sympa avec lequel jouer : des gens ont commenté les articles, m'ont contacté pour obtenir de l'aide au débogage, et j'ai même vu des gens intégrer le FUSB302B dans leurs projets ! Dans la foulée de cette réussite, allons plus loin et conquérons une autre fonctionnalité USB-C – une fonctionnalité qui n’est pas encore ouvertement disponible pour que nous puissions la pirater, même si elle mérite de l’être.
Pour nos lecteurs de longue date, il n’est pas surprenant de voir des capacités banales refusées aux pirates. Nous savons tous désormais que de nombreux ordinateurs portables et téléphones vous permettent d’obtenir une connexion DisplayPort à partir d’un port USB-C. Étant donné que les spécifications USB-C sont librement disponibles et que nous avons déjà implémenté un récepteur PD utilisant ces spécifications, on pourrait s'attendre à ce que nous puissions faire du DisplayPort avec la même facilité. Pourtant, la spécification DisplayPort altmode est derrière un mur payant d’adhésion VESA, avec un prix élevé – une de leurs pratiques qui a été largement critiquée, contraire à leur objectif en tant qu’organisation de normalisation et ayant entraîné l’échec de certaines de leurs normes.
Ne vous inquiétez pas, cependant, nous pouvons facilement trouver un assortiment de fichiers PDF donnant un aperçu de haut niveau et quelques détails du mode alternatif DisplayPort, et voici mon préféré ! J'ai également un appareil exécutant MicroPython avec une puce FUSB302 connectée, et quelques-uns de mes appareils DisplayPort altmode que je peux démonter. Il s’avère que cela est plus que suffisant pour que nous puissions faire de la rétro-ingénierie vers une bibliothèque open source DisplayPort altmode !
Le port USB-C comporte quatre paires haute vitesse et une paire auxiliaire basse vitesse (SBU). Cela correspond parfaitement aux exigences DisplayPort, avec jusqu'à quatre paires de transfert de données à haut débit et un canal de configuration AUX. Une petite bizarrerie : il n'y a pas de broche pour le signal HPD ; au lieu de cela, son état est transmis dans les messages DisplayPort altmode sur le canal PD. En conséquence, vous pouvez brancher votre appareil sur un USB-C compatible DisplayPort, écrire quelques mots magiques sur PD et obtenir un signal DisplayPort sur les broches USB-C TX/RX ! Pas besoin de se plonger dans les composants internes de DisplayPort ; tout ce dont vous aurez besoin est de transmettre HPD sous forme de message PD, et si votre appareil utilise une prise USB-C, demandez à un multiplexeur bon marché d'inverser les signaux en fonction de la façon dont votre câble USB-C est branché.
Outre DisplayPort, vous bénéficiez également de l’USB 2.0 sur les bonnes vieilles broches USB2 – parfait pour brancher un clavier et une souris à côté de votre moniteur. Cependant, ce n'est pas tout ce que vous pouvez extraire : si vous vous contentez du DisplayPort à deux voies, vous pouvez demander au périphérique en amont de vous fournir deux voies de DisplayPort sur une paire de broches et un port USB3 sur une autre ! C'est ainsi que fonctionnent la majorité des stations d'accueil USB-C bon marché : elles disposent de deux voies DisplayPort utilisées pour VGA ou HDMI, USB3 pour un port haut débit ou quelques périphériques, et USB2 pour tout un tas d'autres choses, gérant votre alimentation. entrée sur le côté.
À en juger par le PDF que nous avons de ST, il existe sept types de messages PD auxquels nous devons répondre si nous voulons construire un périphérique DisplayPort – le diagramme de la page 13 les montre tous. Dans l'article « Tout sur l'USB-C : réponse aux PD de bas niveau », nous avons découvert deux types de messages : Source_Capabilities, qui est une publicité de profil d'alimentation du bloc d'alimentation USB-C, et le message de demande, que nous avons conçu pour obtenir l'un de ces profils de puissance et obtenez une tension plus élevée d'un port USB-C. De deux à sept heures, c'est tout à fait à notre portée !
Que devons-nous faire pour procéder à une rétro-ingénierie, au strict minimum ? Je dirais que le PDF semble contenir plus qu'assez d'informations à lui seul – le flux de communication, les différents codes de commande et le contenu y sont décrits. Cependant, ce sera bien plus confortable si nous voulons avoir des captures de paquets à référencer !
Le reniflage des communications USB-C est un domaine sous-exploré, surtout si des signaux à haut débit sont impliqués. Pour ceux-là, vous avez besoin d'une carte intercalaire qui préserve l'intégrité du signal tout en vous permettant d'exploiter les broches CC, et celles-ci ne sont pas vraiment une douzaine. En ce qui concerne les outils commerciaux pour le reniflage USB-C, j’ai l’impression que le prix de la plupart d’entre eux tient compte du fait que de nombreuses personnes ne comprennent pas l’USB-C. Cependant, il existe certainement des moyens de contourner ce problème : dans la section commentaires du premier article parlant de PD, [WF] nous a indiqué un moyen de détecter les paquets USB-C arbitraires avec un analyseur logique et un simple circuit supplémentaire, avec l'aide de sigrok et Vue pulsée ! Nous créons un appareil capable de parler du mode alternatif DisplayPort, pas seulement de le renifler, mais si vous souhaitez accéder à un de vos appareils en suivant cet article, cela devrait suffire.