web-dev-qa-db-fra.com

Comment puis-je configurer ma carte vidéo USB DisplayLink sans avoir à créer et éditer un Xorg.conf?

Idéalement, j'aimerais pouvoir le brancher, être invité à obtenir le package de pilotes nécessaire, et juste avoir à me déconnecter/se connecter ou redémarrer pour connecter le moniteur au DisplayLink (ou à tout périphérique d'affichage USB, par exemple Lilliput) pour faire partie de mon bureau normal, y compris mes deux autres moniteurs agissant comme un seul bureau.

Que doit-il se passer pour que ce processus soit aussi simple que cela?

3
Colin Dean

La réponse simple est qu'avec l'état actuel de X hotplug, vous ne pouvez pas. Si vous êtes suffisamment motivé, ma compréhension (extrêmement limitée) de la pile de travail à faire est la suivante:

  • 1) Testez/vérifiez la prise en charge de XRandR dans xserver-xorg-video-displaylink
  • 2) Ajoutez une règle udev qui appelle un script d'activation hotplug
  • 3) Demandez au script d'activation d'initialiser le périphérique et envoyez RROutputChangeNotifyEvent à X
  • 4) Dépannez les problèmes connus avec la réception de RROutputChangeNotifyEvent qui le fait actuellement fonctionner uniquement avec certains types de périphériques matériels (quelque chose à propos de l'interrogation)

Une fois que vous êtes arrivé jusqu'ici, vous devriez pouvoir attacher un périphérique displaylink après l'exécution de X et le faire initialiser. La façon précise dont votre session traite l'appareil en tant qu'écran secondaire sera une source amusante de bugs: il y a beaucoup de cas d'angle traitant de très petits écrans (certains appareils Displaylink courants sont 800x480 ou plus petits), ou avec des difficultés à allouer suffisamment de VRAM (Displaylink a routines de manipulation intéressantes pour les écrans à très haute résolution).

MAIS ce n'est pas vraiment complet, car vous devrez le rattacher et le réinitialiser à chaque fois que vous souhaitez l'utiliser. Pour une solution plus riche, il faut activer le branchement à chaud à un niveau plus profond, qui peut également être utilisé pour le branchement à froid:

  • a) Mettre en œuvre l'interrogation/gestion DDC/EDID pour le lien d'affichage
  • b) Implémenter l'interrogation du bus USB lors de l'initialisation X
  • c) Tester/vérifier la prise en charge de XRandR dans xorg-xserver-video-displaylink
  • d) Ajouter des conseils udev pour les périphériques displaylink pour dire à X comment les détecter

En fonction de la mise en œuvre précise de comment b), cela devrait également couvrir le cas de la connexion à chaud, en envoyant des attributs à X dans les règles udev (par rapport à la façon dont la prise en charge de la connexion à chaud des entrées X dans udev est activée). Un avantage supplémentaire de cette implémentation est qu'elle finira probablement par ajouter la prise en charge des adaptateurs d'affichage USB qui utilisent le pilote sisusb (bien que cela nécessiterait des tests séparés).

Si vous êtes réellement intéressé par ce niveau d'implémentation, je vous conseille fortement de lire attentivement wiki.x.org et d'en discuter avec les développeurs X. Plusieurs personnes ont examiné le problème auparavant, mais toutes semblent avoir été distraites par quelque chose d'autre à un moment donné du processus.

Si tout ce qui précède est complet, l'expérience utilisateur devrait être: Connectez un appareil. Installez le pilote. Regardez-le fonctionner (pas de déconnexion/connexion, pas de redémarrage, etc.). Notez que l'utilisateur pas sera invité à installer le pilote sur la détection de matériel, ce qui est un problème entièrement distinct, et je pense que j'ai continué assez longtemps dans cette réponse pour laisser cela pour une autre fois.

2
Emmet Hikory