tech explorers, welcome!

Etiqueta: ubuntu

Configuración de ventilador con indicador de estado para Raspberry Pi 5 con Ubuntu

El calor ha llegado de nuevo y notaba mi Raspberry Pi demasiado caliente teniendo en cuenta que tiene el ventilador oficial incrustado, con temperaturas que fácilemnte superaban los 60ºC.

Desde que le instalé Ubuntu, el ventilador no parecía funcionar bien, pero parece que es algo que se ha resuelto con las versiones más recientes del kernel.

Así que aquí os traigo una configuración del ventilador para Ubuntu y una visualización de su estado.

Comprobación del ventilador

Primero comprobemos que el ventilador funciona correctamente accionándolo manualmente.

Actualiza tu sistema operativo para contar con los últimos parches que arreglan el funcionamiento del ventilador. Mi última versión es Ubuntu Linux 24.04.2.

Ahora deberías ser capaz de encender el ventilador manualmente introduciendo el siguiente comando en la terminal:

echo 4 | sudo tee /sys/class/thermal/cooling_device0/cur_state

Un valor de 4 encenderá el ventilador a sus máximas revoluciones. Puedes cambiar este valor entre 0 y 4.

Si lo anterior funcionó correctamente oirás bastante ruido del ventilador. Ahora puedes apagarlo cambiando el valor del comando anterior a 0:

echo 0 | sudo tee /sys/class/thermal/cooling_device0/cur_state

Verás que cambiando el valor del archivo cur_sate manualmente se cambia la velocidad del ventilador. Eso es exactamente lo que ahce el demonio automáticamente con el ventilador, una vez configurado. Así que monitorizaremos este valor más tarde para averiguar si el ventilador está funcionando (valor devuelto != 0):

cat /sys/class/thermal/cooling_device0/cur_state

Configuración del ventilador

El ventilador no viene preconfigurado en las versiones anteriores del kernel de Ubuntu para Raspberry Pi y no sé si lo hace ahora por defecto.

Comprobémoslo editando el archivo config.txt ubicado en /boot/firmware buscando unas líneas similares a las siguientes:

dtparam=fan_temp0=58000
dtparam=fan_temp0_hyst=10000
dtparam=fan_temp0_speed=200

Si no las encuentras, añádelas justo al final del archivo.

Si quieres puedes editar los valores libremente teniendo en cuenta que:

fan_temp0=58000 indica la temperatura de activación que enciende el ventilador

fan_temp0_hyst se refiere a la reducción de temperatura que apaga el ventilador respecto a la de activación (10000 por debajo de 58000 = 48000)

fan_temp0_speed indica la velocidad del ventilador de 0 a 255

Así que dejamos nuestro ventilador configurado para encenderse a 200rpm si la temperatura supera 58ºC y apagarse cuando baje 10ºC (~48ºC).

Ahora para aplicar estos cambios debemos reiniciar el sistema.

Monitorizar el ventilador

Ya monitorizaba ciertas variables de mi Raspberry Pi 5 usando una pantalla OLED, como explicaba en este post:

https://theroamingworkshop.cloud/b/2683/carcasa-pantalla-oled-con-panel-de-estado-para-raspberry-pi

Ahora vamos a añadir un indicador del estado del ventilador!

He añadido un par de líneas al script de python para obtener el estado del ventilador usando el comando que vimos anteriormente:

#Fan ON/OFF
cmd = "cat /sys/class/thermal/cooling_device0/cur_state"
Fan = subprocess.check_output(cmd, shell=True).decode("utf-8")

Un poco más abajo leo una imagen .png para dibujar el ventilador:

fan_img=Image.open("~/Documents/OLED/fan-icon.png")
fan_img = fan_img.resize((30, 30), Image.BICUBIC)
fan-icon.png

Y justo a la hora de mostrar todo en pantalla, añado el icono del ventilador si detectamos que está encendido (distinto de 0):

if int(Fan)!=0:
    bg.paste(fan_img,(90,55))

Todos estos cambios están actualizados en el repositorio de Github repository:

https://github.com/TheRoam/RaspberryPi-SSD1351-OLED

Y ese es un indicador bastante chulo para tu Raspberry!

Nos vemos! 👋

🐦 @RoamingWorkshop

Instalar UnityHub en Ubuntu 22

Si has actualizado a Ubuntu 22 y has intentado instalar UnityHub siguiendo los pasos de su web:

https://docs.unity3d.com/hub/manual/InstallHub.html#install-hub-linux

Todo va aparentemente bien, hasta que al ejecutar el programa te aparece esto:

>> unityhub
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
ConnectionLost: Timeout! Cannot connect to Licensing Client within 60000ms
    at Function.fromType (/opt/unityhub/resources/app.asar/node_modules/@licensing/licensing-sdk/lib/core/ipc/licensingIpc.js:51:16)
    ...

Por suerte, surfeando por la web sueles encontrar la solución, y en el propio forum de Unity han dado con una:

https://forum.unity.com/threads/installing-unity-hub-on-ubuntu-22-04.1271816/#post-8136473

Veamos toda la instalación paso a paso:

Instalar UnityHub para Linux

Seguimos los pasos oficiales de su web (primer enlace del post):

  1. Añade el repositorio de Unity a la lista de fuentes de paquetes de Linux:
    sudo sh -c 'echo "deb https://hub.unity3d.com/linux/repos/deb stable main" > /etc/apt/sources.list.d/unityhub.list'
  2. Añade la clave pública para hacerlo confiable:
    wget -qO - https://hub.unity3d.com/linux/keys/public | sudo apt-key add -
  3. Actualiza tus repositorios:
    sudo apt update
  4. Instala UnityHub:
    sudo apt-get install unityhub

Todo debería ir bien, a pesar de un error al abrir una supuesta carpeta «chrome-sandbox». Aun así, ese no es el error, al ejecutar unityhub desde el terminal nos aparece el error de arriba.

Instalar libssl1.1

El problema está en que Ubuntu 22 usa una versión más reciente del paquete libssl, pero podemos descargar la versión utilizada por Ubuntu 20.

  1. Accedemos a la página de paquetes de Ubuntu 20, donde encontramos libssl1.1
    https://packages.ubuntu.com/focal/amd64/libssl1.1/download
  2. Hacemos click derecho -> guardar como… sobre el enlace al fichero que empieza por security.ubuntu.com/ubuntu… (o haz click al enlace de abajo; descargarás el paquete instalador en formato .deb)
    http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb
  3. Hacemos doble-click en el fichero descargado e instalamos el paquete.
  4. Ahora ejecutamos unityhub en el terminal y todo listo!

🐦 @RoamingWorkshop