Configuració senzilla i potent del driver Nvidia en el servidor X

  • warning: tempnam(): open_basedir restriction in effect. File() is not within the allowed path(s): (/srv/www/gilug.org/www/site.tree/) in /srv/www/gilug.org/www/site.tree/public/includes/file.inc on line 802.
  • warning: fopen(): Filename cannot be empty in /srv/www/gilug.org/www/site.tree/public/includes/file.inc on line 803.
  • El fitxer no s'ha pogut crear.

Buscant la senzillesa màxima, voldria fer una configuració del driver Nvidia, que suporti monitors dobles però que també engegui amb un sol monitor. A més tampoc vull especificar les freqüències de la pantalla ni els modes gràfics que suporta,

Finalitat

Com que les targetes gràfiques Nvidia(*) permeten connectar dos monitors en una sola targeta gràfica (“dual-head”), ara farem un fitxer de configuració per un servidor X(**) i una targeta gràfica amb el xipset Nvidia. En aquesta configuració aprofitarem les capacitats DDC(***) dels monitors actuals per tal de que sigui el driver qui els trobi i configuri les resolucions i freqüències més adequades per cada un d'ells. (* tenen dos connectors per monitors, algunes tenen un connector analògic i un altre digital o de TV; les més modernes i potents tenen dos connectors digitals) (** tant Xfree86 com Xorg ) (*** ja implementades en la connexió targeta gràfica/monitor des de fa anys)

Instal·lació

Abans d'instal·lar el driver necessitem els fonts del kernel compilats o el paquet linux-headers corresponent al kernel. També necessitem els compiladors en la mateixa versió que ha estat compilat aquest kernel (veure les Referències). Per exemple, necessitarem executar:

apt-get install linux-headers-2.6.18.4-686
apt-get install build-essential

Descarregarem el driver de la pàgina de Nvidia , i l'instal·larem des de la consola, amb:

sh NVIDIA-Linux-x86-1.0-9755-pkg1.run

Configuració X

Analitzaré les diferents seccions d'una configuració X

La secció ServerLayout dirà que tenim dos monitors,

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    Screen      1  "Screen1"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Hem de posar-hi dues seccions corresponents als monitors; tal hi fa l'identificador que hi posem, tampoc importa que només tinguem un monitor, el driver ja ho detectarà i només activarà lo que correspongui,

Section "Monitor"
    Identifier     "MONITOR1"
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "MONITOR2"
    Option         "DPMS"
EndSection

a la secció “Device” és on fem tota la configuració (lo poc que es configura, clar),

  • TwinView “yes” especifica que volem que ens mostri la pantalla a tots dos monitors; TwinView “no” ho desactiva i es mostrarà només en un monitor
  • MetaModes dona una llista per parelles de les resolucions amb que volem treballar, podem especificar resolucions diferents(p.ex. 1280x1024,1024x768 ) a cada monitor, el servidor X s'ajustarà a la mida del monitor.
    El driver Nvidia sempre té la última paraula i acceptarà només lo que consideri vàlid. Només hem de posar resolucions que sabem que suporten els nostres monitors, perquè el driver Nvidia és molt bo però no és infal·lible.
  • TwinViewOrientation diu la posició del monitor digital respecte de l'analògic, en el cas "TwinViewOrientation" "LeftOf" indica que el digital és a l'esquerra de l'analògic des del punt de vista de l'usuari, si volem que un monitor mostri lo mateix que l'altre hem de posar "TwinViewOrientation" "Clone"
Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    Option         "TwinView"   "yes"
    Option         "TwinViewOrientation" "LeftOf"
    Option         "DPMS"   "on"
    # El primer és l'analògic i el segon el digital "a,d;a,d;a,d;a,d”
    Option         "MetaModes" "1280x1024,1280x1024;1152x864,1152x864;1024x768,1024x768;800x600,800x600;640x480,640x480"
EndSection

Hem de tenir dues seccions de pantalla, posem un monitor a cadascuna. Aquí també hem d'escriure l'ample del color, el driver Nvidia amb DefaultDepth 24 fa colors de 32 bits per punt.

# El primer és el digital i el segon l'analògic
Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "MONITOR1"
    DefaultDepth    24
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device0"
    Monitor        "MONITOR2"
    DefaultDepth    24
EndSection

En la secció Device queda especificada tota la configuració, la resolució dels monitors, si volem que la pantalla s'estengui als dos monitors o que es dupliqui,

Tant si tenim un monitor connectat com dos o si canviem de monitor, només necessitarem aquesta configuració ja que el driver Nvidia detecta les característiques de lo que tenim instal·lat.

Ajustar la mida de les lletres

Si no estem contents amb la mida de les lletres que ens dona el driver, podem ajustar-la posant els següents paràmetres a la secció Device

Section "Device"
    Option         "UseEdidDpi"   "FALSE"
    Option         "DPI"   "88x88"

DPI 72x72 fa lletres grans, DPI 80x80 fa lletres mitjanes, DPI 88x88 lletra normal, i DPI 96x96 lletra petita. Podeu provar altres valors, inclús es poden posar valors diferents per ample i alçada.

Logo

El servidor X ens presenta una imatge al arrancar durant un breu espai de temps. Podem deshabilitar-la amb la opció

Section "Device"
    Option         "NoLogo" "True"

O també podem especificar la imatge que volem mostrar durant l’inici del servidor X.

Section "Device"
    Option         "LogoPath" "/path/imatge.png"

a la documentació que correspon al driver s'explica quines característiques ha de tenir la imatge perquè sigui utilitzable.

Acceleració

La versió 7 del servidor Xorg suporta OpenGL i Render. Podem obtenir el màxim rendiment dels gràfics Nvidia si posem les opcions següents:

Section "Device"
    ...
    Option "AddARGBGLXVisuals" "True"
    Option "RenderAccel" "True"
    Option "DisableGLXRootClipping" "true"
    Option "BackStoring" "True"
EndSection

Section "Extensions"
  Option "Composite" "Enable"
  Option "RENDER" "Enable"
EndSection

Resolució de problemes

Per analitzar lo que passa amb la nostre configuració és fonamental el fitxer /var/log/Xorg.0.log, en el que el servidor X ens mostra les anotacions que fa al arrancar. Podem veure com el driver Nvidia valida la informació que troba en el fitxer xorg.conf i ens dona més informació sobre el nostre hardware.

NVIDIA GPU GeForce 6610 XL at PCI:1:0:0 (GPU-0)
Memory: 131072 kBytes
VideoBIOS: 05.43.02.29.a3
Detected PCI Express Link width: 16X
Interlaced video modes are supported on this GPU
Connected display device(s) on GeForce 6610 XL at PCI:1:0:0:
    MED MD30217PG (CRT-0)
    TAR LCD19-4 (DFP-0)
MED MD30217PG (CRT-0): 400.0 MHz maximum pixel clock
TAR LCD19-4 (DFP-0): 155.0 MHz maximum pixel clock
TAR LCD19-4 (DFP-0): Internal Single Link TMDS
Assigned Display Devices: CRT-0, DFP-0
Validated modes:
     "1280x1024,1280x1024"
     "1152x864,1152x864"
     "1024x768,1024x768"
     "800x600,800x600"
     "640x480,640x480"
Virtual screen size determined to be 2560 x 1024
DPI set to (88, 88); computed from "DPI" X config option
(--) Depth 24 pixmap format is 32 bpp
Setting mode "1280x1024,1280x1024"
Loading extension NV-GLX
NVIDIA 3D Acceleration Architecture Initialized
Using the NVIDIA 2D acceleration architecture
DPMS enabled

Definicions

VESA DDC

(VESA Display Data Channel) A VESA standard communications channel between the display adapter and monitor. The DDC is used to pass Extended Display Identification Data (EDID), which is stored in the monitor and describes its characteristics (vendor name, serial number, frequency range, etc.).

DDC requires an additional wire in the cable. The first level implementation (DDC1) provides a unidirectional channel that lets the monitor inform the host of its capabilities. A second bi-directional level (DDC2) allows the host to adjust the monitor. For example, the monitor's switch settings could be put into a software control panel.

VESA DPMS

(VESA Display Power Management Signaling) A VESA standard for signaling the monitor to switch into energy conservation modes. It provides for two low energy modes: standby and suspend.

Referències

Si descomprimim el driver Nvidia, trobarem el fitxer NVIDIA-Linux-x86-1.0-9755-pkg1/usr/share/doc/README.txt on hi ha informació sobre els paràmetres del driver i la seva configuració.

Readme del driver a la Web Nvidia en format HTML

Pàgina man xorg.conf