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

13

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:

  • utiliser un deuxième écran - connecté via DVI / fenêtre d' affichage - au travail (VGA est flou)
  • obtenir des performances de batterie modérées à bonnes en voyage (2 heures)

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

  1. désactiver Optimus, utiliser exclusivement des graphiques internes
  2. désactiver Optimus, utiliser exclusivement nvidia
  3. activer Optimus, utiliser bumblebee ( page d'accueil ) / ironhide

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

(2) n'ont pas vraiment essayé jusqu'à présent, juste une installation de test rapide qui a démarré sur un écran noir après avoir ajouté les pilotes nvidia :-(

(3) a suivi ce blog , a utilisé des bourdons au lieu de peau de fer. Bumblebee a fonctionné (je peux voir des FPS impressionnants sur glxgears), mais je n'ai pas réussi à reconnaître le deuxième écran . Je me sentais également perdu dans l'enfer nvidia-driver-hell et je n'avais aucune chance d'exécuter nvidia-xconfig, simplement parce qu'il n'était pas installé. Vous ne savez pas si un deuxième écran est censé être reconnu hors de la boîte? Dois-je en 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? Quel chemin suivre et quelles sont les prochaines étapes?

Tout indice est le bienvenu :-)

Mise à jour : Merci à tous ceux qui ont répondu. Je migrerai mon environnement de travail vers une installation "discrète", et utiliserai "optimus / bumblebee" comme projet de jeu parallèle et verrai jusqu'où j'arrive ... Je posterai de futures questions dans de nouveaux threads.

jan groth
la source

Réponses:

5

J'ai un Thinkpad W520 et je me suis beaucoup amusé avec ça. Je ne sais pas combien les W520 et 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 de batterie en utilisant la carte nvidia avec des pilotes propriétaires à plein temps. Ce sera aussi probablement 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 pour la carte du T420 fonctionnent de la même manière que pour le W520, ils sous-cadenceront automatiquement la carte lorsqu'elle ne sera pas pleinement utilisée (ils l'appellent "Power Mizer"), donc la durée de vie de votre batterie ne sera pas trop horrible. Honnêtement, je n'obtiens qu'une augmentation de 25 ou 30% de la durée de vie de la batterie en éteignant 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 avant.

Lorsque j'ai installé et désinstallé Bumblebee, j'ai eu un peu de mal à faire fonctionner à nouveau les pilotes propriétaires nvidia. Voici quelques éléments à examiner: (a) Le W520 dispose d'options BIOS liées au schéma graphique utilisé. Je ne sais pas 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" dans ubuntu pour qu'il utilise les pilotes propriétaires.

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

Zach
la source
... c'est vraiment utile, merci d'avoir répondu!
jan groth
Après avoir lu les autres commentaires sur ce fil, il apparaît que le T420 n'est pas configuré de la même manière que le W520 - la carte intégrée est connectée à la sortie VGA (contrairement au W520 - cela explique aussi pourquoi le T420 est capable de prenant en charge 3 moniteurs externes tandis que le W520 ne peut en prendre en charge que 2).
Zach
La question est donc de savoir quels modes BIOS sont disponibles sur le T420? D'après @ John's post, il semble qu'il existe au moins un mode Optimus et un mode discret. Si vous poursuivez l'option (2), vous voulez vous assurer que vous êtes en mode discret comme @John. Si vous êtes en mode Optimus, l'affichage interne du Thinkpad et l'affichage numérique externe sont probablement contrôlés par des cartes graphiques différentes et vous devrez faire quelques essais avec votre xorg.conf pour que cela fonctionne.
Zach
@Zach: Merci pour le blog. J'ai volé sans vergogne à la fois sa version de suivi et la réécriture de Sagar Karandikar , et j'ai ajouté quelques mises à jour pertinentes à la version la plus récente d'Ubuntu dans ma réponse .
krlmlr
7

Ubuntu 14.10 et versions ultérieures: c'est beaucoup, beaucoup plus simple là-bas. Veuillez voir cette réponse et mon commentaire ci-dessous.

Remarque : cela 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 sur Ubuntu 13.04, avec Optimus ("Switchable graphics") activé (option 3 dans votre liste). Les moniteurs sont connectés via l'interface DVI, l'un d'eux est tourné. Contrairement à d'autres solutions, tous les moniteurs sont connectés au même gestionnaire de fenêtres, de sorte que les fenêtres peuvent être déplacées librement entre les moniteurs. Cela permet d'atteindre une durée de vie de la batterie améliorée en cas de déconnexion et d'utiliser des moniteurs externes s'ils sont connectés.

L'idée clé ici est:

  • L'adaptateur graphique interne est responsable de la gestion de l'image (bitmap) réellement affichée
  • Par défaut, tout est rendu sur l'adaptateur 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, l'adaptateur graphique interne fournit un affichage "virtuel"
  • La sortie vers les moniteurs externes se fait à l'aide d'un deuxième serveur X, le contenu des écrans "virtuels" est constamment copié sur le deuxième serveur X

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

Jusqu'à présent, je n'ai remarqué aucune dégradation des performances.

Instructions

Vous devez effectuer les opérations suivantes:

  • Installer Bumblebee à partir d'un PPA
  • Créez et installez un pilote vidéo Intel personnalisé
  • Téléchargez, compilez et enfin installez un petit programme
  • Modifier 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 (sudo ). Des instructions détaillées sont données ci-dessous.

Installer Bumblebee

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

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

N'essayez pas d' exécuter Bumblebee avec un nouveau pilote uniquement? . D'après mon expérience, cela ne fonctionne pas, du moins pas dans cette configuration.

Validation

Vous devriez pouvoir courir optirun glxgears.

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

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

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: Créez et installez votre propre package

Choisissez le patch le plus récent 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, c'était 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 ( +virtualsuffixe) et la version originale d'Ubuntu.

Nécessaire pour 13.04, pour les deux options

Ajoutez les éléments suivants à 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 doit répertorier deux écrans virtuels supplémentaires.

Télécharger et créer un screenclone

Obtenez le fork de screenclone de puetzk et ses dépendances, et 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. (Il ne fonctionnera pas encore, cependant.)

Éditer xorg.conf.nvidia

  • Ouvrez le fichier /etc/bumblebee/xorg.conf.nvidiadans un éditeur de texte, en tant que root
  • Mettez en commentaire ou supprimez les lignes qui lisent UseEDIDouUseDisplayDevice
  • Dans le Section "ServerLayout", ajoutez une entréeScreen "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 paysage connecté au premier port DVI de la station d'accueil et un moniteur portrait connecté au deuxième 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 comment la rotation de l'affichage doit être définie deux fois. Vous pouvez omettre la deuxième invocation de xrandrsi aucune rotation n'est souhaitée (et, bien sûr, --rotate leftdans la première invocation).

En terminant screencloneavec Ctrl + C (qui a été remis au premier plan en utilisant fg), l'adaptateur graphique discret est désactivé. Vous pouvez le vérifier avec cat /proc/acpi/bbswitch. Pourtant, 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 bashscript pour automatiser le démarrage et l'arrêt des écrans externes. Ce script configurera les affichages externes au démarrage et basculera vers l'affichage de l'ordinateur portable uniquement à 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
    
  • Autre option: Ma collection de scriptlets contient deux scripts, extmon-startet extmon-stop, qui activent et désactivent les deuxième et troisième moniteur. Modifiez le extmon-startscript en fonction de votre configuration.

Les références

Ma réponse s'inspire largement des ressources suivantes:

krlmlr
la source
Cela fonctionne très bien pour moi, merci. Avez-vous des problèmes avec beaucoup de décalage lors de l'utilisation de bureaux virtuels et de Compiz avec cette solution?
damon
@blackrobot: J'utilise Gnome Shell, il y a un très léger décalage mais cela ne me dérange pas.
krlmlr
@krlmlr: une chance d'obtenir cette même configuration le 13.10?
flx
@flx: En 13.10, les CRTC "virtuels" sont intégrés dans le xorg-xserver-video-intelpilote de stock , pas besoin d'utiliser mon PPA ou le patch. Pas besoin non plus de modifier xorg.conf, les CRTC "virtuels" sont créés à la demande. Le reste devrait être similaire. Il existe maintenant même un outil qui remplace screenclone, il s'appelle intel-virtual-outputet s'intégrera plus facilement à la configuration d'affichage de votre bureau. Je ferai un résumé une fois que j'aurai ma configuration à trois têtes avec rotation pour fonctionner correctement.
krlmlr
1
@flx: Vous devez ajouter un mode ( xrandr --newmode; l' cvtoutil aide à calculer la modélisation), et l'assigner à l'affichage virtuel ( xrandr --addmode). Le mode doit correspondre à celui de votre affichage réel. Vérifiez si un deuxième affichage virtuel est créé automatiquement. C'est ce que fait l' intel-virtual-outputoutil en lui-même, et il semble que les derniers problèmes aient été corrigés ou soient sur le point de l'être.
krlmlr
2

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

  1. Moniteur sombre
  2. nvidia désactivé avec bourdon / bbswith
  3. et réglage supplémentaire avec pm-utils

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

(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.

Lâche anonyme
la source
1
Merci de répondre. Ai-je bien compris que vous n'utilisiez pas un deuxième écran (DVI)? Pour être honnête: je trouve cela incroyablement compliqué de résoudre le problème que vous avez lié - j'essaierai certainement, mais cela prendra des heures avant d'avoir une légère idée de ce que je suis censé changer (et pourquoi). En fait, c'est mon ordinateur portable pour le travail, et je veux juste qu'il fonctionne. J'espérais qu'une tâche comme la connexion d'un deuxième écran ne me ferait pas courir à travers les problèmes ouverts d'un logiciel dont je n'ai même pas entendu parler il y a une semaine ... :-(
jan groth
C'est vraiment simple comme dans le problème github, il suffit de supprimer les lignes (newline) Option "UseEDID" "false" (newline) Option "ConnectedMonitor" "DFP" (newline) de /etc/bumblebee/xorg.conf.nvidia et bumblebee avec produire une sortie sur le port d'affichage. Vous obtiendrez une image vierge au début. Vous pouvez y obtenir par exemple xterm avec export DISPLAY =: 8.0 (newline) xterm. (wtf en appuyant sur entrée ici soumet le commentaire au lieu de créer une nouvelle ligne)
Coward anonyme
2

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 en utilisant les ports DVI de la station d'accueil.

Je viens de désactiver optimus et de le configurer pour toujours utiliser 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 vie de la pâte de cette façon (sans aucune autre modification pour permettre une plus grande autonomie). Le principal problème que j'ai est qu'il ne bascule pas automatiquement sur un moniteur lorsqu'il est redémarré loin de la station d'accueil ou retiré de la station d'accueil. Je n'ai cependant pas eu le temps de me pencher sur cette question.

J'essaierai Bumble Bee plus tard cette semaine pour voir si je peux le faire fonctionner. Je vais essayer de me rappeler de poster ici si je peux le faire fonctionner.

John
la source
2

J'ai le même problème. J'ai fait quelques recherches et l'ai partiellement résolu. Je travaille toujours sur une solution complète.

Le matériel: Thinkpad T420 avec Nvidia 4200M + station d'accueil Thinkpad graphique Intel HD 3000.

Le symptôme: les T420 ne peuvent pas reconnaître l'affichage externe se connectant à un port DVI de la station d'accueil. Il peut reconnaître l'affichage externe via le port VGA sur la station d'accueil. Cependant, la qualité est mauvaise.

La cause première: 1. Le T420 a une carte Nvidia connectée au port DVI tandis qu'une carte Intel au port VGA sur 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. Mettez les T420 sur la station d'accueil et connectez l'écran externe au port DVI. 1. Allez dans le BIOS, trouvez "Display", changez la configuration en "Discrete Card" et "Disable Nvidia Optimus". Désormais, le T420 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 d'affichage du serveur X", cliquez sur "Détecter les affichages". Vous pourrez maintenant voir l'affichage externe. 5. Dans la même page, changez la configuration en "TwinView", la résolution "Auto" ou la résolution native des T420, disons 1600x900. 6. Cliquez sur "Appliquer", vous pourrez voir le bureau d'affichage externe. 7. Cliquez sur "Enregistrer dans le fichier de configuration X".

[Mise à jour]

À l'aide de disper, je peux basculer manuellement l'affichage du T420 et l'affichage externe. Ce n'est toujours pas la meilleure solution, mais je pense que c'est assez bon pour moi.

Veuillez donc essayer la combinaison Nvidia graphiques discrets + disper.

New Gumin
la source
... le problème avec la carte discrète est qu'elle décharge la batterie très rapidement ...
jan groth
Vous devriez pouvoir utiliser le port d'affichage en mode nvidia optimus en utilisant la méthode décrite ici: zachstechnotes.blogspot.com/2012/04/post-title.html De cette façon, vous pouvez obtenir une bonne autonomie de la batterie et utiliser le moniteur externe sur le port d'affichage (vous effectuerez un rendu avec la carte Intel, donc la qualité peut ne pas être aussi bonne que vous le souhaitez
Zach
1

La sortie VGA sur mon T520 fonctionne très bien (pas floue) en utilisant la carte graphique intégrée (paramètre BIOS Intel), mais je dois régler le moniteur 1920x1200 pour qu'il affiche uniquement une largeur de 1600 pixels, donc j'obtiens des bandes noires des deux côtés. Sans ce paramètre, le moniteur étend les 1600 px sur l'ensemble de l'écran 1920 et oui, les choses semblent floues.

J'ai posé une question similaire il y a quelques jours et je reste confus par ces réponses. Il semble que @Anonymous Coward utilise uniquement un moniteur externe, mais je (et je crois que l'OP) souhaite pouvoir exécuter l'écran du portable (sur Intel) et un moniteur externe via DisplayPort / DVI (sur NVIDIA). Je pense donc qu'Optimus / Bumblebee peut être nécessaire.

Si je découvre ce problème d'affichage, je publierai certainement mes résultats; veuillez faire de même si vous atteignez la ligne d'arrivée en premier.

OpenPrivacy
la source
1
Merci de répondre! Si je réduis la résolution de mon moniteur externe à 1600x1200, l'affichage devient encore pire ... BTW, je blâme le fabricant de l'affichage pour le flou - j'ai entendu quelques histoires selon lesquelles les sources d'entrée analogiques peuvent être assez bas de nos jours, parce que tout le monde utilise des connexions numériques. Oh, et je garderai certainement ce billet à jour.
jan groth