Jugando con los led de la Raspberry Pi

En la place de la Raspberry Pi hay dos leds (hay mas si contamos los del conector ethernet pero esos son otra historia). Uno verde conocido como ACT LED o led0 que se enciende cuando accede a la tarjeta SD y otro rojo conocido como PWR LED o led1 que se enciende cuando tiene alimentación. Usando comandos de Raspberry Pi OS tenemos cierto control sobre ellos.

Apagar y encender los leds

Hay varias maneras, en el siguiente apartado veremos otra, pero esta es recomendable puesto que los apaga si, afectar a su funcionamiento.

Apagar ACT LED

echo 0 | sudo tee /sys/class/leds/led0/brightness

Volver a encender ACT LED

echo 1 | sudo tee /sys/class/leds/led0/brightness

Apagar PWR LED

echo 0 | sudo tee /sys/class/leds/led1/brightness

Volver a encender PWD LED

echo 1 | sudo tee /sys/class/leds/led1/brightness

En la Raspberry Pi Zero los valores son al revés, 1 para apagar, 0 para encender

Cambiar función de los led

Podemos asignar distintas funciones a cada uno de los leds jugando con el trigger que controla su comportamiento.

El led ACT LED parpadea cada segundo:

echo timer | sudo tee /sys/class/leds/led0/trigger

El led PWR LED parpadea una sola vez

echo oneshot | sudo tee /sys/class/leds/led1/trigger

La diferencia esta en si en al ruta de /sys/class/leds/led0/trigger si se usa led0 o led1. Hay diferentes valores que se pueden usar:

none                Apagado
kbd-scrolllock      Keyboard bloq despl/scroll lock
kbd-numlock         Teclado bloq num/num lock
kbd-capslock        Keyboard bloq mayus/caps lock
kbd-kanalock        Keyboard kana lock
kbd-shiftlock       Tecla shift/mayus
kbd-altgrlock       Tecla altgr
kbd-ctrllock        Tecla ctrl
kbd-altlock         Tecla alt
kbd-shiftllock      Tecla shift/mayus izquierda
kbd-shiftrlock      Tecla shift/mayus derecha
kbd-ctrlllock       Tecla ctrl izquierda
kbd-ctrlrlock       Tecla ctrl derecha
timer               Parpadea cada segundo
oneshot             Parpadea una sola vez
heartbeat           Parpadea como un latido(1-0-1-00000)
backlight           Encendido
gpio                Permite controlarlo desde GPIO
cpu0                Parpadea cuando se usa la cpu0
cpu1                Parpadea cuando se usa la cpu0
cpu2                Parpadea cuando se usa la cpu0
cpu3                Parpadea cuando se usa la cpu0
default-on          Encendido
[input]             Encendido si el voltaje es suficiente
panic               Parpadea cuando hay un kernel panic
mmc0                Parpadea al acceder a la SD
mmc1                Parpadea al acceder a la SD secundaria
rfkill0             Parpadea con la actividad del WiFi
rfkill1             Parpadea con la actividad del bluetooth

Los eventos de teclado no funcionan con las conexiones en remoto, solo con los teclados directamente conectados a la Raspberry.

Los valores por defecto del led1 es [input] y el del led1 mmc0

Los valores none y default-on permiten apagar y encender el led, pero es más recomendable usar el método visto en el apartado anterior por no afecta a la funcionalidad del led, en cambio con none y default-on el led pierde su funcionalidad original para estar encendido siempre.

Como apagar la salida HDMI en la Raspberry Pi

Si tienes conectada una pantalla a tu Raspberry puede ser interesante apagarla cuando no sea necesaria, para ahorrar energía, para no molestar con su luz, para que dure más,….

Mi consejo es realizar las pruebas de todo los que vamos a ver en este post desde otro ordenador conectándonos a la Raspberry por SSH. No hay que olvidar que el primer paso es apagar la pantalla por lo que toda la parte de volver a encenderla tendrás que hacerla a ciegas.

El modo sencillo vcgencmd

Si esta forma te funciona enhorabuena, juegas en modo fácil. Eso no quiere decir que hayas ganado la partida. Ademas es la forma recomendada por la documentación de Raspberry Pi.

vcgencmd es una utilidad de Raspberry Pi OS para leer y fijar algunos valores de la controladores de vídeo de la Raspberry

Apagar la pantalla:

vcgencmd display_power 0

Volver a encender la pantalla:

vcgencmd display_power 1

Ahora bien a partir de la Raspberry Pi 4 llevan dos salidas HDMI puedes controlarlas por separado añadiendo un 2 para la salida HDMI 0 y un 7 para la salida HDMI 1.

Apagar y encender la salidad HDMI 0:

vcgencmd display_power 0 2
vcgencmd display_power 1 2

Apagar y encender la salidad HDMI 1:

vcgencmd display_power 0 7
vcgencmd display_power 1 7

El modo difícil tvservice

Si el modo fácil no funciona vamos al siguiente nivel.

tvservice permite controlar el servicio de video de Raspberry.

Apagar la pantalla:

tvservice -o

Ahora viene lo difícil, volver a encenderla. El problema suele ser que se vuelve a encender pero no con la configuración adecuada. Mi consejo es ir probando uno por uno los siguientes comandos:

tvservice -p
fbset -depth 8
fbset -depth 16
fbset -depth 32
xrefresh

Algunas pantallas volverán a funcionar correctamente con el primer comando, otras necesitaran solo hasta el tercero y otras necesitaran todos.

El caso más extremo reboot

Generalmente con alguno de los casos anteriores se logra apagar la pantalla y el problema suele ser volver a encenderla. Hay una solución que siempre funciona pero es tan radical que no siempre puede aplicarse. Reiniciar la Raspberry Pi con el comando:

reboot

Al reiniciarse la pantalla vuelve a funcionar con normalidad. Depende el uso que se le esté dando puede ser una solución que causa más problemas de los que soluciona.

Y aún así puede que no sirva de nada

Todo esto puede que no sirva para nada dependiendo de como se comporte la pantalla. Lo ideal es que al desconectar el puerto HDMI la pantalla se apague, pero el mundo no es un lugar perfecto y algunas pantallas en lugar de apagare muestran un mensaje estilo «No Signal», realmente es un mensaje útil cuando no sabes si lo que falla es la pantalla, el cable o el puerto HDMI, pero tras un rato en pantalla el monitor podría apagarse sin problemas. Al parecer no todos los fabricantes piensan así y la pantalla se queda encendida con lo que no logras nada.

Otro caso que da problemas son las pantalla que llevan iluminación trasera, esta puede seguir encendida aunque la pantalla se apague. Aunque en este caso si que reducimos el consumo energético.

También hay que tener ene cuanta las pantallas táctiles. Algunas siguen «leyendo» las pulsaciones en ellas aunque no vamos donde estamos pulsando.