Mi Pi sigue apareciendo sin conexión tras 20 minutos inactivo y se despierta cuando me conecto por SSH
Traducido del English por IA ·
Hola a todos. Proyecto final: una Pi 3B+ en el invernadero que usamos para el proyecto lee un BME280 cada 15 minutos y envía los datos a Hermetry por MQTT (paho, keepalive dejado en el valor por defecto de 60). La Pi está en la Wi-Fi compartida de allí.Funciona un rato después del arranque, luego el dispositivo pasa a estar sin conexión en Hermetry y las lecturas se detienen. Lo raro es que en cuanto me conecto por SSH para mirar (tarda mucho en conectar), todo vuelve y el dispositivo vuelve a estar en línea. Parece que la Pi se duerme.La pestaña Log del dispositivo en Hermetry dice:
Disconnected Reason: keepalive_timeout
¿Hay algún modo de suspensión en Raspberry Pi OS que pueda desactivar? No lo encontré en raspi-config.Lo que ya probé: bajar el intervalo de publicación a 1 minuto (aguantó un poco más, quizá 40 minutos), otra fuente de alimentación (la oficial de 2,5 A) y revisar dmesg, que no muestra nada obvio en el momento de la caída. La Pi está claramente funcionando, porque un cron que escribe la temperatura de la CPU en un archivo local cada minuto sigue escribiendo todo el tiempo, incluso cuando Hermetry indica sin conexión. Uso Raspberry Pi OS Bookworm Lite, de 32 bits.
Hi all. Final year project, a Pi 3B+ in the greenhouse we use for the project reading a BME280 every 15 minutes and sending to Hermetry over MQTT (paho, keepalive left at default 60). Pi is on the shared Wi-Fi there.
It works for a while after boot, then the device goes offline in Hermetry and the readings stop. The weird bit is that as soon as I SSH in to look (which takes a long time to connect), everything comes back and the device is online again. Feels like the Pi is going to sleep.
The device’s Log tab in Hermetry says:
Disconnected Reason: keepalive_timeout
Is there a sleep mode on Raspberry Pi OS I can turn off? I couldn’t find one in raspi-config.
What I already tried: lowering the publish interval to 1 minute (made it last a bit longer, maybe 40 minutes), a different power supply (official 2.5 A one), and checking dmesg, which shows nothing obvious around the time it drops. The Pi itself is clearly running, because a cron job writing the CPU temperature to a local file every minute keeps writing the whole time, even while Hermetry says offline. I’m on Raspberry Pi OS Bookworm Lite, 32-bit.
Traducido del English por IA ·
Creo que hay una opción de apagado de pantalla en raspi-config, ¿quizás es eso lo que lo pone en suspensión? En el mío el HDMI se apaga a los 10 min.
I think there’s a screen blanking option in raspi-config, maybe that’s putting it to sleep? Mine turns the HDMI off after 10 min.
Traducido del English por IA ·
Es headless, no tiene pantalla. Aun así desactivé el apagado de pantalla por si acaso, sin cambios.
It’s headless, no screen at all. I turned blanking off anyway just in case, no change.
Traducido del English por IA ·
El apagado de pantalla no es la causa. Es el ahorro de energía clásico del Wi-Fi en el chip Broadcom de la Pi; me pasó lo mismo con una Pi 3B+ en una caseta de bombeo. La Pi no duerme, lo que duerme es el Wi-Fi, y los paquetes entrantes se retrasan o se pierden. Tu cliente paho envía un ping cada 60 s, la respuesta no llega a tiempo, Hermetry no ve nada dentro del keepalive y cierra la sesión, de ahí keepalive_timeout. Tu SSH despierta la radio, por eso todo vuelve en ese momento.
Compruébalo:
iw wlan0 get power_save
Power save: on
Para desactivarlo de forma permanente en Bookworm con NetworkManager:
sudo tee /etc/NetworkManager/conf.d/wifi-powersave.conf <<EOF
[connection]
wifi.powersave = 2
EOF
sudo systemctl restart NetworkManager
(2 significa desactivado.) Si estás en una imagen antigua con dhcpcd, pon iw wlan0 set power_save off en un script que se ejecute después de que la red esté activa.
Además, haz que tu cliente se reconecte solo: client.reconnect_delay_set(1, 120) y loop_forever o loop_start, para que una desconexión breve se solucione sola.
Screen blanking won’t do it. Classic Wi-Fi power saving on the Pi’s Broadcom chip, I had the same with a Pi 3B+ in a pump house. The Pi doesn’t sleep, the Wi-Fi does, and incoming packets get delayed or lost. Your paho client sends a ping every 60 s, the answer doesn’t come back in time, Hermetry sees nothing within the keepalive and closes the session, hence keepalive_timeout. Your SSH wakes the radio up, which is why everything comes back then.
Check it:
iw wlan0 get power_save
Power save: on
Turn it off for good on Bookworm with NetworkManager:
sudo tee /etc/NetworkManager/conf.d/wifi-powersave.conf <<EOF
[connection]
wifi.powersave = 2
EOF
sudo systemctl restart NetworkManager
(2 means disabled.) If you’re on an older image with dhcpcd, put iw wlan0 set power_save off in a script that runs after the network is up.
Also make your client reconnect on its own: client.reconnect_delay_set(1, 120) and loop_forever or loop_start, so a short drop fixes itself.
Traducido del English por IA ·
La función de ahorro de energía estaba activada. Añadí el archivo de configuración, reinicié NetworkManager, y lleva 3 días seguidos en línea, sin keepalive_timeout en la pestaña Log desde entonces. SSH también responde al instante, algo que ni siquiera había relacionado con el problema. ¡Gracias Ciaran!
Power save was on. Added the conf file, restarted NetworkManager, and it’s been online for 3 days straight now, no keepalive_timeout in the Log tab since. SSH is instant too, which I hadn’t even realised was related. Thank you Ciaran!
Traducido del English por IA ·
Ja, entonces lo que estaba dormido era el Wi-Fi, no la Pi. Voy a revisar la mía ahora.
Ha, so the Wi-Fi was asleep, not the Pi. Checking mine now.
- Debes estar registrado para responder a este debate.
Únete a la conversación
Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

