Come impostare la risoluzione del monitor se questa non è riconosciuta [Linux - LXDE]

monitor sfondo lxde

Non essendo a casa per motivi più che altro logistici, ho bisogno di una workstation fissa da cui lavorare: dispongo di un PC desktop anche abbastanza performante, con un bel monitor landscape enorme… peccato però che io non abbia avuto il permesso di installarvi su Linux. Quindi, per lavorarci almeno in via provvisoria, ho optato per un’installazione di Lubuntu 12.10 in macchina virtuale. Peccato, però, che Lubuntu e Virtualbox proprio non vogliano saperne di riconoscere automaticamente la risoluzione corretta del monitor - e se vi state chiedendo se ho provato col tool grafico la risposta è SI, ma niente da fare. Quindi, armata di un po’ di pazienza e un po’ di ingegno, ho deciso di semplificarmi la vita dando in pasto a Lubuntu tale risoluzione nella maniera più brutale possibile: se vi dicessi che ha funzionato?

Nel tutorial che segue ho specificato tutti i passi da seguire per impostare automaticamente la risoluzione desiderata in Lubuntu. Con qualche piccolo accorgimento (ad esempio l’impostazione dei comandi in autostart differisce da distribuzione a distribuzione, e da desktop a desktop) è possibile adattare tale tutorial a tutte le distribuzioni Linux (e a tutti gli ambienti desktop) eseguite in macchina virtuale e non. 

Abbiamo bisogno di conoscere tre cose per procedere: la risoluzione che desideriamo (sia HRES che VRES), la frequenza di aggiornamento del monitor (REFRESH-RATE) e l’identificatore di quest’ultimo (device-monitor). Se, ad esempio, la risoluzione desiderata fosse 1280×720, con frequenza di aggiornamento a 60 Hertz, i parametri di cui avremo bisogno saranno:

  • HRES: 1280
  • VRES: 720
  • REFRESH-RATE: 60.00

Ora andiamo a scoprire l’identificativo del nostro monitor utilizzando il comando xrandr : apriamo un terminale e digitiamo

xrandr | grep connected

L’output dovrebbe essere qualcosa di simile a

VBOX0 connected 1280×720+0+0 0mm x 0mm

L’identificatore del mio monitor è VBOX0; prendete nota del vostro, che potrebbe variare.

Ricapitolando, i dati da tenere a mente sono i seguenti:

  • HRES: 1280
  • VRES: 720
  • REFRESH-RATE: 60.00
  • device-monitor: VBOX0

A questo punto andiamo a cercare le impostazioni da dare in pasto a xrandr per creare la nostra nuova risoluzione personalizzata: da terminale, avremo bisogno di utilizzare il comando gtf in questo modo

gtf HRES VRES REFRESH-RATE | grep Modeline

che, nel mio caso, si trasforma in

gtf 1280 720 60 | grep Modeline

(ho aggiunto il “grep Modeline” così da visualizzare soltanto ciò che ci interessa, riducendo il rischio di incappare in errori). Il terminale ci risponderà con un output pieno di numeri (apparentemente) incomprensibili da dare in pasto a xrandr, una cosa del tipo

Modeline "1280x720_60.00" 74.48 1280 1336 1472 1664 720 721 724 746 -HSync +Vsync

Copiate tutta la parte scritta dopo “Modeline” (ovviamente dovrete far riferimento al vostro output); nel mio caso, la parte interessante è

"1280x720_60.00" 74.48 1280 1336 1472 1664 720 721 724 746 -HSync +Vsync

E, fatto ciò, abbiamo tutto quel che ci serve per creare il nostro file eseguibile al fine di impostare manualmente la risoluzione. Sempre da terminale, digitate

sudo gedit /usr/bin/ris_pred

seguito da Invio. Il file creato deve essere costruito come segue:

xrandr --newmode quello che avete ricavato dal comando precedente SENZA la parola "Modeline"
xrandr --addmode device_monitor HRESxVRES_REFRESH-RATE
xrandr --output device_monitor --mode HRESxVRES_REFRESH-RATE

In pratica, basandomi sui miei parametri (è FONDAMENTALE che voi li modifichiate con i vostri), il file verrebbe costruito come segue:

xrandr --newmode "1280x720_60.00" 74.48 1280 1336 1472 1664 720 721 724 746 -HSync +Vsync
xrandr --addmode VBOX0 1280x720_60.00
xrandr --output VBOX0 --mode 1280x720_60.00

Salviamo il file ris_pred e chiudiamo leafpad, dopodichè – da terminale – andiamo a impostare i permessi di esecuzione, con il comando

sudo chmod a+x /usr/bin/ris_pred

Il peggio è fatto! Come controprova, mandiamo in esecuzione il file e verifichiamo che la risoluzione impostata sia quella esatta, con il comando da terminale

ris_pred

Non preoccupatevi, la modifica non è definitiva: se avete sbagliato qualcosa (ovviamente) il vostro monitor si lamenterà (oppure Virtualbox finirà per bloccarsi), e vi basterà riavviare “brutalmente” il sistema (virtuale o host che sia) e ricontrollare le vostre impostazioni. Se al contrario la risoluzione dovesse essere impostata correttamente, non vi resterà che piazzare un file .desktop – che mandi in esecuzione il file ris_pred all’avvio della sessione grafica – all’interno della cartella autostart nella nostra directory home. Sempre da terminale, quindi, digitiamo

leafpad ~/.config/autostart/imposta_ris.desktop

e scriviamo quanto segue al suo interno:

[Desktop Entry]
Type=Application
Exec=ris_pred
Name=Imposta Risoluzione Manuale
Comment=Imposta la risoluzione definita manualmente con xrandr
Categories=X-LXDE-Settings;
OnlyShowIn=LXDE;

Salvate e chiudete il file: avete terminato! A questo punto non vi resta che riavviare il computer/la macchina virtuale e… godervi il vostro monitor – finalmente – a risoluzione esatta.


Visita lo Shop ufficiale di Chimera Revo: troverai tantissimi accessori, gadget, smartphone e tablet. Ti aspettiamo!


7 Commenti

  1. Mauro

    Complimenti Gessica!
    Ho testato il tuo metodo su Lubuntu 14.04 e virtualbox con mia somma soddisfazione.
    Ora posso sfruttare la mia macchina virtuale con grafica adeguata al monitor (1680×1050).
    Ti devo una birra! (o un succo se sei astemia!)

    Mauro

    Rispondi
  2. cicopacio

    Grazie, Jessica, della chiarezza della guida. Rendendomi conto della tua competenza e disponibilita`, ti segnalo gli eventi cui vado incontro. Ottengo tutte le risposte cercate indicando la risoluzione desiderata “1920x1080_60.00″, ma il risultato del lancio di ris_pred e` questo:

    [cicopacio@Ekoore ~]$ ris_pred
    xrandr: Failed to get size of gamma for output default
    xrandr: Failed to get size of gamma for output default
    xrandr: Failed to get size of gamma for output default
    xrandr: Configure crtc 0 failed

    Che fare?

    Uso, per divertimento, una Keytab Ekoore (un disastro i rapporti con questa ditta, meglio tralasciare e non reclamizzarla…). Il processore e` un Intel D2500, e quindi v’e` il problema del driver. Il mio monitor (Asus 22TIEH LED TV Monitor) e` un Full HD, ha formato 16:9, ma le risoluzioni riconosciute dalla scheda grafica incorporata nel processore sono solamente quelle 4:3 con un massimo di 1600×1200. Le immagini sono buone ma deformate nel senso che sono schiacciate in senso verticale.
    Pensi si possa fare qualcosa?
    Grazie e complimenti per i tuoi chiari interventi su chimerarevo.

    Giorgio Cittadini

    Rispondi
  3. Kronos

    Che bello il mio sfondo di LXDE! :D

    Rispondi
  4. boss

    ciao,io ho un nvidia gtx460 con monitor 24″ samsung ho impostato i parametri ma mi da questo errore, cè da dire che questa risoluzione non viene supportata dal framebuffer del driver nvidia,cè un modo per impostarla perchè 1920×1200 e un pò altina.
    X Error of failed request: BadMatch (invalid parameter attributes)
    Major opcode of failed request: 139 (RANDR)
    Minor opcode of failed request: 18 (RRAddOutputMode)
    Serial number of failed request: 31
    Current serial number in output stream: 32
    xrandr: cannot find mode 1680x1050_59.00

    Rispondi
    • Jessica Lambiase

      Ciao.
      Spiegati meglio, stai cercando di “forzare” una risoluzione più bassa? Il messaggio di errore dice che la risoluzione non è riconosciuta, forse ti sarà scappato qualche numeretto quando hai utilizzato “xrandr –newmode blahblah”. Riprova e fammi sapere se la cosa persiste.

      Rispondi

Rispondi