Problema brillo pantalla video card Intel

Iniciado por ankero, 10 Mayo 2010, 22:10 PM

0 Miembros y 1 Visitante están viendo este tema.

Festor

Lo que te voy a exponer aquí sólo es provisional y para ver si funciona...

Digo esto porque con un poco de trabajo se puede hacer mucho más ameno el proceso e incluso llegar a utilizar las teclas del portátil para aumentar o disminuir el brillo sin necesidad de usar comandos.... pero para hacer eso antes hay que comprobar si funciona o no.

Entonces, dicho lo anterior comenzamos...

En una terminal:

Código (bash) [Seleccionar]
sudo gedit /usr/bin/pantalla

En la ventana que te saltara (una vez que introduzcas la contraseña), copia y pega el contenido de este script:

Código (bash) [Seleccionar]

#!/bin/bash
# increase/decrease/set/get the backlight brightness (range 0-255) by 16
#
#get current brightness in hex and convert to decimal
var1=`setpci -s 00:02.1 F4.B`
var1d=$((0x$var1))
case "$1" in
      up)
              #calculate new brightness
              var2=`echo "ibase=10; obase=16; a=($var1d+16);if (a<255) print a else print 255" | bc`
              echo "$0: increasing brightness from 0x$var1 to 0x$var2"
              setpci -s 00:02.1 F4.B=$var2
              ;;
      down)
              #calculate new brightness
              var2=`echo "ibase=10; obase=16; a=($var1d-16);if (a>15) print a else print 15" | bc`
              echo "$0: decreasing brightness from 0x$var1 to 0x$var2"
              setpci -s 00:02.1 F4.B=$var2
              ;;
      set)
              #n.b. this does allow "set 0" i.e. backlight off
              echo "$0: setting brightness to 0x$2"
              setpci -s 00:02.1 F4.B=$2
              ;;
      get)
              echo "$0: current brightness is 0x$var1"
              ;;
      toggle)
              if [ $var1d -eq 0 ] ; then
                      echo "toggling up"
                      setpci -s 00:02.1 F4.B=FF
              else
                      echo "toggling down"
                      setpci -s 00:02.1 F4.B=0
              fi
              ;;
      *)
              echo "usage: $0 {up|down|set <val>|get|toggle}"
              ;;
esac
exit 0


Ahora guarda el fichero y cierra el editor de textos, pero en la misma terminal ejecuta:

Código (bash) [Seleccionar]
sudo chmod +x pantalla

Para que el script tenga permisos de ejecución.

Por último comprueba si funciona, es decir, desde una terminal ejecuta:

Código (bash) [Seleccionar]
sudo pantalla set 200

Y luego

Código (bash) [Seleccionar]
sudo pantalla set 100

para ver si el brillo de la pantalla varia.

ankero

Saludos Festor,

Seguí tus instrucciones pero al momento de ejecutar el comando "$ sudo chmod +x pantalla" la consola me devuelve; 

chmod: no se puede acceder a «pantalla»: No existe el fichero ó directorio

Confirme en Sistema de archivos - user - bin y el script efectivamente está creado, al consultarle las propiedades me dice que el nombre es "pantalla" y es un archivo de tipo Script en Shell... en la ruta \usd\bin, estoy seguro de haber seguido el procedimiento, te agradezco me  confirmes, por favor.

Festor

Cita de: ankero en 14 Mayo 2010, 00:43 AM
Saludos Festor,

Seguí tus instrucciones pero al momento de ejecutar el comando "$ sudo chmod +x pantalla" la consola me devuelve;

chmod: no se puede acceder a «pantalla»: No existe el fichero ó directorio

Fallo mio...  :-[

Para darle permisos de ejecución al script que has creado en /usr/bin naturalmente tienes que estar en /usr/bin o al menos indicarselo al chmod, es decir, esto te debería funcionar:

Código (bash) [Seleccionar]
sudo chmod +x /usr/bin/pantalla

ankero

Hola de nuevo Festor,

El comando corregido no da ningún mensaje de error, así que pase a los otros comandos con pruebas cambiando el valor del brillo pero no hay cambios en la pantalla, el brillo no varia, la consola me arroja:

~$ sudo pantalla set 10
/usr/bin/pantalla: setting brightness to 0x10

~$ sudo pantalla set 50
/usr/bin/pantalla: setting brightness to 0x50

~$ sudo pantalla set 100
/usr/bin/pantalla: setting brightness to 0x100
setpci: Value "100" is out of range

Usage: setpci [<options>] (<device>+ <reg>[=<values>]*)*

General options:
-f      Don't complain if there's nothing to do
-v      Be verbose
-D      List changes, don't commit them

PCI access options:
-A <method>   Use the specified PCI access method (see `-A help' for a list)
-O <par>=<val>   Set PCI access parameter (see `-O help' for a list)
-G      Enable PCI access debugging
-H <mode>   Use direct hardware access (<mode> = 1 or 2)

Setting commands:
<device>:   -s [[[<domain>]:][<bus>]:][<slot>][.[<func>]]
   |   -d [<vendor>]:[<device>]
<reg>:      <number>[.(B|W|L)]
     |      <name>
<values>:   <value>[,<value>...]
<value>:   <hex>
       |   <hex>:<mask>

Si coloco el set de pantalla sobre 100 me arroja el último mensaje, en cualquier otro caso, se supone que si acepta el cambio en el brillo pero la pantalla en realidad no hay ningún cambio, probé reiniciando y tampoco funcionó, te agradezco me brindes alguna sugerencia, gracias.

Festor

Cita de: ankero en 15 Mayo 2010, 18:56 PM
Si coloco el set de pantalla sobre 100 me arroja el último mensaje, en cualquier otro caso, se supone que si acepta el cambio en el brillo pero la pantalla en realidad no hay ningún cambio, probé reiniciando y tampoco funcionó, te agradezco me brindes alguna sugerencia, gracias.

Bueno... pues si no funciona habrá que probar otra cosa... :-\

Abre el script que hemos creado antes:

Código (bash) [Seleccionar]
sudo gedit /usr/bin/pantalla

Y remplaza su contenido con esto otro:

Código (bash) [Seleccionar]

#!/bin/bash
var1=`cat ~/.backlight`
var2=`echo "16 i $var1 F + p"|dc`
if (( ( "$var2" \> "-1") && ( "$var2" \< "256" ) ));
then
var3=`echo "10 i 16 o $var2 p"|dc`
echo $var3 > ~/.backlight
sudo setpci -s 00:02.1 F4.B=$var3
fi


Luego crea el fichero .backlight, en tu home, es decir:

Código (bash) [Seleccionar]
nano ~/.backlight

Pulsa la tecla Ctrl y la letra O para guardar y Ctrl y la letra X para cerrar el editor de textos nano.

Y por último prueba el script, esta vez sin parámetros:

Código (bash) [Seleccionar]
sudo pantalla

Si la primera vez no notas ningún cambio, prueba a ejecutarlo de nuevo 2 o 3 veces más.

Lo que se hace aquí es guardar el valor de brillo en el fichero .backlight e incrementarlo cada vez que se llama al script. Si funciona, entonces se puede usar un script para aumentar el brillo y otro para reducirlo... y con suerte asociarlo a las teclas de la computadora para no tener que manejar la terminal.

La diferencia de este script respecto al anterior es que se utiliza otra método para calcular el valor a introducir mediante el comando setpci.

Si tienes cualquier duda pregunta.

ankero

hola festor, lo que quiero es bajarle el brillo a la pantalla que está excesivamente alto, está al máximo.  El comando que me das no lo baja, queda igual, te agradezco me facilites el script que mencionas puede disminuir el brillo. Mil gracias

Festor

Voalá! ^_^

Código (bash) [Seleccionar]
#!/bin/bash
var1=`cat ~/.backlight`
var2=`echo "16 i $var1 F - p"|dc`
if (( ( "$var2" \> "-1") && ( "$var2" \< "256" ) ));
then
var3=`echo "10 i 16 o $var2 p"|dc`
echo $var3 > ~/.backlight
sudo setpci -s 00:02.1 F4.B=$var3
fi


La fuente de ambos scripts, por si te interesa es esta: http://bbs.archlinux.org/viewtopic.php?id=74914