sábado, 14 de marzo de 2009

Uso de dos pantallas con una sola cpu en linux.

Bueno, puesto que me he comprado un monitor, voy a explicar aquí un poco como poner dos pantallas con un solo ordenador.

La primera forma es con solo una tarjeta gráfica.

Otra forma es utilizar una tarjeta gráfica para cada una de estas pantallas.

Bueno, puesto que me he puesto a revolver un poco en el trastero y allí me encontré con una tarjeta gráfica antigua, he optado por realizar la segunda forma, dejaré la primera para otro post si tengo tiempo o si necesito añadir otro monitor a la CPU, todo se andará.

Bien, despues de navegar un poco por internet y encontrarme con muchos enlaces sobre el tema, y haciendo una pequeña discriminación a la mayoría me he quedado con las siguientes páginas:

Instalación y configuración del servidor X en Debian.
Dos monitores con xrandr.
Como usar dos monitores con dos tarjetas de video en Xorg bajo Debian.

Y en ingles:

X.org/Dual monitors.
Configuration dual monitors on card.

Si resumimos un poco todo lo encontrado nos debemos de quedar con las siguientes cosas.

El programa X.org es el encargado de gestionar el servidor gráfico, en este programa se configuran las tarjetas graficas, los monitores, las resoluciones de pantallas, los ratones, los teclados (por si deseamos dos escritorios independientes, pero eso será otro tema a tratar).

Si deseamos comprobar rápidamente el funcionamiento de los monitores podremos hacer uso de xrandr, en mi caso con las dos tarjetas gráficas no logré ponerlo en marcha, pero al usar el portatil si que se controlaban los dos monitores, tendré que investigar un poco mas sobre el uso de xrandr con dos tarjetas gráficas.

Después de realizar varias pruebas sobre el archivo de configuración del servidor X, el cual es /etc/X11/xorg.conf, pude comprobar que una de la tarjeta recolectada del trastero no consigo sacar una resolución superior a los 800x680, lo cual me limita la resolución de la otra pantalla, puesto que en xinerama ambas tienen que tener la misma profundidad, me quedará investigar un poco sobre independizar los monitores sin el uso de xinerama.

Para averiguar el busid echale un vistazo al log que te aparece cuando te da un error de arranque del servidor X y busca el fabricante (vendor) de la tarjeta gráfica y el PCI:0:0:0 donde te la reconoce.

Bueno, pongo aquí como me ha quedado el archivo de configuración por si algún dia lo modifico o lo pierdo, no quiere decir que a vosotros os vaya a funcionar, puesto que no tendréis el mismo hardware, lo cual deberías averiguar y modificar el archivo.

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 1.0 (buildd@ninsei) Fri Sep 5 22:23:08 UTC 2008

Section "ServerLayout"
Identifier "Layout0"
Option "Xinerama" "true"
# Screen "Screen1"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" RightOf "Screen0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection

Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
EndSection

Section "Module"
Load "dbe"
Load "extmod"
# Load "type1"
Load "freetype"
Load "glx"
EndSection

Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection

Section "Monitor"
Identifier "Monitor1"
VendorName "LG"
ModelName "LG222WS"
HorizSync 28.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
Modeline "1680x1050@85" 214.51 1680 1800 1984 2280 1050 1051 1054 1103 -HSync +VSync
Modeline "1024x768@75" 81.80 1024 1080 1192 1360 768 769 772 802 -HSync +VSync
EndSection

Section "Monitor"
Identifier "MonitorCRT"
VendorName "LG"
ModelName "LG700P"
HorizSync 30 - 96
VertRefresh 50 - 160
Option "DPMS"
EndSection

Section "Device"
Identifier "Devicenvidia"
Driver "nv"
VendorName "Nvidia"
BusId "PCI:01:0:0"
EndSection

Section "Device"
Identifier "Devicecirrus"
Driver "vesa"
VendorName "cirrus"
BusId "PCI:02:06:0"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Devicenvidia"
Monitor "MonitorCRT"
DefaultDepth 16
Subsection "Display"
Depth 16
Modes "1024x768"
EndSubSection
EndSection

Section "Screen"
Identifier "Screen1"
Device "Devicecirrus"
Monitor "Monitor1"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1680x1050@85" "1024x768" "800x600" "640x480"
EndSubSection
EndSection

Bueno pues saludos a todos.