Jun 11, 2023
DisplayPort : apprivoiser l'Altmode
Le mode alternatif DisplayPort est semi-propriétaire, mais il peut tout à fait être démonté si nous essayons. La dernière fois, nous avons trouvé une note d'application intéressante décrivant en détail le mode alternatif DisplayPort, basculant le FUSB302 en
Le mode alternatif DisplayPort est semi-propriétaire, mais il peut tout à fait être démonté si nous essayons. La dernière fois, nous avons trouvé une note intéressante décrivant le mode alternatif DisplayPort en détail, basculé le FUSB302 en mode de détection de paquets et obtenu des captures de paquets, découvert les PD VDM (messages définis par le fournisseur) et relu avec succès les messages capturés pour changer de USB-C. port en mode alternatif DisplayPort. Aujourd'hui, nous allons passer en revue les sept messages qui invoquent le mode alternatif DisplayPort, les implémenter et les lier tous dans une bibliothèque – puis déterminer le matériel dont nous avons besoin pour que DisplayPort fonctionne dans la nature.
Pour commencer, comme vous l’avez peut-être vu sur le diagramme, une seule commande peut être soit une demande, soit une réponse. Par exemple, si vous recevez une demande Discover Identity REQ, vous y répondez avec un Discover Identity ACK (réponse), en ajoutant vos données d'identité à votre réponse en cours de route. Avec certaines commandes, la source DP ajoutera des données que vous pourrez utiliser ; pour la plupart des commandes, votre récepteur DP devra fournir des informations à la place – et c'est exactement ce que nous ferons, armés du PDF fourni et des captures de paquets.
Nous avons sept commandes que nous devons gérer afin de sortir DisplayPort d'un port USB-C compatible – si vous avez besoin d'un rappel sur ces commandes, la page 13 du PDF du ST sur l'altmode DP vous montrera la séquence de messages. Ces commandes sont : Découvrir l'identité, Découvrir les SVID, Découvrir les modes, Entrer en mode, Mise à jour de l'état DP, Configurer DP et Attention. Parmi ceux-ci, les quatre premiers sont déjà partiellement décrits dans la norme de base USB PD, les deux commandes DP suivantes sont spécifiques à DisplayPort-altmode mais suffisamment décrites dans le PDF que nous avons, et la commande Attention provient également de la norme de base, surtout utile pour signaler l’état de la broche HPD. Commençons par les deux premiers !
Les deux premières commandes ne sont pas du tout spécifiques à DisplayPort. En particulier, le message Discover Identity est omniprésent. Tout comme avec le message Source_Capabilities que nous n'avons même pas eu à demander au bloc d'alimentation, si vous vous branchez sur un port USB-C d'un ordinateur portable compatible DP ou même Thunderbolt, vous recevrez un message de commande Discover Identity. Si votre appareil est capable de gérer n'importe quel mode alternatif, répondre à ce message est la façon dont vous annoncez cette capacité.
Votre réponse Discover Identity devra contenir un tas de données sur votre appareil – la plupart de ces données, vous pouvez carrément les falsifier. Ces données indiquent que vous êtes un adaptateur en mode alternatif, il y a deux bits indiquant si vous êtes capable de fonctionner avec un hôte USB ou un périphérique USB, un champ de « certification » qui peut être laissé complètement vide, ainsi que le VID et le PID USB. À ma connaissance, le VID et le PID ne sont utilisés pour rien en termes de fonctionnalités, contrairement aux PID et VID de connexion USB classiques, que nous savons être utilisés pour la sélection des pilotes dans les systèmes d'exploitation. L'adaptateur que j'ai a l'ID de fournisseur 0xBDA, l'ID de produit 0x2172 et le numéro bcdDevice 0x201. Ces valeurs sont envoyées une seule fois et n'apparaissent dans aucune autre communication USB-C.
La deuxième commande est Discover SVIDs – Les SVID sont essentiellement des codes à deux octets pour les modes alternatifs pris en charge par votre appareil. Si votre réponse est 0xFF01 (donc, répondez avec 0xFF010000 comme données supplémentaires), vous obtenez un cookie, sous la forme d'être reconnu comme un appareil compatible DisplayPort altmode. L'un des appareils que je possède répond par 0xFF01, mais y ajoute également 0x25A4. Je soupçonne qu'il s'agit d'une interface de mise à jour du micrologiciel, donc si jamais vous vouliez sonder les appareils USB-C à des fins de test d'intrusion, ce serait absolument un vecteur. à examiner.
En donnant la réponse 0xFF01 à la demande Discover SVIDs, nous affirmons que notre appareil prend en charge le mode alternatif DisplayPort – même si, à vrai dire, nous sommes à mi-chemin de sa mise en œuvre correcte, en le simulant jusqu'à ce que nous y parvenions. Ne vous inquiétez pas, car nous sommes sur la bonne voie – nous parlons maintenant des spécificités de DisplayPort. Notre troisième commande est Discover Modes, dans laquelle nous indiquons à la source DP comment exactement nos besoins DisplayPort sont mappés sur le connecteur USB-C.