Mise à jour : Debian 9.3
Sur un PC portable équipé d'une technologie d'affichage Optimus (utilisation de deux cartes graphiques, l'une (intel) pour les fonctions d'affichage "de base", l'autre (nvidia) pour les applications nécessitant une accélération graphique), l'interface HDMI (High-Definition Multimedia Interface) peut-être connectée soit sur la carte graphique intel, soit sur la carte graphique Nvidia.
On s'intéresse ici à la mise en œuvre de l'interface HDMI
dans le cas d'une connexion HDMI sur la carte graphique Nvidia
la commutation des cartes intel / nvidia étant assurée par la solution bumblebee, couplée au pilote propriétaire nvidia (voir Optimus - Nvidia ).
La solution décrite est directement reproduite à partir de la référence ci-dessous :
Référence :
La solution est basée sur l'utilisation de la commande intel-virtual-output, fournie par le paquet xserver-xorg-intel. L'installer si ce n'est pas déjà fait :
# apt install xserver-xorg-video-intel
Créer un fichier 20-intel.conf dans /usr/share/X11/xorg.conf.d sur le modèle suivant :
# nano /usr/share/X11/xorg.conf.d/20-intel.conf
Section "Device"
Identifier "intelgpu0"
Driver "intel"
Option "VirtualHeads" "2"
EndSection
Modifier le fichier /etc/bumblebee/xorg.conf.nvidia : les lignes modifiées ou créées sont en gras :
# nano /etc/bumblebee/xorg.conf.nvidia
Section "ServerLayout"
Identifier "Layout0"
Option "AutoAddDevices" "true"
Option "AutoAddGPU" "false"
EndSection
Section "Device"
Identifier "DiscreteNvidia"
Driver "nvidia"
VendorName "NVIDIA Corporation"
# If the X server does not automatically detect your VGA device,
# you can manually set it here.
# To get the BusID prop, run `lspci | egrep 'VGA|3D'` and input the data
# as you see in the commented example.
# This Setting may be needed in some platforms with more than one
# nvidia card, which may confuse the proprietary driver (e.g.,
# trying to take ownership of the wrong device). Also needed on Ubuntu 13.04.
# BusID "PCI:01:00:0"
# Setting ProbeAllGpus to false prevents the new proprietary driver
# instance spawned to try to control the integrated graphics card,
# which is already being managed outside bumblebee.
# This option doesn't hurt and it is required on platforms running
# more than one nvidia graphics card with the proprietary driver.
# (E.g. Macbook Pro pre-2010 with nVidia 9400M + 9600M GT).
# If this option is not set, the new Xorg may blacken the screen and
# render it unusable (unless you have some way to run killall Xorg).
Option "ProbeAllGpus" "false"
Option "NoLogo" "true"
# Option "UseEDID" "false"
# Option "UseDisplayDevice" "none"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Screen"
Identifier "Screen0"
Device "DiscreteNvidia"
EndSection
Vérifier que optimus fonctionne toujours correctement
$ lsmod |grep nvidia
$ optirun lsmod |grep nvidia
nvidia_modeset 790528 2
nvidia 12701696 41 nvidia_modeset
$ systemctl status bumblebeed.service
● bumblebeed.service - Bumblebee C Daemon
Loaded: loaded (/lib/systemd/system/bumblebeed.service; enabled; vendor prese
Active: active (running) since Sun 2017-12-10 12:13:13 CET; 51min ago
............
$ intel-virtual-output -b
Ce qui doit avoir pour effet
d'activer la carte graphique nvidia, ce que l'on peut vérifier par
$cat /proc/acpi/bbswitch
$ lsmod |grep nvidia
0000:01:00.0 ON
nvidia_modeset 790528 2
nvidia 12701696 41 nvidia_modeset
et d'activer une sortie VIRTUAL1 correspondant à la sortie HDMI
$ xrandr --listactivemonitors
Monitors: 2
0: +*LVDS1 1600/340x900/190+0+0 LVDS1
1: +VIRTUAL1 1024/271x768/203+0+0 VIRTUAL1
$ xrandr
....
VIRTUAL1 connected 1920x1080+1600+0 (normal left inverted right x axis y axis) 0mm x 0mm
VIRTUAL1.637-1920x1080 60.00*
VIRTUAL1.638-1920x1080 59.94
VIRTUAL1.639-1920x1080 50.00
VIRTUAL1.640-1920x1080 29.97
VIRTUAL1.641-1920x1080 25.00
VIRTUAL1.642-1920x1080 24.00
VIRTUAL1.643-1920x1080 23.97
VIRTUAL1.644-1920x1080 60.05
VIRTUAL1.645-1920x1080 60.00
VIRTUAL1.646-1920x1080 50.04
VIRTUAL1.647-1600x1200 60.00
VIRTUAL1.648-1360x765 60.00
VIRTUAL1.649-1280x1024 60.02
VIRTUAL1.650-1280x720 59.94
VIRTUAL1.651-1280x720 50.00
1024x768 60.00
800x600 60.32
VIRTUAL1.654-720x576 50.00
VIRTUAL1.655-720x480 59.94
640x480 59.94
VIRTUAL1.657-640x480 59.93
.....
Pour établir une configuration particulière d'écran, utiliser xrandr, arandr ou le gestionnaire d'affichage de xfce4. Par exemple, pour configurer l'écran HDMI (VIRTUAL1), comme recopie de l'écran principal du portable (LVDS) :
$ xrandr --output LVDS1 --mode 1600x900 --output VIRTUAL1 --mode VIRTUAL1.637-1920x1080 --same-as LVDS1
Note : Dans certains cas, la résolution proposée par défaut pour la sortie virtuelle, n'est pas la résolution maximale. On peut contourner le problème : la résolution maximale de la sortie VIRTUAL1 (première ligne de la liste fournie par xrandr pour VIRTUAL1) est
$ mode_max=$(xrandr |grep "VIRTUAL1\." |awk '{print $1}'|head -1)
Cette valeur est utilisable pour automatiser le lancement d'un périphérique HDMI dont on ignore à priori la résolution maximale :
$ xrandr --output VIRTUAL1 --mode $mode_max --same-as LVDS1
$ optirun glxspheres64
Pour désactiver la sortie virtuelle, tuer le process intel-virtual-output :
$ pkill -e intel-virtual-output
intel-virtual-o killed (pid 4788)
En cas de problème, les logs générés par bumblebee dans /var/log/Xorg.8.log
peuvent fournir des informations intéressantes. Il peut également être nécessaire de redémarrer le PC pour établir la première connexion.