Moniteur externe non détecté : le pilote qui vous manque

Cet article vous a aidé ?

Vous branchez un moniteur externe. Le ventilateur du portable change de tonalité comme s’il se préparait à décoller. Le dock s’allume. Le moniteur se réveille, puis se rendort instantanément. Les paramètres n’affichent rien. Votre « second écran » est passé au statut de « écran théorique ».

La plupart du temps, ce n’est pas de la magie noire. C’est un pilote manquant ou incompatible dans la chaîne d’affichage — et cette chaîne est plus longue qu’on ne le pense. Ce guide de terrain explique comment identifier rapidement le vrai goulet d’étranglement, quelles commandes lancer, ce que signifient les sorties, et quelle décision prendre ensuite.

Ce qu’est réellement « le pilote unique » (et pourquoi il varie)

Quand quelqu’un dit « installez le pilote », il sous-entend qu’il existe un interrupteur unique qui active le « moniteur externe ». En réalité, vous avez une chaîne. La détection d’un écran externe échoue lorsqu’un maillon ne correspond pas au chemin matériel que vous utilisez réellement.

Il existe quatre chemins courants pour les moniteurs externes sur les ordinateurs portables/bureaux modernes :

  • Sorties GPU natives (HDMI/DP) câblées directement sur le GPU (intégré ou discret). Pilotes : Intel i915, AMD amdgpu, NVIDIA propriétaire nvidia (et sa pile modeset) ou open nouveau.
  • USB-C DisplayPort Alt Mode où le port USB-C transporte en fait des signaux DisplayPort. Mêmes pilotes GPU que ci‑dessus, mais il faut aussi le contrôleur Type‑C, les retimers et parfois la pile Thunderbolt pour coopérer.
  • Docks Thunderbolt qui présentent des sorties DP, souvent toujours du DP natif tunnelisé sur Thunderbolt. Les pilotes incluent DRM/KMS GPU plus Thunderbolt (thunderbolt) et parfois des particularités de firmware.
  • Docks/adaptateurs DisplayLink qui compressent la vidéo sur USB et utilisent un module noyau plus un service en espace utilisateur pour créer un GPU virtuel. Pilote : DisplayLink (souvent le module noyau evdi + un démon utilisateur). C’est une bête différente. Des modes de panne différents.

Alors quel est « le pilote que vous manquez » ? Cela dépend du chemin que vous empruntez :

  • Si votre dock est DisplayLink et que vous le traitez comme du DP Alt Mode, il vous manque la pile DisplayLink/EVDI.
  • Si vous êtes sur NVIDIA et que vous avez installé « un pilote » mais n’avez pas activé nvidia-drm modeset ou que le module noyau est incompatible avec les bibliothèques en espace utilisateur, il vous manque la paire noyau+espace utilisateur NVIDIA fonctionnelle.
  • Si vous êtes sur Intel/AMD et que les connecteurs externes affichent « disconnected » en permanence, il se peut qu’il vous manque le soutien du kernel modesetting ou que vous utilisiez un noyau trop ancien dépourvu des correctifs USB‑C/DP MST pour votre plateforme.
  • Si le moniteur est détecté mais ne s’allume jamais, il se peut qu’il vous manque un firmware (contrôleur Type‑C, blobs firmware GPU) ou que vous soyez confronté à des problèmes de négociation EDID — moins « pilote manquant », plus « le pilote ne sait pas à qui il parle ».

Opérationnellement, traitez cela comme un graphe de dépendances. Votre tâche est d’identifier quelle branche vous concerne et de valider chaque composant avec des preuves, pas des impressions.

Une citation souvent paraphrasée en exploitation, devenue presque un protocole : « L’espoir n’est pas une stratégie. »

Blague #1 : Les moniteurs externes sont comme les rotations d’astreinte : le deuxième n’apparaît que quand vous êtes déjà en retard.

Méthode de diagnostic rapide

Voici la séquence « ne pas trop réfléchir ». Vous traquez le goulet. Commencez large, puis affinez. Si vous omettez des étapes, vous réparerez la mauvaise chose et aurez l’impression d’avoir été productif tout en restant en panne.

Première étape : identifier le transport (HDMI/DP natif vs USB-C alt mode vs DisplayLink)

  1. Recherchez les signatures DisplayLink dans les identifiants de périphérique USB et les logs du noyau.
  2. Vérifiez les connecteurs DRM pour l’état « connecté/déconnecté ».
  3. Confirmez quel GPU pilote les sorties (surtout sur les portables à graphismes hybrides).

Deuxième étape : confirmer que le pilote est chargé et correspond au noyau

  1. Module noyau présent ? (lsmod)
  2. Erreurs dans dmesg du noyau ? (firmware manquant, échec d’initialisation, module marqué taint)
  3. Pile en espace utilisateur cohérente ? (correspondance de version NVIDIA ; démon DisplayLink en marche)

Troisième étape : confirmer le connecteur et les négociations EDID

  1. EDID lisible ? (sysfs DRM) Si l’EDID est vide ou erroné, vous « ne détecterez rien ».
  2. Topologie DP MST ? Pour les docks avec plusieurs ports, MST est un coupable fréquent.
  3. Négociation power/alt-mode ? Les particularités USB‑C apparaissent dans les logs sous forme de messages type typec/ucsi.

Règle de décision

Si le moniteur n’apparaît jamais dans le statut des connecteurs DRM, arrêtez de bidouiller les paramètres du bureau. Réparez la couche transport/pilote/noyau. S’il apparaît comme connecté mais qu’aucun mode ne fonctionne, vous êtes en territoire EDID/mode/MST.

Faits et contexte : pourquoi les écrans externes restent fragiles

La fiabilité des écrans externes devrait sembler résolue depuis longtemps. Pourtant, voici quelques points concrets qui rendent le chaos moins mystérieux :

  1. EDID date de plusieurs décennies (à l’origine la façon dont les écrans se décrivent selon VESA). C’est toujours la poignée de main dont dépend votre OS, et ça se corrompt encore à cause de câbles et docks défectueux.
  2. DisplayPort a introduit MST (Multi‑Stream Transport) pour qu’un lien DP puisse porter plusieurs écrans. Bien en théorie ; en pratique, les hubs et docks MST sont une source constante de « moniteurs fantômes » et d’énumération instable.
  3. USB‑C rend l’« identité » du port ambiguë : un même connecteur peut faire seulement USB, USB + DP Alt Mode, ou Thunderbolt. Votre câble peut prendre en charge la charge mais pas les voies DP. Ce n’est pas un modèle d’erreur convivial pour l’utilisateur.
  4. Thunderbolt tunnelise des protocoles (PCIe, DisplayPort). C’est puissant, et cela signifie aussi que le firmware, les niveaux de sécurité et le support noyau peuvent bloquer ce qui « devrait juste fonctionner ».
  5. Les graphismes hybrides (iGPU + dGPU) ont modifié le câblage. Beaucoup de portables acheminent les ports externes via l’iGPU même quand le rendu utilise le dGPU, ou l’inverse. Les suppositions ici déclenchent des réunions de debugging longues et coûteuses.
  6. Wayland vs Xorg compte : certains outils fournisseurs et anciens workflows (comme de lourds scripts xrandr) se comportent différemment, et les pilotes ont évolué à des rythmes différents selon les compositeurs.
  7. L’historique du pilote NVIDIA sur Linux inclut des transitions : legacy vs moderne, intégration modesetting, et comportement différent selon les versions du noyau. Les incompatibilités peuvent « fonctionner » localement mais échouer à l’extérieur.
  8. DisplayLink n’est pas un « protocole moniteur » ; c’est de la vidéo sur USB avec compression et un périphérique d’affichage virtuel. Ça peut être excellent, mais c’est une voie graphique séparée qui nécessite des pilotes et services dédiés.

Carte pratique des pannes : où la détection échoue

Quand un moniteur externe n’est pas détecté, il n’y a que quelques endroits où la vérité peut se cacher. Voici la carte que j’utilise en support production :

  • Couche physique : câble, direction d’adaptateur, alimentation, port endommagé, prise en charge des voies DP dans le câble.
  • Négociation du lien : négociation alt mode USB‑C, autorisation Thunderbolt, entraînement de lien DP.
  • Énumération des périphériques par le noyau : le système voit‑t‑il un nouveau connecteur/périphérique ? Le connecteur DRM apparaît‑t‑il ? Le périphérique USB apparaît‑t‑il ?
  • Attachement du pilote : le bon module noyau se charge et se lie au périphérique ; le firmware se charge.
  • Modesetting : KMS crée un framebuffer et une liste de modes. L’EDID est analysé.
  • Compositeur/session : Wayland/Xorg le détecte, applique la politique, active la sortie.
  • Politique utilisateur : capot fermé, DPMS, écran désactivé, conflit mode miroir, bugs d’échelle fractionnelle.

Si vous traitez le problème comme « mon écran est invisible », vous courrez après l’interface. Traitez‑le comme une pipeline : « où le signal s’est-il arrêté ? »

Tâches pratiques : commandes, sorties et décisions (12+)

Ces tâches supposent Linux parce que c’est là où « pilote manquant » est le plus littéral et le plus corrigeable avec des preuves. Si vous êtes sur Windows/macOS, les étapes conceptuelles restent valables, mais les outils diffèrent.

Task 1: Check what the kernel thinks about DRM connectors

cr0x@server:~$ for s in /sys/class/drm/card*-*/status; do echo "$s: $(cat $s)"; done
/sys/class/drm/card0-DP-1/status: disconnected
/sys/class/drm/card0-DP-2/status: connected
/sys/class/drm/card0-HDMI-A-1/status: disconnected

Ce que cela signifie : La couche DRM du noyau voit les connecteurs et leur état actuel. Si tout est disconnected alors qu’un moniteur est branché, vous êtes en dessous du compositeur : câble/port/alt-mode/pilote/firmware.

Décision : Si aucun connecteur ne passe jamais à connected, passez aux logs USB‑C/Thunderbolt/typec et à la vérification des pilotes. Si un connecteur est connected, passez à l’EDID et aux modes.

Task 2: Identify GPU(s) and which driver is active

cr0x@server:~$ lspci -nnk | grep -A3 -E "VGA|3D|Display"
00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] [8086:9a49]
	Subsystem: Lenovo Device [17aa:XXXX]
	Kernel driver in use: i915
	Kernel modules: i915
01:00.0 3D controller [0302]: NVIDIA Corporation TU117M [GeForce GTX] [10de:1f99]
	Kernel driver in use: nvidia
	Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia

Ce que cela signifie : Vous voyez les périphériques et le pilote noyau qui leur est réellement lié. C’est là que « j’ai installé le pilote » devient « le noyau utilise le pilote ».

Décision : Si vous attendez NVIDIA mais voyez nouveau, ou l’inverse, corrigez d’abord le binding. Si vous avez des graphismes hybrides, déterminez quel GPU possède les ports externes (souvent l’iGPU).

Task 3: Confirm kernel modules are loaded (and not half-loaded)

cr0x@server:~$ lsmod | egrep 'i915|amdgpu|nvidia|nouveau|evdi|drm_kms_helper|typec|ucsi'
nvidia_drm             73728  2
nvidia_modeset       1236992  3 nvidia_drm
nvidia              62410752  89 nvidia_modeset
i915                 4128768  4
drm_kms_helper        315392  2 i915,nvidia_drm
ucsi_acpi             16384  0
typec_ucsi            49152  1 ucsi_acpi

Ce que cela signifie : Une pile saine affiche souvent les helpers DRM plus votre module GPU. Pour DisplayLink, vous vous attendez à voir evdi. Pour USB‑C Alt Mode, on voit souvent des modules UCSI/typec.

Décision : Module manquant ? Installez/activez le bon paquet pilote, ou corrigez Secure Boot/signature de module. Module présent mais erreurs dans les logs ? Passez à dmesg.

Task 4: Look at kernel logs for display-related failures

cr0x@server:~$ sudo dmesg -T | egrep -i "drm|edid|dp|hdmi|typec|ucsi|thunderbolt|nvidia|evdi" | tail -n 30
[Mon Feb  3 10:11:24 2026] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 0
[Mon Feb  3 10:12:01 2026] i915 0000:00:02.0: [drm] DP-2: EDID is invalid
[Mon Feb  3 10:12:01 2026] i915 0000:00:02.0: [drm] DP-2: DPCD: 001 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[Mon Feb  3 10:12:05 2026] ucsi_acpi USBC000:00: PPM init failed (-110)

Ce que cela signifie : C’est là que le système avoue. EDID invalide pointe vers un câblage/dock/écran qui ne handshakent pas correctement. Les timeouts UCSI peuvent signifier des problèmes de contrôleur USB‑C/firmware.

Décision : Erreurs EDID → testez un autre câble/port/dock, puis envisagez d’imposer un EDID (plus tard). Échecs UCSI → mise à jour du BIOS/firmware ou upgrade du noyau battent souvent les ajustements en espace utilisateur.

Task 5: Determine if you’re dealing with DisplayLink (USB graphics) vs Alt Mode

cr0x@server:~$ lsusb
Bus 002 Device 002: ID 2109:0817 VIA Labs, Inc. USB3.0 Hub
Bus 002 Device 003: ID 17e9:6012 DisplayLink USB3.0 to HDMI Adapter
Bus 001 Device 005: ID 046d:c52b Logitech, Inc. Unifying Receiver

Ce que cela signifie : Un périphérique DisplayLink est explicite. Si vous le voyez, votre chemin d’écran externe n’est probablement pas DP Alt Mode — c’est de l’affichage USB.

Décision : Si DisplayLink est présent, arrêtez de déboguer MST DP d’abord. Installez/vérifiez DisplayLink/EVDI et son service. Si aucun périphérique DisplayLink n’apparaît, vous êtes probablement sur des sorties GPU natives ou alt mode.

Task 6: Verify the DisplayLink/EVDI kernel module (if applicable)

cr0x@server:~$ modinfo evdi | head
filename:       /lib/modules/6.5.0-21-generic/updates/dkms/evdi.ko
version:        1.14.4
license:        GPL
description:    Extensible Virtual Display Interface
author:         DisplayLink (UK) Ltd.

Ce que cela signifie : Le module existe pour votre noyau en cours d’exécution. Si modinfo échoue, vous n’avez pas le composant noyau construit/installé.

Décision : Pas de module → installez le paquet DisplayLink approprié ou la chaîne DKMS ; vérifiez les en‑têtes du noyau. Module présent → confirmez qu’il est chargé et que le service en espace utilisateur tourne.

Task 7: Check whether the DisplayLink service is running (if applicable)

cr0x@server:~$ systemctl status displaylink-driver.service --no-pager
● displaylink-driver.service - DisplayLink Driver Service
     Loaded: loaded (/lib/systemd/system/displaylink-driver.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2026-02-03 10:20:11 UTC; 3min ago
   Main PID: 1422 (DisplayLinkMana)
      Tasks: 18 (limit: 18912)
     Memory: 42.1M
        CPU: 1.202s

Ce que cela signifie : Pour DisplayLink, un démon en marche fait partie du « pilote ». Sans lui, vous pouvez voir les périphériques USB mais aucune sortie d’affichage.

Décision : Si inactive/échouée, inspectez les logs et réinstallez/upgradez. Si en marche, revenez aux vérifications des connecteurs DRM — les sorties DisplayLink devraient apparaître comme des connecteurs supplémentaires.

Task 8: Check Wayland vs Xorg session (it matters for tooling and quirks)

cr0x@server:~$ echo $XDG_SESSION_TYPE
wayland

Ce que cela signifie : Si vous êtes sous Wayland, xrandr peut ne pas refléter la réalité. Vous pouvez toujours déboguer le noyau/DRM avec sysfs et les logs.

Décision : Si un outil fournisseur attend Xorg (certains anciens workflows DisplayLink, certains cas limites NVIDIA), envisagez de basculer temporairement sur Xorg pour le diagnostic — temporairement, pas pour toujours.

Task 9: Under Xorg, enumerate outputs and modes with xrandr

cr0x@server:~$ xrandr --query
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
   1920x1080     60.01*+
DP-2 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)

Ce que cela signifie : X voit le même état des connecteurs. Si DRM dit connecté mais xrandr dit déconnecté, vous pouvez avoir un décalage de session/permissions ou plusieurs GPU avec des providers séparés.

Décision : Si xrandr montre la sortie connectée, essayez de l’activer. Si elle est déconnectée, redescendez la pile : état du connecteur noyau et logs.

Task 10: On hybrid graphics, check providers and offload configuration

cr0x@server:~$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x46 cap: 0x9, Source Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 1 name:Intel
Provider 1: id: 0x1f9 cap: 0x2, Sink Output crtcs: 4 outputs: 0 associated providers: 1 name:NVIDIA-G0

Ce que cela signifie : Les providers vous indiquent si le périphérique NVIDIA fournit réellement des sorties. Sur beaucoup de portables il est seulement rendu et l’iGPU possède les connecteurs.

Décision : Si le dGPU a zéro sorties, arrêtez d’attendre qu’il pilote directement l’affichage externe. Concentrez‑vous sur l’état des connecteurs iGPU et sur le DP Alt Mode USB‑C.

Task 11: Read EDID directly from sysfs when a connector is “connected” but no modes work

cr0x@server:~$ sudo hexdump -C /sys/class/drm/card0-DP-2/edid | head
00000000  00 ff ff ff ff ff ff 00  4c 2d fa 0a 35 31 30 30  |........L-..5100|
00000010  0c 1e 01 03 80 3c 22 78  2a ee 95 a3 54 4c 99 26  |.....<"x*...TL.&|
00000020  0f 50 54 a5 4b 00 71 4f  81 80 81 40 81 c0 95 00  |.PT.K.qO...@....|

Ce que cela signifie : Si vous obtenez de vrais octets EDID, le moniteur parle. Si le fichier est vide ou que la lecture échoue, la poignée de main échoue.

Décision : EDID lisible → concentrez‑vous sur le modesetting/la politique du compositeur. EDID illisible → remplacez le câble/dock ; envisagez de désactiver MST ; mettez à jour firmware/noyau.

Task 12: Check DP MST and connector topology hints

cr0x@server:~$ sudo cat /sys/kernel/debug/dri/0/i915_display_info | head -n 40
CRTC info
  CRTC 0: pipe A, active=yes
Connector info
  DP-2: status: connected
    link-status: GOOD
    max bpc: 12
    has audio: yes
    EDID: yes
    MST: yes

Ce que cela signifie : Debugfs peut confirmer que MST est en jeu. MST + docks + plusieurs moniteurs est un coin classique de défaillance de détection.

Décision : Si MST est impliqué et instable, testez avec un seul moniteur, un autre port du dock, ou désactivez MST si votre plateforme le permet (spécifique au vendeur). Si un moniteur seul fonctionne mais que plusieurs échouent, MST est votre suspect.

Task 13: Verify Thunderbolt device authorization and status (Thunderbolt path)

cr0x@server:~$ boltctl
 ● CalDigit TS3 Plus
   ├─ type:          peripheral
   ├─ name:          CalDigit TS3 Plus
   ├─ uuid:          00112233-4455-6677-8899-aabbccddeeff
   ├─ status:        authorized
   ├─ connected:     yes
   └─ stored:        yes

Ce que cela signifie : La sécurité Thunderbolt peut bloquer la fonction du périphérique tant qu’il n’est pas autorisé. S’il n’est pas autorisé, le tunneling DP peut ne jamais se produire.

Décision : Si le statut n’est pas authorized, autorisez‑le (si la politique le permet) ou ajustez la politique BIOS/bolt. Si autorisé, poursuivez les vérifications des connecteurs DRM.

Task 14: Check for firmware loading failures (common on Intel/AMD GPUs)

cr0x@server:~$ sudo dmesg -T | egrep -i "firmware|failed to load|ucode|amdgpu|i915" | tail -n 20
[Mon Feb  3 10:11:23 2026] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/tgl_dmc_ver2_12.bin
[Mon Feb  3 10:11:23 2026] i915 0000:00:00.0: [drm] GuC firmware i915/tgl_guc_70.1.1.bin version 70.1.1
[Mon Feb  3 10:11:23 2026] i915 0000:00:02.0: [drm] HuC firmware i915/tgl_huc_7.9.3.bin version 7.9.3

Ce que cela signifie : Le firmware se charge correctement. Si vous voyez « failed to load », vous pouvez obtenir des comportements d’affichage externe étranges même si la dalle interne fonctionne.

Décision : Firmware manquant → installez le paquet de firmware approprié pour votre distribution ; envisagez une mise à jour du noyau si votre matériel est plus récent que votre OS.

Task 15: NVIDIA sanity check (driver version consistency)

cr0x@server:~$ nvidia-smi
Tue Feb  3 10:25:12 2026
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.14              Driver Version: 550.54.14      CUDA Version: 12.4   |
|-----------------------------------------+------------------------+----------------------|
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
|  0   NVIDIA GeForce GTX               Off| 00000000:01:00.0  Off  |                  N/A |
+---------------------------------------------------------------------------------------+

Ce que cela signifie : L’outil utilisateur NVIDIA peut parler au pilote noyau. Cela ne garantit pas que les sorties externes fonctionnent, mais cela élimine une grande classe d’incompatibilités.

Décision : Si nvidia-smi échoue, corrigez l’installation du pilote avant toute autre chose. Si ça fonctionne mais que les écrans externes échouent, vérifiez nvidia_drm modeset et la compatibilité du compositeur.

Task 16: Confirm NVIDIA DRM modesetting is enabled (common “missing driver” in disguise)

cr0x@server:~$ cat /sys/module/nvidia_drm/parameters/modeset
Y

Ce que cela signifie : Y indique que l’intégration DRM KMS de NVIDIA est activée. Sans cela, le comportement des moniteurs externes peut être imprévisible, surtout avec Wayland.

Décision : Si N, activez le modesetting via les paramètres du module noyau dans la méthode prise en charge par votre distribution, puis redémarrez et revérifiez le statut des connecteurs DRM.

Blague #2 : Le « dock universel » est universel de la même manière que la « télécommande universelle » est universelle — surtout comme un déclencheur de conversation.

Trois mini-récits d’entreprise depuis le terrain

Mini-récit n°1 : L’incident causé par une mauvaise hypothèse

Dans une entreprise de taille moyenne avec beaucoup de portables Linux, l’équipe IT a standardisé un joli dock USB‑C. Les achats appréciaient. C’était joli sur les bureaux. Les tickets d’assistance ont commencé deux semaines plus tard : « moniteur externe non détecté » sur un modèle de portable spécifique, mais seulement sur un des deux ports moniteurs.

Quelqu’un a fait une hypothèse nette et confiante : « USB‑C c’est USB‑C. Le dock est OK ; c’est l’image OS. » Ils ont réinstallé la version précédente de l’environnement de bureau. Aucun changement. Ensuite ils ont figé le noyau. Toujours rien. Le volume de tickets a augmenté, et cela est devenu un « problème de stabilité plateforme », ce qui en entreprise veut dire « tout le monde va maintenant assister aux réunions ».

Le vrai problème : le second port de ce dock reposait sur DisplayPort MST, et le chemin USB‑C du portable passait par un retimer particulier. Sous charge, l’entraînement du lien se dégradait et les lectures EDID échouaient de manière intermittente. L’écran interne fonctionnait toujours, donc les gens ont pourchassé le comportement du gestionnaire de fenêtres et les paramètres d’affichage. Misdirection classique.

La correction n’a pas été dramatique. Ils ont testé avec un câble USB‑C vers DP direct (contournant le dock) et le moniteur s’est énuméré immédiatement. Ils ont changé de dock et de câbles ; l’échec se reproduisait uniquement avec cette combinaison dock + port. Puis ils ont mis à jour le BIOS et sont passés à une version du noyau qui contenait des correctifs de stabilité pour la pile Type‑C/DP de cette plateforme. Le « pilote manquant » s’est avéré être « le firmware+comportement noyau manquant qui rend le pilote fiable ».

La leçon opérationnelle : n’assumez pas le transport. Prouvez‑le. « Dock » n’est pas un transport ; c’est un ticket de loterie composé de silicium.

Mini-récit n°2 : L’optimisation qui a mal tourné

Une autre organisation avait une flotte de stations de travail équipées de GPU NVIDIA. Ils voulaient démarrages plus rapides et moins d’éléments, alors ils ont « optimisé » en retirant des services « inutiles » et en réduisant les modules noyau. Un ingénieur bien intentionné a supprimé tout ce qui semblait optionnel, y compris des morceaux liés aux hooks du gestionnaire d’affichage et au comportement de modesetting GPU.

Pendant des semaines, tout avait l’air correct — sur des moniteurs simples. Puis une équipe a amené une nouvelle série d’écrans 4K et quelques docks Thunderbolt. Soudain : les écrans externes « non détectés » ou apparaissaient puis repartaient. Les gens ont blâmé les docks. Les gens ont blâmé les écrans. Les gens ont blâmé le fournisseur GPU, ce qui est un hobby pour certains.

La cause racine était subtile. Leur système ne chargeait plus de façon cohérente le bon chemin de modesetting tôt au démarrage. Le pilote NVIDIA se chargeait, mais l’intégration DRM/KMS n’était pas activée d’une manière qui s’entendait bien avec le compositeur et les événements hotplug. Vous pouviez toujours rendre. Vous pouviez toujours faire du calcul. Mais le pipeline d’affichage externe était fragile et dépendant du timing.

Le retour en arrière a été douloureux : réintroduire les modules et la configuration attendus, et cesser de traiter le graphique comme une plomberie optionnelle. Le temps de démarrage a augmenté d’un cheveu. Les incidents ont fortement diminué. L’« optimisation » a gagné des secondes et coûté des jours.

La leçon opérationnelle : les optimisations de performance qui suppriment la plomberie noyau « non utilisée » sont indistinguables d’un sabotage quand la topologie matérielle change. Gardez les éléments de compatibilité ennuyeux sauf si vous avez une raison mesurée de ne pas le faire.

Mini-récit n°3 : La pratique ennuyeuse mais correcte qui a sauvé la mise

Une société financière exécutait une image Linux standardisée pour des milliers d’utilisateurs. Les écrans externes étaient critiques parce que beaucoup de bureaux utilisaient des affichages doubles pour des outils de trading. Ils avaient une politique ennuyeuse : tests de certification matériel pour chaque combinaison portable+dock+moniteur, avec une petite checklist et un ensemble de logs stockés.

Quand un nouveau modèle de portable arrivait, ils ne se contentaient pas de l’imager et d’espérer. Ils exécutaient la checklist : capturer dmesg, capturer le statut des connecteurs DRM, capturer lspci -nnk, vérifier les lectures EDID, et vérifier à la fois les sessions Wayland et Xorg si supportées. Si quelque chose échouait, ils ouvraient un dossier fournisseur avec des preuves concrètes, pas « c’est cassé ».

Des mois plus tard, une mise à jour du noyau a introduit une régression qui affectait le hotplug USB‑C sur ce modèle. Les utilisateurs l’ont remarqué rapidement. Mais la remédiation a été rapide parce qu’ils avaient des baselines : « voici l’apparence du statut du connecteur avant ; voici ce qu’il est maintenant ; voici l’extrait exact du log noyau où UCSI commence à expirer. »

Ils ont figé le noyau pour ce modèle seulement, poussé un contournement ciblé, et planifié une mise à niveau contrôlée quand le correctif a été livré. Pas de drame. Pas de rollback massif. Pas d’appel général.

La leçon opérationnelle : capturer des baselines ennuyeuses transforme une douleur subjective en un diff exploitable. Ce n’est pas glamour, mais ce n’est ni une panne d’affichage pour 2000 postes.

Erreurs fréquentes : symptôme → cause racine → correction

Ici on arrête de prétendre que tous les problèmes « moniteur non détecté » sont identiques. Voici les répétitions que je vois, cartographiées vers des corrections spécifiques.

1) Symptom: Nothing appears in display settings; DRM connectors all disconnected

  • Cause racine : mauvaise hypothèse sur le transport (DisplayLink vs Alt Mode), câble mort, ou négociation USB‑C alt mode qui échoue.
  • Correction : lancez lsusb pour détecter DisplayLink ; lancez le statut des connecteurs DRM ; vérifiez dmesg pour les erreurs UCSI/typec ; testez un câble connu‑bon qui supporte explicitement DP Alt Mode ; essayez un autre port USB‑C si disponible.

2) Symptom: Monitor detected sometimes, then disappears after suspend/resume

  • Cause racine : entraînement de lien DP instable via le dock, instabilité de hub MST, ou bugs de pilote dans la gestion du hotplug.
  • Correction : mettez à jour BIOS/firmware ; mettez à jour le noyau ; testez avec MST désactivé (ou un seul écran) ; évitez les câbles DP bon marché ; si NVIDIA, assurez‑vous que DRM modeset est activé et que vous êtes sur un pilote connu pour bien fonctionner avec votre compositeur.

3) Symptom: DisplayLink dock shows up in lsusb, but no new monitors appear

  • Cause racine : module EVDI manquant pour le noyau en cours, ou service DisplayLink non lancé, ou Secure Boot bloquant le module.
  • Correction : confirmez modinfo evdi et lsmod | grep evdi ; vérifiez systemctl status displaylink-driver.service ; si Secure Boot est activé, signez le module ou désactivez Secure Boot selon la politique.

4) Symptom: DRM shows connector “connected,” but no modes available / black screen

  • Cause racine : échec d’analyse EDID ou EDID corrompu via un dock ; parfois des particularités HDR/DSC ; parfois confusion MST.
  • Correction : lisez l’EDID depuis sysfs ; échangez câble/dock ; essayez une connexion directe ; testez une fréquence de rafraîchissement différente ; envisagez d’imposer un mode connu‑bon sous Xorg ; mettez à jour firmware/noyau.

5) Symptom: NVIDIA system; internal display works; external monitor never detected on Wayland

  • Cause racine : modesetting NVIDIA désactivé ou composants pilote incompatibles ; limitations du compositeur sur des stacks plus anciens.
  • Correction : vérifiez /sys/module/nvidia_drm/parameters/modeset ; assurez‑vous que le module noyau et l’espace utilisateur sont alignés ; essayez temporairement Xorg pour confirmer que le chemin matériel fonctionne, puis corrigez la compatibilité Wayland correctement.

6) Symptom: Dock has two monitor outputs; only one works reliably

  • Cause racine : topologie MST et limites de bande passante, ou un dock avec hub MST sensible à la qualité du câble.
  • Correction : testez chaque port individuellement ; baissez la résolution ou le taux de rafraîchissement ; utilisez DP plutôt que HDMI sur le dock si possible ; utilisez un autre modèle de dock connu pour mieux gérer MST.

7) Symptom: External monitor works only after reboot, not hotplug

  • Cause racine : événements hotplug non délivrés/traités, ou machine d’état Type‑C bloquée.
  • Correction : vérifiez les logs autour du branchement ; mettez à jour noyau/firmware ; évitez les réglages d’économie d’énergie agressifs ; pour le débogage, reseatez le câble et tentez un cycle d’alimentation complet du dock et du moniteur.

Listes de contrôle / plan étape par étape

Checklist A: 10-minute triage for “not detected”

  1. Confirmez le transport : lancez lsusb. Si DisplayLink apparaît, suivez la voie DisplayLink ; sinon la voie DP/HDMI/alt-mode.
  2. Vérifiez le statut des connecteurs DRM : si rien n’indique connected, stoppez. Vous êtes en dessous de l’environnement de bureau.
  3. Vérifiez le binding du pilote GPU : lspci -nnk. Confirmez le pilote correct en usage.
  4. Analysez les logs : dmesg pour erreurs EDID/typec/ucsi/thunderbolt.
  5. Validez l’EDID si connecté : hexdump de l’EDID sysfs. Pas d’EDID, pas de modes stables.

Checklist B: Fix path for DisplayLink docks

  1. Vérifier la présence du périphérique : lsusb affiche un ID DisplayLink.
  2. Vérifier le module noyau : modinfo evdi.
  3. Vérifier le module chargé : lsmod | grep evdi.
  4. Vérifier le service en marche : systemctl status displaylink-driver.service.
  5. Redémarrer après l’installation du pilote (oui, vraiment). Les piles d’affichage ne sont pas conciliantes quand on change leurs fondations à chaud.

Checklist C: Fix path for USB-C DP Alt Mode / Thunderbolt

  1. Testez un câble connu‑bon, certifié pour la vidéo. Beaucoup de « câbles USB‑C pour charge » sont data‑only ou sous‑spécifiés pour les voies DP.
  2. Confirmez les modules typec/ucsi : lsmod | grep -E 'typec|ucsi'.
  3. Vérifiez les logs UCSI/typec dans dmesg pour des timeouts.
  4. Si Thunderbolt : confirmez l’autorisation avec boltctl.
  5. Mettre à jour BIOS/firmware si des échecs UCSI apparaissent. C’est souvent le correctif le moins pénible.

Checklist D: Fix path for NVIDIA external monitor issues

  1. Confirmer le pilote chargé : nvidia-smi fonctionne.
  2. Confirmer le modeset DRM : cat /sys/module/nvidia_drm/parameters/modeset renvoie Y.
  3. Confirmer le statut des connecteurs dans sysfs DRM.
  4. Si hybride : utilisez xrandr --listproviders (sous Xorg) pour confirmer quel GPU possède les sorties.
  5. Si Wayland pose problème : testez sous Xorg pour isoler « pilote vs compositeur ». Ensuite corrigez la couche appropriée.

FAQ

1) What’s the “one driver” most people are actually missing?

Sur Linux, c’est généralement l’un de ces éléments : le pilote propriétaire NVIDIA (installé et assorti correctement), la pile DisplayLink/EVDI pour les docks USB, ou un noyau/firmware plus récent qui prend en charge de façon fiable votre chemin USB‑C/DP.

2) How do I know if my dock is DisplayLink?

Exécutez lsusb. Si vous voyez un périphérique nommé DisplayLink ou un ID fournisseur DisplayLink connu, vous êtes sur la voie d’affichage USB et avez besoin de DisplayLink/EVDI plus son service.

3) My monitor is connected but shows “No signal.” Is that still a driver issue?

Souvent c’est EDID/modesetting ou entraînement de lien. Si DRM indique connected, lisez l’EDID depuis sysfs. Si l’EDID est invalide ou manquant, l’OS ne peut pas choisir un mode en toute confiance.

4) Why does changing HDMI cables sometimes “fix the driver”?

Parce que ce n’était jamais le pilote. Des câbles mauvais ou sous‑spécifiés causent corruption EDID, échecs d’entraînement de lien et détections hotplug instables. Le pilote est le messager qu’on blâme.

5) Do I need Xorg to make external monitors work?

Non. Mais les outils Xorg peuvent être utiles pour le diagnostic, et certaines piles fournisseurs se comportaient historiquement mieux là‑dessus. Utilisez‑le comme banc d’essai, pas comme style de vie.

6) Why does it work after reboot but not when I hotplug?

Le hotplug dépend d’événements qui passent du matériel au noyau puis au compositeur. Les docks, hubs MST et contrôleurs Type‑C peuvent rester bloqués. Les logs autour du branchement vous disent généralement quelle couche a échoué.

7) I have Intel + NVIDIA. Which one controls the external port?

Ça dépend du câblage du portable. Beaucoup de modèles routent les sorties externes via l’iGPU même si le dGPU fait le rendu. Utilisez lspci -nnk et (sous Xorg) xrandr --listproviders pour confirmer.

8) Is a BIOS update really part of “driver troubleshooting”?

Oui. USB‑C alt mode et Thunderbolt reposent sur le firmware. Si vos logs affichent des échecs UCSI ou des timeouts répétés de négociation, les mises à jour BIOS/firmware sont souvent le chemin le plus rapide vers la stabilité.

9) Can I “force” an external monitor to work without EDID?

Parfois, sous Xorg, vous pouvez forcer un modeline ou fournir un override d’EDID. C’est un contournement, pas une correction. En environnements gérés, c’est acceptable pour un modèle de moniteur spécifique, mais c’est fragile avec des docks variés.

10) What should I collect before escalating to vendor support?

Au minimum : lspci -nnk, sortie du statut des connecteurs DRM, extrait de dmesg autour du branchement, s’il s’agit de DisplayLink (lsusb), et vos versions noyau/pilote.

Conclusion : prochaines étapes sans effets secondaires

Si votre moniteur externe n’est pas détecté, ne commencez pas par réinstaller votre environnement de bureau ou par activer au hasard des réglages. Prouvez le transport. Prouvez le binding du pilote. Puis prouvez la poignée de main. Vous réparerez la bonne chose plus vite et éviterez la régression classique où « ça marche sur mon bureau » devient « ça échoue pour tout le monde ».

Prochaines étapes pratiques :

  1. Exécutez la méthode de diagnostic rapide dans l’ordre et notez ce que vous apprenez à chaque couche.
  2. Si c’est DisplayLink, installez/validez EVDI + service ; ne perdez pas de temps en DP/MST.
  3. Si c’est USB‑C/Thunderbolt alt mode, faites confiance aux logs : les échecs UCSI/typec signifient généralement alignement firmware/noyau, pas UI.
  4. Si c’est NVIDIA, assurez‑vous que le module noyau, les bibliothèques utilisateur et le modeset DRM sont cohérents.
  5. Une fois corrigé, capturez une baseline (statut des connecteurs, extrait dmesg, versions des pilotes). Votre futur vous remerciera en silence, ce qui est la plus haute forme d’éloge en exploitation.
← Précédent
Les groupes IOMMU sont un piège : comment obtenir un passthrough GPU/NVMe propre sans douleur
Suivant →
Windows Terminal comme un pro : profils, polices et raccourcis

Laisser un commentaire