Old:Forzare la risoluzione video della shell con KMS

Emblem-important.png Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica.


Info.png Compatibilità
Ho provato le operazioni qui descritte solo su scheda video ATI con driver radeon. Attualmente non so se si possano fare anche con schede di altre marche.


Introduzione

Se il KMS imposta per il terminale una risoluzione video non desiderata, la si può modificare passando al kernel il parametro video.

Come fare

Dai messaggi del kernel individuiamo le uscite video:

dmesg | grep drm
# ometto i dati irrilevanti
[    8.311160] [drm] Radeon Display Connectors
[    8.311211] [drm] Connector 0:
[    8.311258] [drm]   VGA
[    8.311306] [drm]   DDC: 0x60 0x60 0x60 0x60 0x60 0x60 0x60 0x60
[    8.311355] [drm]   Encoders:
[    8.311402] [drm]     CRT1: INTERNAL_DAC1
[    8.311450] [drm] Connector 1:
[    8.311498] [drm]   DVI-I
[    8.311547] [drm]   HPD1
[    8.311594] [drm]   DDC: 0x64 0x64 0x64 0x64 0x64 0x64 0x64 0x64
[    8.311645] [drm]   Encoders:
[    8.311694] [drm]     CRT2: INTERNAL_DAC2
[    8.311743] [drm]     DFP1: INTERNAL_TMDS1
[    8.311792] [drm] Connector 2:
[    8.311838] [drm]   S-video
[    8.311885] [drm]   Encoders:
[    8.311934] [drm]     TV1: INTERNAL_DAC2
[    8.365473] [drm] Radeon display connector VGA-1: Found valid EDID
[    8.375296] [drm] Radeon display connector DVI-I-1: No monitor connected or

In questo caso, si hanno 3 connettori, numerati da 0 a 2. Inoltre si vede che il connettore 0 è l' uscita VGA, il connettore 1 è l' uscita DVI. Ma la cosa più importante per il nostro fine, sono i nomi dei connettori: li troviamo nelle ultime 2 righe. A questo punto possiamo "costruire" il valore da passare al parametro video del kernel, rispettando il seguente formato:

video=<conn>:<xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd]

dove:

    <conn>: è il connettore
    <xres> x <yres>: la risoluzione desiderata
    M: calcola un CVT mode?
    R: reduced blanking?
    -<bpp>: profondità di colore
    @<refresh>: refresh rate
    i: interlaced (non-CVT mode)
    m: margins?
    e: output forced to on
    d: output forced to off
    D: digital output forced to on (e.g. DVI-I connector)

È possibile passare al kernel un parametro video per ogni connettore che si vuole controllare. Un esempio:

video=VGA-1:1280x1024 video=DVI-I-1:d

il connettore VGA viene forzato ad una risoluzione 1280x1024, mentre il connettore DVI viene disattivato (valore d).

  Suggerimento
Notare i nomi dei connettori: sono quelli letti nel dmesg


Grub

Con GRUB abbiamo almeno 2 possibilità:

  • Passare i parametri ad una determinata menuentry
  • Passare i parametri a tutte le menuentry

Seguendo la seconda opzione andiamo ad editare la configurazione di GRUB:

# nano /etc/default/grub

cercare la seguente riga:

GRUB_CMDLINE_LINUX="...."

e impostarla a:

GRUB_CMDLINE_LINUX="video=VGA-1:1280x1024 video=DVI-I-1:d"

salvare il file e aggiornare GRUB:

# update-grub


Riferimenti

  1. http://cgit.freedesktop.org/nouveau/linux-2.6/tree/Documentation/fb/modedb.txt
  2. http://cgit.freedesktop.org/nouveau/linux-2.6/tree/drivers/gpu/drm/drm_fb_helper.c