Guida alla retroilluminazione con tasti Fn su Linux

led

Purtroppo può capitare con Linux che la regolazione della luminosità del monitor tramite i tasti Fn dei pc portatili non funzioni. Dipende dalla distro, dal kernel, dai driver video e dal desktop environment, oggi vi proporrò due linee guida che bene o male possano risolvere la maggior parte casi.

Il primo tentativo da fare è quello di forzare l’uso dei moduli acpi compresi nel kernel, cosa che in genere basta a sistemare le cose. Date da terminale (usando al posto di gedit il nome dell’editor di testo del vostro desktop environment):

sudo gedit /etc/default/grub

Andate alla seguente linea:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

E fatela diventare così:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash pcie_aspm=force acpi_osi=Linux acpi_backlight=legacy”

Salvate e chiudete, poi aggiornate il grub con il comando:

sudo update-grub

Riavviate il pc e se ora gli appositi tasti Fn possono regolare la luminosità avete finito. Sennò provate questa modifica alternativa:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash acpi_backlight=vendor”

Se nemmeno così funziona proviamo una strada più complessa ma che quasi sicuramente sarà risolutiva.
Aprite il vostro file manager ed andate nella cartella /sys/class/backlight. Qui trovate, come cartelle, uno o più componenti che gestiscono la retroilluminazione. Di solito c’è acpi_video0, altri come acpi_video1, o alcuni specifici in base al tipo di scheda video, diciamo per esempio acpi_pincopallino. Ora dovrete provarli tutti da terminale per capire quale funziona per voi, date il comando:

echo 50 | sudo tee /sys/class/backlight/acpi_video0/brightness

Questo dice al relativo modulo d’impostare la luminosità al 50% (il numero dopo echo, in percentuale). Se lo schermo si scurisce avete trovato il modulo giusto, altrimenti provate tutti quelli che avete:

echo 50 | sudo tee /sys/class/backlight/acpi_video1/brightness
echo 50 | sudo tee /sys/class/backlight/acpi_pincopallino/brightness

Ammettendo che almeno uno abbia funzionato, dobbiamo fare in modo che possiate farlo lavorare in semplicità con i tasti Fn senza dover usare il terminale ogni volta. Tutto ciò è fattibile tramite due semplici script, uno che dirà al modulo di aumentare la luminosità e uno che la farà diminuire.
Aprite il vostro editor di testo e copiate questo script:

#!/bin/bash
bright=$(cat /sys/class/backlight/acpi_video0/brightness)
let “bright = $bright + 10”
echo $bright > /sys/class/backlight/acpi_video0/brightness

Dove acpi_video0 andrà sostituito con il modulo funzionante per voi. A differenza del comando di prima che impostava una percentuale fissa, questo script permette di cambiare in modo incrementale la luminosità in base al valore corrente. In questo caso ad ogni utilizzo della combinazione Fn+”tasto” la luminosità aumenterà del 10%. Salvate il file in una cartella nascosta con estensione .sh, cioè tipo:

/home/vostro_nome_utente/.backlight/lum+.sh

Ora create un nuovo script che abbasserà la luminosità:

#!/bin/bash
bright=$(cat /sys/class/backlight/acpi_video0/brightness)
let “bright = $bright – 10”
echo $bright > /sys/class/backlight/acpi_video0/brightness

E salvatelo sempre come:

/home/vostro_nome_utente/.backlight/lum-.sh

Andate nella cartella dove avete messo questi script, cliccate col destro su entrambi e fate proprietà – permessi e rendete il file eseguibile.
Adesso un passaggio delicato: dobbiamo dire alla nostra distro di non chiedere la password di amministratore quando usiamo questi script. Date da terminale:

sudo visudo

Qui potete aggiungere eccezioni al comando sudo. In fondo al file (che visualizzerete direttamente da terminale) date aggiungete le seguenti 2 righe:

vostro_nome_utente ALL= NOPASSWD: /home/vostro_nome_utente/.backlight/lum+.sh
vostro_nome_utente ALL= NOPASSWD: /home/vostro_nome_utente/.backlight/lum-.sh

Prestate la massima attenzione a copiare alla perfezione queste due righe con spazi e punteggiatura, altrimenti andrete ad incasinare il sudo.
Uscite con ctrl+x confermando il salvataggio. Ora questi script saranno eseguibili a livello utente. Basta aggiungere due scorciatoie da tastiera per usarli, andate quindi nella relativa sezione delle impostazioni di sistema. Eliminate o disabilitate i tasti funzione predefiniti per la luminosità (per evitare conflitti), ipotizzando Fn+F3 e Fn+F4. Ora assegnate due nuove scorciatoie personalizzate inserendo i seguenti comandi:

bash -c “sudo /home/vostro_nome_utente/.backlight/lum-.sh”
bash -c “sudo /home/vostro_nome_utente/.backlight/lum+.sh”

Riavviate la sessione e magicamente i tasti da voi impostati dovrebbero aumentare e ridurre la retroilluminazione dello schermo. In caso contrario, per ora, non saprei in quale altro modo aiutarvi.

“Ci sono! Preghiere sui post-it!”

30 Risposte to “Guida alla retroilluminazione con tasti Fn su Linux”

  1. Michele Says:

    Segnalo 2 piccoli ma frustranti “errori” che fanno fallire la procedura a molti utenti copia-incollatori (me compreso :^) ) e che spero l’autore di questo post corregga:
    Le virgolette ed il segno – (meno) inserite in <> e <> sono caratteri visivamente simili a ciò che vogliono dire ma sbagliati. Per risolvere è sufficiente scriverli a mano al posto che copia-incollarli.

    P.S.
    Grazie mille! Mi sei stato parecchio utile per elementaryOS Freya. 😀

    • Michele Says:

      lol, mi è stato segato quello che era dentro il minore e maggiorem comunque le righe sono queste 2:
      let “bright = $bright – 10”
      let “bright = $bright + 10”

      • MasterPJ Says:

        Ti ringrazio per la segnalazione, ma per correttezza dell’articolo devo lasciare le cose così come sono. Segnare per esteso di scrivere a mano creerebbe confusione. Il tuo commento già servirà come riferimento ai futuri utenti 🙂

  2. davide Says:

    Ancora nada.. nemmeno con in nuovi tasti..

    • MasterPJ Says:

      Se lo script funziona ma i tasti non rispondono per me sbagliato qualcosa nell’impostare la combinazione. Prova a crearne una per uno scopo a casa per vedere se la crei in modo corretto.

  3. MasterPJ Says:

    allora per kde vai in:
    – impostazioni di sistema
    – scorciatoie e gesti
    – scorciatoie personalizzate
    – in basso premi su modifica -> nuovo -> scorciatoia globale -> comando/URL
    – dagli un nome, tipo lum+
    – nella linguetta attivazione registra la tua combinazione di tasti (es. Fn + F4)
    – in azione metti l’indirizzo del completo del tuo script per aumentare la luminosità
    – applica le impostazioni
    – crea nello stesso modo un’altra combinazione per lum-

    Poi prova e dovrebbe andare 😉

    • davide Says:

      Mi dispiace continuare a rompere.. ma non riesco proprio a farlo funzionare.. ora inserendo il comando bash si alza e abbassa la luminosità, ma non riesco a collegarlo a una qualche scorciatoia. Ho controllato che non ci fosse conflitto per quella combinazione di tasti e va tutto bene. ho anche provato a riavviare ma continuano a non rispondere ai comandi. eppure ho notato che in qualche modo ii tasti sono già “preimpostati” nel senso che nella linguetta d’immissione, quando premo fn+f6 esce direttamente “aumenta luminosità dello schermo”. quando però provo a usare la scorciatoia non succede assolutanmente nulla..

  4. Sanzo Says:

    Non che centri nulla, ma alla fine di ogni script bisognerebbe aggiungere il comando: exit
    Questo perché altrimenti la shell invocata resta aperta in modalità zombie finché non si spegne il pc.

  5. davide Says:

    Dunque mi sono accorto che stavo cercando di inserire quelle due righe nel posto sbagliato (cioè sudo visudo –> in fondo c’è il comando aggiungi, io provavo li -.-). Ora dovrei averle messe nel posto giusto e salvate, ma mi da un altro problema.. quando provo a dare bash -c mi dice:
    riga 3: let: “bright: errore di sintassi: atteso un operando (il token dell’errore è ““bright”)

    non so individuare l’errore di sintassi, quindi ti posto il mio script come ha fatto l’utente di prima..

    #!/bin/bash
    bright=$(cat /sys/class/backlight/nv_backlight/brightness)
    let “bright = $bright – 10″
    echo $bright > /sys/class/backlight/nv_backlight/brightness

    dovrebbe essere identico a quello scritto qua nel blog perchè ho copiato e incollato, quindi non so proprio dove possa stare l’errore..

    • MasterPJ Says:

      La sintassi pare corretta… mi posti il tuo comando bash -c?
      Mi viene da pensare, hai reso eseguibili gli script?

      • davide Says:

        bash -c “sudo /home/davide/.backlight/lum-.sh”
        /home/davide/.backlight/lum-.sh: riga 3: let: “bright: errore di sintassi: atteso un operando (il token dell’errore è ““bright”)

        comando ed errore.. copiati direttamente da quello che ho inserito.. Ho ricontrollato e sono entrambi eseguibili

      • Sanzo Says:

        Prova a dare questo comando:
        cat /sys/class/backlight/nv_backlight/brightness
        e posta il risultato

      • davide Says:

        il risultato è un numero: 100. Se non ho capito male dovrebbe essere il livello attuale della luminosità, giusto?

      • davide Says:

        si cambiando la luminosità con il comando echo 20 etc etc la nuova uscita è la luminosità che gli ho appena imposto..

      • Sanzo Says:

        Si, 100 è la luminosità attuale. Hai detto che l’hai copiato da qui. Copia-incolla? Leggo e rileggo ma sembra tutto corretto, mi viene da pesanre solo alle “. Prova a riscriverle perché a me, facendo copia-incolla, le copia diverse.

      • davide Says:

        Si effettivamente sono diverse.. le ho cambiate e sono diventate uguali.. ma ora da un altro errore sempre sulla stessa riga:
        riga 3: let: bright = 20 – 10: errore di sintassi: operatore aritmetico non valido (il token dell’errore è “– 10”)

        la riga che ho modificato ora è scritta così:
        let “bright = $bright – 10”

        solo che il primo bright e il – 10 sono diventati rossi..

      • davide Says:

        Miracolosamente i comandi sono stati presi.. ho riavviato un paio di volte ma ancora non riesco a modificare la luminosità utilizzando i tasti fn.. quale sarebbe il passaggio in cui assegno i tasti all’aumento e diminuzione della luminosità?

      • davide Says:

        kde

  6. MasterPJ Says:

    Hai controllato bene che il percorso scritto sia giusto compresi il punto per la cartella nascosta ecc…? Intendo non solo nel comando, ma anche il reale percorso.

  7. davide Says:

    Ciao ho un problema quando cerco di aggiungere l’eccezione al comando sudo. Lo script che cerco di inserire è:
    davide ALL=NOPASSWD: home/davide/.backlight/lum+.sh
    Premendo invio dopo averlo inserito mi esce la scritta:
    [“davide ALL=……….” non trovato]
    Non so se ho fatto dei casini prima perchè la prima volta mi ero sbagliato e avevo inserito solo il comando
    home/davide/.backlight/lum+.sh

    Come lo risolvo?
    PS: grazie per la guida.. la luminosità al max stava uccidendo sia me che la mia batteria 😉

    • MasterPJ Says:

      Ciao, vedo due errori: tra il segno = e ALL ci deve essere uno spazio. Mi è capitato che funzioni anche senza, altre volte no… prova. Secondo, e più importante, ci vuole lo / davanti a home. Quindi nel tuo caso diventa:
      davide ALL= NOPASSWD: /home/davide/.backlight/lum+.sh

      Fammi sapere, ciao 🙂

  8. Ivo Grimaldi Says:

    sulla mia ubuntu 12.04Lts i 2 script mi rispondono nel seguente modo:
    riga 3: let: “bright: errore di sintassi: atteso un operando (il token dell’errore è ““bright”)
    e lo script è i seguente:
    #!/bin/bash
    bright=$(cat /sys/class/backlight/intel_backlight/brightness)
    let “bright = $bright –10″
    echo $bright > /sys/class/backlight/intel_backlight/brightness

    ci deve essere qualcosa di sbagliato nella sintassi, ma non so dove……….

    • MasterPJ Says:

      ciao, scusa il ritardo. Credo l’errore sia nella terza riga, ti manca uno spazio: tu hai scritto -10, invece è – 10.
      Fammi sapere se ora funziona.

  9. Paolo Says:

    no , purtroppo non ho la capacita’ di mettermi a modificare configurazioni col terminale e non mi va poi di dover formattare tutto

    • MasterPJ Says:

      Formattare non è quasi mai la soluzione al di fuori di Windows. Ma molto spesso delle cose non funzionano da sole e vanno fatti uno o più interventi a mano per far girare tutto, come per esempio spiegavo in questa guida.

  10. Paolo Says:

    Purtroppo i tasti fn sono un problema , non solo quello della luminosita’ , ad esempio , io ho un samsung rc530 e non funziona nemmeno il tap sul pad e tutti i tasti fn tranne quello della sospensione , del controllo alimentazione, del mute e del blocco del pad ( che poi pero’ non si sblocca piu’….) e ho installato mint 13 , dunque abbastanza aggiornato.

    • MasterPJ Says:

      Di solito ci sono workaround vari, per il touch pad ho trovato qualcosa su google, per il resto non ho guardato. Hai provato a smanettare con qualcosa?


Lascia un commento