07 marzo, 2025

Under voltage Raspberry Pi

Retomando algunas pruebas con mí Raspberry PI 3B, me encontré con un molesto y popular problema de under voltage ⚡🙇


Si queres saber la solución temporal que apliqué ir a la sección "Solución"

Planteando el Problema

En Raspberry Pi OS (Raspian para los de veja escuela) se vuelve insoportable y molesto el maldito cartel de "Low voltage waring" , porque me tiene que torturar todo el tiempo?

Además percibí cierto impacto en en rendimiento, el cual lo acepto si es legítimo el Low voltage.

A pesar de reducir el consumo al mínimo, tener apagado el WIFI y Bluethoot, tener solo un mouse/teclado inalámbrico USB el podrido cartel persiste (si, me molestaba mucho)


Que cuerno significa "Low Voltage"?

Indica que la fuente no entrega el nivel de tensión suficiente pero si lo mínimo necesario para iniciar. 


O sea, va arrancar pero cuando le pidas que trabaje al 100% puede ser que tengas "problemas"

Dependiendo de nuestro firmware se puede observar con un cuadrado de colores (rainbow square) en la esquina derecha superior o un rayo amarillo; ademas en las últimas versiones de Raspberry Pi OS adiciona un odioso mensaje (mi caso)

Según su documentación oficial, todos los modelos desde la Raspberry Pi B+ (2014) (excepto las Zero) poseen un circuito que detecta la baja tensión (low voltage), cuando la tensión baja por debajo de los 4,63V (con una tolerancia de +/- 5%). Esto genera un evento dentro del kernel log.

Para comprobar el mensaje de kernel ejecuto:
dmesg | grep -iC 3 "under-voltage detected"
en donde:
  • i = Insensitive 
  • C 3 = las 3 lineas previas

Vamos a encontrar el mensaje
Under-voltage detected!

Otra manera de verificarlo es ejecutando
vcgencmd get_throttled

vamos a tener de resultado algo así:
throttled=0x50005

Si aparece 0 es porque esta todo OK (throttled=0x00000)

Este número básicamente indica que la Raspberry Pi ha detectado un voltaje insuficiente y que actualmente está limitando el procesador. También nos indica que la CPU ha tenido anteriormente un evento de voltaje insuficiente que limitó la velocidad el procesador.

El número resultante se puede interpretar mediante la siguiente tabla:

Bit

Hex Valor

Significado

0

1

Under-voltage detected

2

4

Currently throttled

16

1000

Under-voltage has occurred

18

4000

Throttling has occurred






Requerimientos de Voltage y suministro

Por otra parte los requerimientos de potencia eléctrica (según documentación oficial) es para las Pi 3 A+ / B / B+ es:
  • 5,1V
  • 2,5A
Teniendo una fuente que suministra 5V y 2,5A , la diferencia de 0,1V = 5,1V (requiere) - 5,0V  (provisto) no debería presentar problemas ya que trabaja por arriba de 4,63V 🤔

Debería mediar la señal sobre la línea de GPIO35 para confirmar que la fuente no miente en su etiquetas de datos característicos. //PENDING//

Probablemente la fuente entregue esa potencia, pero puede ser que tenga un asqueroso cable que genere mucha perdida ya que tiene una extensión de 2m desde la fuente e incluye un interruptor para el corte de suministro.

Tabla de caída de tensión para diferentes calibres de cables para 5V según su longitud

Siguiendo la tabla, con esa distancia que tengo (2 m), la caída (drop)  es muy considerable a 2A 

Que riesgos asumo funcionando en Under-Voltage?

Los riesgos son de posibles reinicios y congelamiento (freeze) inesperados. Estos reinicios pueden generar errores de escritura en la SD corrompiendo algún archivo o haciéndola inaccesible, dependiente principalmente cuanto se escribe en la misma.

O sea, para algo productivo en serio se debe colocar una fuente adecuada (ej la original de Raspberry)

Como detecta el Low-Voltage? (IC)

Mediante hardware, posee un circuito específicamente para detectar si la alimentación se encuentra por arriba o por debajo de cierto nivel (4,63V). En la Raspberry Pi 3 B (v1.2) se encarga el IC APX803-46SAG que genera el parpadeo del LED de PWR y envía la señal al micro (µP). Según su hoja de datos, su se utiliza en circuitos de supervisión de microprocesadores (µP) para monitorear las fuentes de alimentación en sistemas µP y digitales. 


Sección del esquemático de la Raspberry del detector tensión de fuente

Revisando el diagrama en bloques del IC nos encontramos:



Este IC realizan una única función: emiten una señal de reinicio al encenderse y siempre que el voltaje de suministro de Vcc descienda por debajo de un umbral preestablecido, manteniéndolo activado durante un período fijo de tiempo después de que Vcc haya superado el umbral de reinicio. Para el APX803D, este período es un mínimo de 1 ms, mientras que para otras variantes del APX803 es de al menos 140 ms. El comparador de reinicio está diseñado para ignorar los transitorios rápidos en Vcc, y se garantiza que las salidas estén en el estado lógico correcto para Vcc hasta 1 V.

Para este modelo de IC (46SG), la tensión de umbral (Vth) es de:
  • Mínimo = 4,63 V
  • Máximo = 4,70 V 
  • Típico = 4,56V
De aquí sale el famoso 4,63V que menciona la documentación oficial 😉

Se podrían hacer algunos maldades para no tener la señal de PWR_LOW_N 😈 pero lo voy a dejar para otro post (no quiero sacar protecciones).

LEDs de Estado

La Raspberry cuenta con unos leds que son los indicadores por hardware para conocer diferentes estados, muy útil al momento que no inicia o tiene reinicios permanentes.



LED PWR

LED de color rojo, indica el estado de la fuente de alimentación. Si el LED comienza a parpadear,  cuando la tensión ha caído por debajo de 4,63 V, por arriba de ese valor se ilumina en forma continua. El LED también se enciende cuando la Raspberry Pi está apagada.
Si el LED PWR parpadea, generalmente hay un problema con la fuente de alimentación, por lo que primero se debe verificar ésta.
La indicación con parpadeo se dá en los modelos A+ en adelante

Otra alternativa:
  • 4 destellos largos, 4 destellos cortos, 1 destello muy largo: no se puede reconocer la imagen del sistema operativo, reinstalar la imagen solucionará el problema.


LED ACT

LED de color verde, indica acceso a la tarjeta SD. Este LED parpadea en verde cada vez que se accede a la tarjeta SD (lectura y escritura). Si el LED ACT está en verde fijo, no se puede acceder a la tarjeta SD o a la imagen. Puede ser que no haya una tarjeta SD, que esté vacía o defectuosa, o que no haya una imagen de arranque en la tarjeta.

Si los LED comienzan a parpadear siguiendo patrones:
  • Parpadeo 1 veces: incompatible SD Card
  • Parpadeo 2 veces: la SD Card no se puede leer
  • Parpadeo 3 veces: loader.bin no está presente (la tarjeta SD también puede estar defectuosa)
  • Parpadeo 4 veces: loader.bin no se ha iniciado (la tarjeta SD también puede estar defectuosa)
  • Parpadeo 5 veces: start.elf no esta presente (la tarjeta SD también puede estar defectuosa)
  • Parpadeo 6 veces: start.elf no se ha iniciado (la tarjeta SD también puede estar defectuosa)
  • Parpadeo 7 veces: kernel.img no está presente
  • Parpadeo 8 veces: SD no reconocida. Quizás una actualización de bootcode.bin o start.elf ayude

Solución

Ya que es para hacer algunas pruebas, antes de ir por una fuente más estable o hacer maldades por hardware, me decidí por desactivar ese molesto cartel por software asumiendo los riesgos que implica.

Desde alguna versión de Raspbian del 2021, el cartel se volvió muy molesto, no solamente es el cuadrado de colores o el rayo

Primer intento

Desinstalé el gestor de batería que trae Raspbian y quitar el plugins de la barra. 
Ejecute 
sudo apt remove lxplug-ptbatt

No tuvo ningún efecto.



Segundo intento success 

Además de darle un apt update y apt install que mejoró un poco (aparecía menos) ya que tendría algún update pendiente que ayudo.

Agregué en siguiente modificador al /boot/firmware/config.txt

avoid_warnings=2

Al reiniciar todo un éxito, ya no aparece ese maldito cartel


Algunos post indican que también es necesario desinstalar el lxplug-ptbatt , quedará pendiente a probar o que alguien me lo confirme.

Que significa el modificador avoid_warnings ?

Este modificador existe justamente para omitir esta advertencia y limitación de velocidad al iniciar la Raspberry
  • avoid_warnings=1 removes the warning overlay.
  • avoid_warnings=2 removes the warning overlay and allows turbo when low-voltage is present.


Referencias 

  • https://forums.raspberrypi.com/viewtopic.php?t=307817
  • https://raspberryparanovatos.com/articulos/configtxt-que-es-y-como-usarlo/
  • https://raspberrytips.com/under-voltage-errors-raspberry-pi/
  • https://github.com/raspberrypi/linux/issues/2512
  • https://raspberrypi.stackexchange.com/questions/60593/how-raspbian-detects-under-voltage
  • https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#power-supply
  • https://pimylifeup.com/raspberry-pi-low-voltage-warning/
  • https://www.cnx-software.com/2017/04/27/selecting-a-micro-usb-cable-to-power-development-boards-or-charge-phones/
  • https://schmidt-feldberg.de/raspberry-pi-3-b-bedeutung-der-status-leds/
  • https://raspberry-valley.azurewebsites.net/Raspberry-Pi-LEDs/
  • https://www.raspberrypi-spy.co.uk/2013/02/raspberry-pi-status-leds-explained/
  • https://forums.raspberrypi.com/viewtopic.php?t=158777
  • https://www.raspberrypi.org/app/uploads/2012/10/Raspberry-Pi-R2.0-Schematics-Issue2.2_027.pdf
  • https://datasheets.raspberrypi.com/rpi3/raspberry-pi-3-b-reduced-schematics.pdf
  • https://mm.digikey.com/Volume0/opasdata/d220001/medias/docus/639/APX803_D_Rev_3.3.pdf

0 comments:

Publicar un comentario