¿Cómo configuro una segunda pantalla a través de DVI / viewport con un Lenovo T420S?

13

Mi Lenovo T420S tiene una tarjeta gráfica discreta con tecnología nvidia optimus. Lo que básicamente estoy tratando de lograr es lo siguiente:

  • use una segunda pantalla, conectada a través de DVI / viewport , en el trabajo (VGA está borrosa)
  • lograr un rendimiento de batería moderado a bueno mientras viaja (2 horas)

Por lo que descubrí, tengo las siguientes opciones:

  1. deshabilite Optimus, use gráficos internos exclusivamente
  2. deshabilite Optimus, use nvidia exclusivamente
  3. habilite Optimus, use bumblebee ( página de inicio ) / ironhide

(1) descalifica a medida que leo (y tengo experiencia) que DVI / viewport técnicamente no se puede usar a través de gráficos internos

(2) realmente no lo he intentado hasta ahora, solo una instalación de prueba rápida que se inició en una pantalla negra después de agregar los controladores nvidia :-(

(3) siguió este blog , usó abejorros en lugar de ironhide. Bumblebee funcionó (puedo ver impresionantes FPS en glxgears), pero no pude reconocer la segunda pantalla . También me sentí perdido en el nvidia-driver-hell y no tuve oportunidad de ejecutar nvidia-xconfig, simplemente porque no estaba instalado. ¿No tiene idea de si se supone que una segunda pantalla debe reconocerse de fábrica? ¿Necesito instalar más? ¿Necesito jugar con mi xorg.conf? Muchas preguntas, pocas respuestas.

Entonces, ¿qué puedo hacer para lograr mis objetivos? ¿Qué camino seguir y cuáles son los próximos pasos?

Cualquier pista es bienvenida :-)

Actualización : Gracias a todos los que respondieron. Migraré mi entorno de trabajo a una instalación "discreta", y usaré "optimus / bumblebee" como un proyecto de juego paralelo y veré qué tan lejos llego ... Publicaré futuras preguntas en nuevos hilos.

Jan Groth
fuente

Respuestas:

5

Tengo un Thinkpad W520 y he estado jugando mucho con esto. No estoy seguro de cuánto tienen en común el W520 y el T420S, pero he escrito una publicación de blog aquí que describe la situación general y da algunas sugerencias.

Debería poder obtener 2 horas de duración de la batería utilizando la tarjeta nvidia con controladores propietarios a tiempo completo. Esa también será probablemente la opción que implique la menor molestia al agregar una pantalla externa (el programa "disper" es muy útil para esto). Si los controladores propietarios de nvidia para la tarjeta en el T420s funcionan igual que para el W520, automáticamente desacelerarán la tarjeta cuando no esté en uso completo (lo llaman "Power Mizer"), por lo que la duración de la batería no será demasiado horrible. Honestamente, solo obtengo un aumento del 25 o 30% en la duración de la batería apagando la tarjeta nvidia. Además, creo que con Bumblebee instalado, es posible que no pueda usar su monitor externo porque la tarjeta nvidia ya está ejecutando un servidor X "bajo el capó". En resumen, recomendaría continuar con la opción (2).

Cuando instalé y desinstalé Bumblebee, tuve algunos problemas para que los controladores propietarios de nvidia volvieran a funcionar. Aquí hay algunas cosas a tener en cuenta: (a) El W520 tiene opciones de BIOS relacionadas con el esquema de gráficos que está en uso. No estoy seguro de cuáles son las opciones de T420, pero si desea utilizar los gráficos nvidia en su pantalla Thinkpad, probablemente tenga que estar en modo "discreto". (b) Puede que tenga que jugar con el programa "jockey" en ubuntu para que use los controladores propietarios.

¡Buena suerte! Espero que esto haya sido de alguna ayuda.

Zach
fuente
... definitivamente es de ayuda, ¡gracias por responder!
Jan Groth
Después de leer los otros comentarios en este hilo, parece que el T420 no está configurado de la misma manera que el W520: la tarjeta integrada está conectada a la salida VGA (a diferencia del W520, esto también explica por qué el T420 es capaz de admite 3 monitores externos, mientras que el W520 solo es capaz de admitir 2).
Zach
Entonces, la pregunta es qué modos de BIOS están disponibles en el T420. De la publicación de @ John, parece que hay al menos un modo Optimus y un modo discreto. Si está buscando la opción (2), quiere asegurarse de estar en modo discreto como @John. Si está en modo Optimus, la pantalla interna Thinkpad y la pantalla digital externa probablemente estén controladas por diferentes tarjetas gráficas y tendrá que jugar un poco con su xorg.conf para que eso funcione.
Zach
@Zach: Gracias por la publicación del blog. He robado descaradamente tanto su versión de seguimiento como la reescritura de Sagar Karandikar , y agregué algunas actualizaciones relevantes a la versión más reciente de Ubuntu en mi respuesta .
krlmlr
7

Ubuntu 14.10 y posterior: es mucho, mucho más simple allí. Por favor, vea esta respuesta y mi comentario a continuación.

Nota : Esto solo funciona en Ubuntu 13.04. Hay algunas diferencias en 13.10.

He logrado conectar dos monitores externos (además del panel incorporado) a mi ThinkPad T430 en Ubuntu 13.04, con Optimus ("Gráficos intercambiables") habilitados (opción 3 en su lista). Los monitores están conectados a través de la interfaz DVI, uno de ellos está girado. A diferencia de otras soluciones, todos los monitores están conectados al mismo administrador de ventanas, por lo que las ventanas se pueden mover libremente entre los monitores. Esto logra el objetivo de mejorar la duración de la batería si está desconectado y usar monitores externos si está conectado.

La idea clave aquí es:

  • El adaptador de gráficos interno es responsable de administrar la imagen (mapa de bits) que se muestra realmente
  • Por defecto, todo se representa en el adaptador de gráficos interno
  • Las aplicaciones aceleradas por GPU usan el adaptador de gráficos discretos, la salida se copia en el adaptador de gráficos interno
  • Para cada monitor externo, el adaptador de gráficos interno proporciona una pantalla "virtual"
  • La salida a los monitores externos se realiza utilizando un segundo servidor X, los contenidos de las pantallas "virtuales" se copian constantemente en el segundo servidor X

El principal beneficio sobre otras soluciones es que todas las pantallas son (aparentemente) parte de la misma sesión X, por lo que puede mover libremente las ventanas entre las pantallas.

Hasta ahora no he notado penalización de rendimiento.

Instrucciones

Debes hacer lo siguiente:

  • Instalar Bumblebee desde un PPA
  • Cree e instale un controlador de video Intel personalizado
  • Descargue, compile y finalmente instale un pequeño programa
  • Editar dos archivos de configuración
  • Reiniciar varias veces

Para la mayoría de las acciones, necesitará un terminal, un editor de texto y acceso root ( sudo). Las instrucciones detalladas se dan a continuación.

Instalar abejorro

Siga la sección "configuración básica" de las instrucciones . Ejecutar como root, el último comando realmente inicia el reinicio:

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

¿No intentas ejecutar abejorro solo con el controlador nouveau? . Desde mi experiencia, no funciona, al menos no en esta configuración.

Validación

Deberías poder correr optirun glxgears.

Instalar una versión parcheada de xserver-xorg-video-intel

Opción 1: Instalar desde mi PPA (actualmente solo Ubuntu 13.04)

Ejecute lo siguiente como root:

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

Opción 2: compila e instala tu propio paquete

Elija el parche más reciente para xserver-xorg-video-intel. Haga clic en el archivo, haga clic en el botón "Sin procesar", copie la URL en el navegador. Al momento de escribir, esto era 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

Validación (1), para ambas opciones

El comando

apt-cache policy xserver-xorg-video-intel

debería mostrar la versión parcheada ( +virtualsufijo) y la versión original de Ubuntu.

Necesario para 13.04, para ambas opciones

Agregue lo siguiente a su /etc/X11/xorg.conf, cree si es necesario:

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

Validación (2), para ambas opciones

Después de reiniciar, ejecutar xrandren una terminal. La salida debe enumerar dos pantallas virtuales adicionales.

Descargar y construir screenclone

Obtenga el fork de screenclone de puetzk y sus dependencias, y compílelo .

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

Validación

El archivo screencloneexiste y es ejecutable. (Sin embargo, aún no se ejecutará).

Editar xorg.conf.nvidia

  • Abra el archivo /etc/bumblebee/xorg.conf.nvidiaen un editor de texto, como root
  • Comente o elimine las líneas que leen UseEDIDoUseDisplayDevice
  • En el Section "ServerLayout", agregue una entradaScreen "Screen0"
  • Al final del archivo, agregue lo siguiente:

    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        DefaultDepth    24
        SubSection     "Display"
        Depth       24
        EndSubSection
    EndSection
    
  • Reiniciar

Pruebas

Mi configuración supone un monitor de paisaje conectado al primer puerto DVI de la estación de acoplamiento y uno vertical conectado al segundo puerto DVI. Ejecute los siguientes comandos en un terminal desde el directorio donde se encuentra screenclone , adapte según sea necesario.

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

Observe cómo la rotación de la pantalla debe definirse dos veces. Puede omitir la segunda invocación de xrandrsi no se desea rotación (y, por supuesto, la --rotate leftde la primera invocación).

Al terminar screenclonecon Ctrl + C (que se ha puesto en primer plano nuevamente usando fg), el adaptador de gráficos discretos se apaga. Puedes verificar esto con cat /proc/acpi/bbswitch. Aún así, el espacio de pantalla está reservado para los dos monitores ahora desconectados. Para volver solo a la pantalla de la computadora portátil, use

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

Limpiar

  • Copiar screenclonea un directorio que está en el PATH(por ejemplo, /usr/local/bin)

  • Cree una bashsecuencia de comandos para automatizar el inicio y el apagado de las pantallas externas. Este script configurará las pantallas externas al inicio y cambiará a la pantalla de la computadora portátil solo al salir (por ejemplo, presionando 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
    
  • Opción alternativa: Mi colección de scriptlets contiene dos scripts extmon-starty extmon-stop, que habilitan y deshabilitan el segundo y el tercer monitor. Edite el extmon-startscript para adaptarlo a su configuración.

Referencias

Mi respuesta se basa en gran medida en los siguientes recursos:

revs krlmlr
fuente
Esto funciona muy bien para mí, gracias. ¿Tiene problemas con mucho retraso al usar escritorios virtuales y Compiz con esta solución?
damon
@blackrobot: estoy usando Gnome Shell, hay un ligero retraso pero esto no me molesta.
krlmlr
@krlmlr: ¿alguna posibilidad de obtener esta misma configuración en 13.10?
flx
@flx: en 13.10, los CRTC "virtuales" están integrados en el xorg-xserver-video-intelcontrolador de stock , no es necesario usar mi PPA o el parche. Tampoco es necesario editar xorg.conf, los CRTC "virtuales" se crean bajo demanda. El resto debería ser similar. Ahora hay incluso una herramienta que reemplaza screenclone, se llamaintel-virtual-output y se integrará más fácilmente con la configuración de pantalla de su escritorio. Haré una escritura una vez que obtenga mi configuración de tres cabezales con rotación para que funcione correctamente.
krlmlr
1
@flx: debe agregar un modo ( xrandr --newmode; la cvtherramienta ayuda a calcular la línea de modo) y asignarlo a la pantalla virtual ( xrandr --addmode). El modo debe coincidir con el de su pantalla real. Vea si una segunda pantalla virtual se crea automáticamente. Esto es lo intel-virtual-outputque hace la herramienta por sí misma, y ​​parece que los últimos problemas que se han solucionado o están por solucionarse.
krlmlr
2

No sé acerca de T420S, pero mi T420 puede durar hasta 9 horas con

  1. Monitor oscuro
  2. nvidia deshabilitado con abejorro / bbswith
  3. y ajuste adicional con pm-utils

Y sí, esta es la batería predeterminada. Por lo tanto, debería obtener fácilmente 2 horas, entonces:

(2) En /etc/X11/xorg.conf Pruebe con la opción "ConnectedMonitor" "DFP-0" para el controlador nvidia.

(3) Para usar su segunda pantalla, necesita un abejorro modificado xorg.conf Consulte https://github.com/Bumblebee-Project/Bumblebee/issues/77 para obtener más información.

Cobarde anónimo
fuente
1
Gracias por responder. ¿Le entendí que no está utilizando una segunda pantalla (DVI)? Para ser honesto: me resulta increíblemente complicado resolver el problema que vinculaste. Sin duda lo intentaré, pero tomará horas hasta que tenga una pequeña idea de lo que se supone que debo cambiar (y por qué). En realidad, esta es mi computadora portátil para el trabajo, y solo quiero que funcione. Esperaba que una tarea como conectar una segunda pantalla no me hiciera perseguir problemas abiertos de un software que ni siquiera había escuchado hace una semana ... :-(
Jan Groth
Es realmente simple como en el problema de github, simplemente elimine las líneas (nueva línea) Opción "UseEDID" "falso" (nueva línea) Opción "ConnectedMonitor" "DFP" (nueva línea) de /etc/bumblebee/xorg.conf.nvidia y bumblebee con producir salida en el puerto de pantalla. Obtendrá una imagen en blanco al comienzo. Puede obtener, por ejemplo, xterm allí con export DISPLAY =: 8.0 (nueva línea) xterm. (wtf presionando enter aquí envía el comentario en lugar de crear una nueva línea)
Anónimo Coward
2

Yo uso un T420 en el trabajo con una estación de acoplamiento tipo 4438. Puedo usar dos monitores panorámicos (sin el monitor principal) o 1 monitor panorámico con el monitor principal utilizando los puertos DVI en la estación de acoplamiento.

Simplemente desactivé optimus y lo configuré para usar siempre la tarjeta NVIDIA. Luego ejecuté nvidia-xconfig y utilicé la configuración de nvidia para configurar los monitores duales, guardé la configuración en el archivo xorg.conf y reinicié la máquina.

Puedo obtener un poco más de 2 horas de duración de la masa de esta manera (sin ninguna otra modificación para permitir una mayor duración de la batería). El principal problema que tengo es que no cambia automáticamente a un monitor cuando se reinicia desde la estación de acoplamiento o se retira de la estación de acoplamiento. Sin embargo, no he tenido tiempo de investigar esto.

Intentaré Bumble Bee más adelante esta semana para ver si puedo hacer que funcione. Intentaré recordar publicar aquí si puedo hacerlo funcionar.

John
fuente
2

Tengo el mismo problema. He investigado un poco y lo he resuelto parcialmente. Todavía estoy trabajando en una solución completa.

El hardware: Thinkpad T420s con base para Thinkpad de gráficos Intel HD 3000 Nvidia 4200M +.

El síntoma: los T420 no pueden reconocer la pantalla externa que se conecta a ningún puerto DVI en la base. Puede reconocer la pantalla externa a través del puerto VGA en el dock. Sin embargo, la calidad es pobre.

La causa raíz: 1. El T420s tiene una tarjeta Nvidia que se conecta al puerto DVI mientras que la tarjeta Intel al puerto VGA en el dock. 2. A diferencia de Win 7, Ubuntu no puede cambiar entre la tarjeta Nvidia y la tarjeta Intel. Por defecto, solo se está usando la tarjeta Intel.

La solución: 0. Coloque el T420s en la base y conecte la pantalla externa al puerto DVI. 1. Vaya a BIOS, busque "Pantalla", cambie la configuración a "Tarjeta discreta" y "Deshabilite Nvidia Optimus". Ahora T420s se ve obligado a usar la tarjeta Nvidia. 2. Descargue e instale el controlador Nvidia para Linux. Google las instrucciones detalladas. 3. Después de la instalación, haga "sudo nvidia-settings". 4. En la ventana emergente, "Configuración de pantalla del servidor X", haga clic en "Detectar pantallas". Podrá ver la pantalla externa ahora. 5. En la misma página, cambie la configuración a "TwinView", la resolución "Auto" o la resolución nativa de T420s, por ejemplo, 1600x900. 6. Haga clic en "Aplicar", podrá ver el escritorio de la pantalla externa. 7. Haga clic en "Guardar en archivo de configuración X".

[Actualizar]

Con Disper, puedo alternar la pantalla del T420s y la pantalla externa manualmente. Todavía no es la mejor solución, pero creo que es lo suficientemente bueno para mí.

Por lo tanto, intente la combinación de gráficos discretos + disper de Nvidia.

New Gumin
fuente
... el problema con la tarjeta discreta es que agota la batería muy rápido ...
Jan Groth
Debería poder usar el puerto de pantalla en modo nvidia optimus utilizando el método descrito aquí: zachstechnotes.blogspot.com/2012/04/post-title.html De esa manera, puede obtener una buena duración de la batería y usar el monitor externo en el puerto de pantalla (sin embargo, se renderizará con la tarjeta Intel, por lo que la calidad puede no ser tan buena como quisiera)
Zach
1

La salida VGA de mi T520 funciona muy bien (no es borrosa) usando gráficos integrados (configuración de BIOS de Intel), pero tengo que configurar el monitor 1920x1200 para que solo muestre 1600 píxeles de ancho, de modo que obtengo rayas negras en ambos lados. Sin esa configuración, el monitor extiende los 1600 px en toda la pantalla de 1920 y sí, las cosas se ven borrosas.

Hice una pregunta similar hace unos días. y sigo confundido por estas respuestas. Parece que @Anonymous Coward está ejecutando solo un monitor externo, pero yo (y creo que el OP) quiero poder ejecutar la pantalla de la computadora portátil (en Intel) y un monitor externo a través de DisplayPort / DVI (en nvidia). Así que creo que puede ser necesario Optimus / Bumblebee.

Si descubro este problema de visualización, ciertamente publicaré mis hallazgos; haga lo mismo si llega primero a la línea de meta.

OpenPrivacy
fuente
1
¡Gracias por responder! Si reduzco la resolución de mi monitor externo a 1600x1200, la pantalla empeora aún más ... Por cierto, culpo al fabricante de la pantalla por el desenfoque: escuché un par de historias de que las fuentes de entrada analógica pueden ser bastante bajas hoy en día, porque todos Utiliza conexiones digitales. Ah, y ciertamente mantendré este boleto actualizado.
Jan Groth