2007-04-04

Aceleración gráfica y TwinView para las nVidia en Kubuntu

Antes que nada agradecer a Xavier Corredor Llano por ayudarme a configurar la aceleración gráfica, el siempre ha sido mi senpai de Linux por lo que estoy muy agradecido, de no ser por el probablemente todavía estaría buscando el .exe en los tar que se descargan de internet... XD

Bueno, ahora si comencemos, hace rato que vengo usando Linux y solo hasta el día de hoy pude por fin hacer que el sistema acelerara las gráficas sin bloquearse y también logré que Linux usara un segundo monitor con la característica TwinView de las nVidia con TV-Out.

Primero decir que tengo una nVidia Gforce 6200 con 256 MB de memoria de vídeo. Esto lo digo no por alardear sino para que quede constancia de que no tengo ni idea si esto funcionará en otras tarjetas nVidia, valga decir que el hilo que me proporcionó la información para activar el TwinView dice que sirve con todas las nVidia.

1. Configurar los Drivers

Lo primero es configurar los drivers, como todos ya saben los drivers libres para Linux proporcionan las funcionalidades básicas para la tarjeta de vídeo pero no aceleran las gráfica ni tampoco proporcionan la posibilidad de usar TwinView, así que hay que descargar los drivers para la nVidia que corresponde. Instalar los siguientes paquetes (dependiendo de la tarjeta que tengas)

Si buscas nVidia en el Synaptic seguramente te saldrán todos los paquetes.

Paquete

Para tarjeta

nVidia-glx

nVidia gForce, nForce, y Quadro

Ejemplo: gForce 6200

(Tarjetas nVidia de las nuevas)

nVidia-glx-legacy

nVidia gForce 2, TNT, TNT 2

Ejemplo: gForce 2 MX/MX400

(Tarjetas nVidia de las antiguas)

nVidia-kernel-common

TODAS LAS TARJETAS nVidia

Además de estos paquetes necesitarás instalar el Linux-restricted-modules que correspondan al kernel de Linux que tengas instalado. Para saber el kernel puedes fijarte en el grub cuando arranca o escribir en la consola el comando uname -a o uname -r.

Por ejemplo, si al poner uname -r el sistema te da la salida: 2.6.17-11-generic deberás bajar el paquete linux-restricted-modules-2.6.17-11-generic que en el ejemplo sería el que concuerda con tu Kernel. OJO! Si hay otros paquetes similar instalados no los desinstales, solo instala el que concuerda con tu kernel de ser necesario.

Una vez instalado el Driver, el siguiente paso es hacer que el X use el driver propietario (es decir el que creo nVidia) y no los drivers libres que vienen con el Linux, para hacer eso dale al menú K y en Ejecutar escribe:

kdesu kate /etc/X11/xorg.conf

El sistema te pedirá el la contraseña del root y enseguida aparecerá Kate con el xorg.conf que es el archivo de configuración del X (¡así que ten cuidado con lo que modificas!) ahí busca la sección Device, que debe lucir más o menos así:

Section "Device"

Identifier "NVIDIA Corporation NV40? [Unknown nVidia Card]"

Driver "nv"

BusID "PCI:1:0:0"

EndSection

Antes de modificar el archivo TE RECOMIENDO QUE SAQUES UNA COPIA DE SEGURIDAD EN TU DIRECTORIO DE USUARIO, Luego debes editar la parte que dice Driver y poner “nvidia” en vez de “nv” y guardar el archivo.

Si eres precavido (e inteligente) este es un buen momento para que reinicies el PC ya que si te apresuras a agregar el código para el TwinView y luego no te resulta no sabrás si lo que ha fallado es el Driver o la configuración del TwinView. Pero... si no quieres reiniciar el equipo (¡Me gusta el peligro! ¡es mi desayuno!) pues entonces adelante a la sección siguiente del documento.

Ah, por cierto, TE RECOMIENDO que reinicies el sistema entero, no solo el entorno gráfico, mi senpai de Linux (Xavier) me sugiero esto así que yo se lo sugiero a mis lectores también.

Después de reiniciar la máquina al iniciar DEBE aparecer el logotipo de nVidia en el monitor antes de que aparezca e Katapult (pantalla de inicio del KDE, donde pones la contraseña), si no, es por que probablemente algo ha fallado, revisa los pasos anteriores para ver que puede ser.

2. Activar el TwinView

Si ya has probado el driver y sabes que funciona todo y estás listo para agregar el TwinView entonces debes seguir estos pasos: Primero abre el xorg.conf con el comando que discutimos antes, nuevamente RECUERDA SACAR UNA COPIA DE SEGURIDAD DEL ARCHIVO, PERO NO REMPLACES LA QUE HABÍAS SACADO EN EL PASO ANTERIOR. En el archivo localiza la sección Device y agrega algunas líneas de código para que se vea como esta:

Section "Device"

Identifier "NVIDIA Corporation NV40? [Unknown nVidia Card]"

Driver "nvidia"

BusID "PCI:1:0:0"

Option "TwinView" "True"

Option "TwinViewOrientation" "Clone"

Option "UseEdidFreqs" "True"

Option "MetaModes" "1024x768,1024x768"

Option "UseDisplayDevice" "CRT,TV"

EndSection

Bueno, algunos comentarios acá: 1. Solo agrega las líneas que dicen Option, NO MODIFIQUES LAS LÍNEAS QUE YA HAY EN EL ARCHIVO. 2. La opción TwinViewOrientation tiene tres configuraciones (por lo menos que yo sepa) y ellas son: LeftOf o RightOf para que el escritorio se extienda hacia la izquierda o derecha en el segundo monitor, y Clone para que el segundo monitor muestre una imagen idéntica a la que muestra el primer monitor.

3. La opción MetaModes define la resolución para cada una de las pantallas, acá debes tener cuidado de establecer las resoluciones que tu tarjeta de vídeo soporta para el TwinView o de lo contrario puedes terminar con errores raros o con visualizaciones erráticas. Si tienes una gForce de las nuevas te recomiendo que comiences probando con dos resoluciones iguales, 1024x768 para ambas. Si tienes una gForce de las viejas te recomiendo 1024x768,800x600. Ten presente que puedes agregar varios MetaModes separados por ; (punto y coma), por ejemplo:

Option “MetaModes” “1024x768,1024x768;1024x768,800x600”

En realidad no sé exactamente que comportamiento tiene esta configuración, pero mis experimentos parecen mostrar que los MetaModes establecen las resoluciones para los monitores en el orden en que aparecen en la opción UseDisplayDevice y que cuando se agrega más de un MetaMode Linux intentará con cada uno hasta encontrar uno que la tarjeta acepte. Nuevamente esto es solo una posibilidad, nada es seguro aquí. Pero si tienes más dudas mira el hilo del foro de Ubuntu (Al final en Referencias)

4. Finalmente la opción UseDisplayDevice permite establecer que monitores se usarán, acá debes establecer donde están conectados los monitores, por ejemplo, si tienes dos monitores conectados uno a la salida análoga (VGA) y el otro en la digital entonces sería: “DVI,CRT” asumiendo que el monitor en la salida análoga es el segundo monitor. Otro ejemplo (que es el de mi caso) es que tengas un monitor conectado a la salida análoga (tu monitor principal) y un TV conectado en la salida de S-Video (Composite Video) en ese caso sería “CRT,TV”.

Guarda el xorg.conf, reinicia el equipo y si has hecho todo bien ya debes tener TwinView. A mi en lo personal no me gustó la extensión del escritorio por que Linux a diferencia de Windows no clona el Papel Tapiz sino que lo estira y el escritorio luce... algo horrible, pero de resto bien.

He de decir que NUNCA pude hacer que mi gForce 2 MX400 trabajara con Linux, no por el driver ni nada sino por que cuando usaba la aceleración gráfica el sistema se congelaba al mejor estilo de Windows y nunca pude solucionar ese inconveniente. Ahora me pregunto si era por que tenía algo mal configurado, por culpa de los legacy-drivers o quizás por la propia tarjeta de vídeo, un overheat ¿quizás?. En cualquier caso si alguien logra configurar una gForce 2 MX400 pues que me mande un correo electrónico para poder quitarme la espina del cerebro.

Referencias:

  1. Mi Senpai de Linux, Xavier Corredor Llano que me ayudó con todo lo de la aceleración gráfica

  2. nVidia TwinView - Ubuntu Forums en http://ubuntuforums.org/showthread.php?p=1773584