Depuis 2002, je suis un grand admirateur des ordinateurs portables Lenovo ThinkPad et pour la première fois depuis 15 ans, j’ai opté pour une marque différente de portable. En fait, c’est mon récent penchant pour les jeux vidéo qui ont fait pencher la balance vers une marque différente. Les portables Lenovo, bien que robustes et performants, ne sont pas livrés avec de bonnes cartes graphiques. J’ai donc porté mon choix vers un modèle ayant une carte graphique récente et performante. Soit un Gigabyte P55W v7.

En installant Debian Linux sur ce portable, j’ai rencontré plusieurs problématiques que je vais détailler dans différents articles. Pour commencer, je vais aborder le sujet de la carte graphique Nvidia Optimus.

Pour ceux qui ne connaissent pas la technologie Optimus et qui veulent en apprendre davantage, je vous invite à lire la page suivante. Sachez que le modèle P55w possède donc deux cartes graphiques. L’une étant une carte graphique Intel intégrée et l’autre, une carte graphique Nvidia dédiée. Sachez aussi que Nvidia Optimus n’est pas une technologie très bien supportée dans Linux. Pour toute sorte de raisons techniques qui dépassent de loin le sujet de cet article, cette technologie rend les choses beaucoup plus compliquées qu’il ne devrait être nécessaire.

Une fois l’installation de Debian complétée, votre système utilisera la carte graphique Intel intégrée pour effectuer tout le travail. Pour obtenir plus de performance, il faudra alors se salir les mains et reconfigurer le tout.

Voici les différents choix afin de rendre fonctionnel un portable avec Optimus.

  1. Désactiver la carte graphique Nvidia dédiée. Je n’ai pas choisi cette solution pour la raison évidente que j’ai acheté ce portable pour les jeux vidéo !
  2. Utiliser l’application Bumblebee qui na pas été mise à jour depuis 2013. Je n’ai pas choisi cette solution, car elle ne me permet pas de brancher dynamiquement des moniteurs externes.
  3. Utiliser le pilote PRIME qui fonctionne seulement avec les pilotes open-source. Je n’ai pas choisi cette solution, car les pilotes open-source ne performent pas aussi bien que les pilotes propriétaires.
  4. Activer la carte graphique Nvidia en permanence. J’ai opté pour cette solution, même si l’autonomie de la batterie ne sera pas optimale. Au moins, cela permet d’obtenir une stabilité du système.

Pour mettre en place cette dernière solution, j’ai suivi les recommandations dans la documentation de Nvidia.

D’abord, on installe les pilotes propriétaires de la carte graphique nvidia:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install nvidia-driver libgl1-nvidia-glx:i386

Il faut ensuite créer un nouveau fichier /etc/X11/xorg.conf avec le contenu suivant. Celui-ci permet de configurer les deux cartes graphiques pour utiliser la carte Nvidia en permanence puis envoyer le résultat à la carte graphique Intel qui se chargera de l’afficher sur le moniteur.

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "nvidia"
    Inactive "intel"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:01:00:0"
    Option "Coolbits" "28"
    Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2233; PowerMizerDefault=0x3; PowerMizerDefaultAC=0x1"
EndSection

Section "Screen"
    Identifier "nvidia"
    Device "nvidia"
    Option "AllowEmptyInitialConfiguration"
EndSection

Section "Device"
    Identifier "intel"
    Driver "modesetting"
EndSection

Section "Screen"
    Identifier "intel"
    Device "intel"
EndSection

Ensuite, il faut créer deux fichiers /usr/share/gdm/greeter/autostart/optimus.desktop et /etc/xdg/autostart/optimus.desktop avec le contenu suivant:

[Desktop Entry]
Type=Application
Name=Optimus
Exec=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto"
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer

Pour finir, on doit redémarrer le portable pour prendre en charge les modifications. Si tout va bien, vous devriez être en mesure de vous connecter à votre session sans problème.

Il est possible de vérifier si votre configuration est bonne en exécutant la commande suivante:

glxinfo | grep vendor

Qui devrait produire le résultat suivant:

server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation

Autre lecture:

https://wiki.archlinux.org/index.php/NVIDIA_Optimus

https://wiki.debian.org/Bumblebee