web-dev-qa-db-fra.com

Comment configurer un deuxième écran via DVI / viewport avec un Lenovo T420S?

Mon Lenovo T420S possède une carte graphique discrète avec la technologie nvidia optimus. Ce que j'essaie essentiellement de réaliser est le suivant:

  • utilisez un deuxième écran - connecté via DVI/viewport - au travail (le VGA est flou)
  • atteindre une performance de batterie modérée à bonne en voyage (2 heures)

Pour autant que je sache, j'ai les options suivantes:

  1. désactiver Optimus, utiliser exclusivement les graphiques internes
  2. désactiver Optimus, utiliser exclusivement nvidia
  3. activez Optimus, utilisez bumblebee ( homepage )/ironhide

(1) disqualifie comme je l'ai lu (et expérimenté) que DVI/viewport est techniquement inutilisable via des graphiques internes

(2) Je n'ai pas vraiment essayé jusqu'ici, juste un rapide test-installer qui a démarré sur un écran noir après avoir ajouté les pilotes nvidia :

(3) suivit --- (ce blog , utilisa bourdon au lieu de cuir. Bumblebee a fonctionné (je peux voir un FPS impressionnant sur glxgears), mais je n'ai pas réussi à faire reconnaître le deuxième affichage . Je me sentais également perdu dans l'enfer de nvidia-driver et n'avais aucune chance d'exécuter nvidia-xconfig, simplement parce qu'il n'était pas installé. Aucune idée si un deuxième écran est censé être reconnu hors de la boîte? Dois-je installer plus? Dois-je jouer avec mon xorg.conf? Beaucoup de questions, peu de réponses.

Alors, que puis-je faire pour atteindre mes objectifs? Quelle voie suivre et quelles sont les prochaines étapes?

Tout indice est le bienvenu :-)

Mise à jour : Merci à tous ceux qui ont répondu. Je vais migrer mon environnement de travail vers une installation "discrète" et utiliser "Optimus/bumblebee" comme projet de jeu en parallèle pour voir jusqu'où je vais ... Je posterai les prochaines questions dans de nouvelles discussions.

13
jan groth

J'ai un Thinkpad W520 et ai beaucoup déconné avec cela. Je ne suis pas sûr de ce que le W520 et le T420S ont en commun, mais j’ai écrit un article de blog ici décrivant la situation dans son ensemble et donnant quelques suggestions.

Vous devriez pouvoir obtenir 2 heures d'autonomie avec la carte nvidia avec des pilotes propriétaires à temps plein. Ce sera probablement aussi l’option qui implique le moins de tracas lors de l’ajout d’un écran externe (le programme "disper" est très utile pour cela). Si les pilotes propriétaires nvidia de la carte dans les T420 fonctionnent de la même manière que pour le W520, ils asserviront automatiquement la carte si elle n’est pas utilisée pleinement (ils appellent cela "Power Mizer"), de sorte que la vie de votre batterie ne sera pas trop longue. horrible. Honnêtement, je n'ai qu'une augmentation de 25 ou 30% de la durée de vie de la batterie en désactivant la carte nvidia. De plus, je pense qu'avec Bumblebee installé, vous ne pourrez peut-être pas utiliser votre moniteur externe car la carte nvidia exécute déjà un serveur X "sous le capot". En résumé, je recommanderais de poursuivre l’option (2) plus loin. Espérons que, une fois les pilotes propriétaires installés et fonctionnels, X détectera tout automatiquement et vous n'aurez plus à vous soucier de votre fichier xorg.conf.

Lorsque j'ai installé et désinstallé Bumblebee, j'ai eu un peu de difficulté à faire fonctionner à nouveau les pilotes propriétaires nvidia. Voici quelques points à examiner: (a) Le W520 dispose d’options du BIOS associées au schéma graphique utilisé. Je ne sais pas exactement quelles sont les options du T420, mais si vous souhaitez utiliser les graphiques nvidia sur votre écran Thinkpad, vous devez probablement être en mode "discret". (b) Vous devrez peut-être jouer avec le programme "jockey" d'ubuntu pour le faire utiliser les pilotes propriétaires.

Bonne chance! J'espère que cela vous a aidé.

5
Zach

Ubuntu 14.10 et plus tard: C’est beaucoup, beaucoup plus simple. S'il vous plaît voir cette réponse et mon commentaire ci-dessous.

Note : Ceci ne fonctionne que dans Ubuntu 13.04. Il y a quelques différences dans 13.10.

J'ai réussi à connecter deux moniteurs externes (en plus du panneau intégré) à mon ThinkPad T430 sous Ubuntu 13.04, avec Optimus ("Graphiques commutables") activé (option 3 de votre liste). Les moniteurs sont connectés via l'interface DVI, l'un d'entre eux est pivoté. Contrairement aux autres solutions, tous les moniteurs sont attachés au même gestionnaire de fenêtres, ce qui permet de déplacer librement les fenêtres entre les moniteurs. Cela permet d’améliorer la durée de vie de la batterie s’il est déconnecté et d’utiliser des moniteurs externes s’il est connecté.

L'idée clé est la suivante:

  • L’adaptateur graphique interne est responsable de la gestion de l’image (bitmap) réellement affichée
  • Par défaut, tout est rendu sur la carte graphique interne.
  • Les applications accélérées par GPU utilisent l'adaptateur graphique discret, la sortie est copiée sur l'adaptateur graphique interne.
  • Pour chaque moniteur externe, la carte graphique interne fournit un affichage "virtuel"
  • La sortie vers les moniteurs externes se produit via un deuxième serveur X, le contenu des écrans "virtuels" est constamment copié sur le deuxième serveur X

Le principal avantage par rapport aux autres solutions est que tous les écrans font (apparemment) partie de la même session X, ce qui vous permet de déplacer librement les fenêtres entre les écrans.

Jusqu'à présent, je n'ai remarqué aucune pénalité de performance.

Instructions

Vous devez faire ce qui suit:

  • Installer Bumblebee à partir d'un PPA
  • Construire et installer un pilote vidéo Intel personnalisé
  • Télécharger, compiler et enfin installer un petit programme
  • Editer deux fichiers de configuration
  • Redémarrez plusieurs fois

Pour la plupart des actions, vous aurez besoin d’un terminal, d’un éditeur de texte et d’un accès root (Sudoname__). Des instructions détaillées sont données ci-dessous.

Installer Bumblebee

Suivez la section "Configuration de base" de la instructions . Exécutez en tant que root, la dernière commande lance le redémarrage:

add-apt-repository ppa:bumblebee/stable
apt-get update
apt-get install bumblebee virtualgl linux-headers-generic
reboot

N'essayez pas de Exécuter bumblebee avec le nouveau pilote seulement? . D'après mon expérience, cela ne fonctionne pas, du moins pas dans cette configuration.

Validation

Vous devriez pouvoir exécuter optirun glxgears.

Installer une version corrigée de xserver-xorg-video-intel

Option 1: Installer à partir de mon PPA (actuellement, Ubuntu 13.04 uniquement)

Exécutez ce qui suit en tant que root:

add-apt-repository ppa:krlmlr/ppa
apt-get update
apt-get install xserver-xorg-video-intel

Option 2: Construisez et installez votre propre paquet

Choisissez le plus récent patch pour xserver-xorg-video-intel. Cliquez sur le fichier, cliquez sur le bouton "Raw", copiez l'URL dans le navigateur. Au moment de la rédaction de ce document, il s'agissait de https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch .

Sudo apt-get build-dep xserver-xorg-video-intel
cd ~
apt-get source xserver-xorg-video-intel
cd xserver-xorg-video-intel
# replace the URL below with the one you have noted, if necessary
wget https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch
patch -p1 < *.patch
# The next command will ask for a change log message. Supply something meaningful,
# this will later allow you to distinguish your patched package from the distribution's.
dch -l+virtual
dpkg-buildpackage -b
cd ..
Sudo dpkg --install xserver-xorg-video-intel_*.deb

Validation (1), pour les deux options

La commande

apt-cache policy xserver-xorg-video-intel

devrait montrer la version corrigée (suffixe +virtual) et la version originale d’Ubuntu.

Nécessaire pour 13.04, pour les deux options

Ajoutez ce qui suit à votre /etc/X11/xorg.conf, créez si nécessaire:

Section "Device"
    Identifier "intel"
    Driver "intel"
    Option "AccelMethod" "uxa"
    Option "Virtuals" "2"
EndSection

Validation (2), pour les deux options

Après un redémarrage, exécutez xrandrdans un terminal. La sortie devrait répertorier deux écrans virtuels supplémentaires.

Téléchargez et construisez screenclone

Récupérez le fork de puetzk de screenclone et ses dépendances, puis compilez-le.

Sudo apt-get install libxcursor-dev libxdamage-dev libxinerama-dev libxtst-dev git build-essential
cd ~
git clone git://github.com/puetzk/hybrid-screenclone.git
cd hybrid-screenclone
make

Validation

Le fichier screencloneexiste et est exécutable. (Cependant, il ne fonctionnera pas encore.)

Éditer xorg.conf.nvidia

  • Ouvrez le fichier /etc/bumblebee/xorg.conf.nvidia dans un éditeur de texte, en tant que root.
  • Mettez en commentaire ou supprimez les lignes qui se lisent UseEDIDou UseDisplayDevicename__
  • Dans le Section "ServerLayout", ajoutez une entrée Screen "Screen0"
  • Au bas du fichier, ajoutez ce qui suit:

    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        DefaultDepth    24
        SubSection     "Display"
        Depth       24
        EndSubSection
    EndSection
    
  • Redémarrer

Essai

Ma configuration suppose un moniteur de paysage connecté au premier port DVI de la station d'accueil et un moniteur portrait au second port DVI. Exécutez les commandes suivantes dans un terminal à partir du répertoire où se trouve screenclone , adaptez-les si nécessaire.

xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
./screenclone -b -x 1:0 -x 2:1 &
sleep 1
xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
fg

Notez que la rotation de l'affichage doit être définie deux fois. Vous pouvez omettre le deuxième appel de xrandrsi aucune rotation n'est souhaitée (et, bien entendu, le --rotate left dans le premier appel).

En mettant fin à screencloneavec Ctrl + C (qui a été placé de nouveau au premier plan à l'aide de fgname__), l'adaptateur graphique discret est désactivé. Vous pouvez le vérifier avec cat /proc/acpi/bbswitch. Néanmoins, l’espace d’écran est réservé aux deux moniteurs maintenant déconnectés. Pour revenir à l'écran de l'ordinateur portable uniquement, utilisez

xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off

Nettoyer

  • Copiez screenclonedans un répertoire qui se trouve dans PATH(par exemple, /usr/local/bin)

  • Créez un script bashpour automatiser le démarrage et l'arrêt des écrans externes. Ce script configure les écrans externes au démarrage et bascule sur l’écran de l’ordinateur portable à la sortie (par exemple, en appuyant sur Ctrl + C).

    #!/bin/bash
    set -m
    xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
    trap "xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off" EXIT
    screenclone -b -x 1:0 -x 2:1 &
    sleep 1
    xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
    fg
    
  • L'option alternative: Mon collection de scriptlets contient deux scripts, extmon-start et extmon-stop, qui activent et désactivent les deuxième et troisième moniteurs. Modifiez le script extmon-start en fonction de votre configuration.

Références

Ma réponse s’appuie largement sur les ressources suivantes:

7
krlmlr

J'utilise un T420 au travail avec une station d'accueil de type 4438. Je peux utiliser deux moniteurs à écran large (sans le moniteur principal) ou 1 moniteur à écran large avec le moniteur principal à l'aide des ports DVI de la station d'accueil.

Je viens de désactiver Optimus et de le configurer pour qu'il utilise toujours la carte NVIDIA. Ensuite, j'ai exécuté nvidia-xconfig et utilisé les paramètres nvidia pour configurer les deux moniteurs, enregistré les paramètres dans le fichier xorg.conf et redémarré la machine.

Je peux obtenir un peu plus de 2 heures de la vie de la pâte de cette façon (sans aucune autre modification pour permettre plus de vie de la batterie). Le principal problème que j'ai est qu'il ne bascule pas automatiquement sur un moniteur lorsqu'il est redémarré en dehors de la station d'accueil ou retiré de la station d'accueil. Je n'ai cependant pas eu le temps de me renseigner.

Je vais essayer Bumble Bee plus tard cette semaine pour voir si je peux le faire fonctionner. Je vais essayer de ne pas oublier de poster ici si je peux le faire fonctionner.

2
John

J'ai le même problème. J'ai fait des recherches et je les ai partiellement résolues. Je travaille toujours sur une solution complète.

Le matériel: Thinkpad T420s avec Nvidia 4200M + dock graphique Intel HD 3000 Thinkpad.

Le symptôme: Les T420 ne peuvent pas reconnaître l’affichage externe qui se connecte à n’importe quel port DVI du dock. Il peut reconnaître l'affichage externe via le port VGA de la station d'accueil. Cependant, la qualité est médiocre.

La cause première: 1. La carte Nvidia est connectée au port DVI du système T420s, tandis que la carte Intel au port VGA de la station d'accueil. 2. Contrairement à Win 7, Ubuntu ne peut pas basculer entre la carte Nvidia et la carte Intel. Par défaut, seule la carte Intel est utilisée.

La solution: 0. Placez les T420 sur la station d'accueil et connectez l'écran externe au port DVI. 1. Allez dans le BIOS, recherchez "Affichage", changez la configuration en "Carte discrète" et "Désactiver Nvidia Optimus". Maintenant, le T420s est obligé d'utiliser la carte Nvidia. 2. Téléchargez et installez le pilote Nvidia pour Linux. Google les instructions détaillées. 3. Après l'installation, effectuez "Sudo nvidia-settings". 4. Dans la fenêtre contextuelle "Configuration du serveur X", cliquez sur "Détecter les affichages". Vous pourrez voir l'écran externe maintenant. 5. Dans la même page, définissez Configuration sur "TwinView", Résolution "Auto" ou la résolution native du T420, par exemple 1600x900. 6. Cliquez sur "Appliquer", vous pourrez voir le bureau d'affichage externe. 7. Cliquez sur "Enregistrer dans le fichier de configuration X". Un nouveau fichier /etc/X11/xorg.conf sera créé.

[Mettre à jour]

En utilisant disper, je peux basculer l’écran du T420 et l’écran externe manuellement. Ce n'est toujours pas la meilleure solution, mais je pense que ça me suffit.

Essayez donc la combinaison graphique discrète + disper de Nvidia.

2
New Gumin

Je ne connais pas le T420S mais mon T420 peut faire jusqu'à 9 heures avec

  1. Surveiller l'obscurité
  2. nvidia désactivé avec bourdon/bbswith
  3. et accord supplémentaire avec pm-utils

Et oui, c'est la batterie par défaut. Donc, vous devriez facilement avoir 2 heures, alors:

(2) Dans /etc/X11/xorg.conf, essayez avec l'option "ConnectedMonitor" "DFP-0" pour le pilote nvidia.

(3) Pour utiliser votre deuxième écran, vous avez besoin d'un bourdon modifié xorg.conf. Voir https://github.com/Bumblebee-Project/Bumblebee/issues/77 pour plus de détails.

2
Anonymous Coward

La sortie VGA sur mon T520 fonctionne très bien (pas floue) en utilisant Integrated Graphics (réglage du BIOS Intel) mais je dois régler le moniteur 1920x1200 pour qu’il n’affiche que 1 600 pixels de large afin d’obtenir des bandes noires des deux côtés. Sans ce réglage, le moniteur étend les 1600 pixels sur l’ensemble de l’écran de 1920 et, bien sûr, les images sont floues.

J'ai demandé un question similaire il y a quelques jours et reste confus par ces réponses. Il semblerait que @Anonymous Coward n’exécute qu’un moniteur externe, mais je (et je crois que l’opérateur) souhaite pouvoir faire fonctionner l’écran de l’ordinateur portable (sur Intel) et un moniteur externe via DisplayPort/DVI (sur nvidia). Je pense donc que Optimus/Bumblebee peut être nécessaire.

Si je comprends ce problème d'affichage, je posterai certainement mes découvertes; veuillez faire de même si vous atteignez d'abord la ligne d'arrivée.

1
OpenPrivacy