¿Cómo apagar de forma segura la Raspberry Pi?

30

Por lo general, con una computadora de escritorio, si ejecuto sudo shutdown -P now, la computadora se apaga por completo y puedo volver a encenderla con un botón. (Del mismo modo, si la computadora falla, puedo forzar un reinicio manteniendo presionado el botón de encendido durante 5 segundos más o menos).

La Raspberry Pi no tiene un botón de encendido. De hecho, si corro sudo shutdown -P now, el led de alimentación todavía parece estar encendido, y para volver a encenderlo, parece que necesito desconectarlo y volver a enchufarlo. Esto parece algo análogo a "Ahora es seguro apagar su computadora" en versiones anteriores de Windows.

¿En qué momento es seguro desconectar el Raspberry Pi? ¿Estoy haciendo algo mal?

George Simms
fuente
2
El led rojo solo indica que el oi está recibiendo energía. Al que quieres prestarle atención es al verde. Si parpadea, significa que la oi está accediendo a la tarjeta microSD. Cuando te apagues, míralo. Debería parpadear 4-10 veces. Una vez que esto ocurre, es seguro desconectarlo.
TheXed
1
Siempre que su tarjeta SD esté formateada en ext4 (u otro FS de diario), francamente es más o menos seguro apagarla cada vez que el pi está inactivo. Al menos más seguro de lo que era simplemente apagar una computadora con Windows95. (No es que yo recomiendo para todas las aplicaciones críticas de seguridad ... sino un PI no es exactamente ideal, entonces, de todos modos.)
leftaroundabout
44
@leftaroundabout, el diario no hace mucho cuando el medio subyacente no puede manejar una falla de energía limpiamente. Frecuentemente necesito volver a formatear mis tarjetas SD después de un corte de energía.
Mark
@ Mark: posible. Tengo un pi que a menudo he dejado sin seguridad sin complicaciones, pero de hecho, este solo usa la tarjeta solo para el cargador de arranque y tiene todo lo demás en un disco duro USB.
Leftaroundabout
@ Mark Tampoco significa mucho cuando está en medio de una escritura de datos. Aún perderás tus datos. Simplemente garantiza la consistencia del sistema de archivos.
Bob

Respuestas:

18

No estás haciendo nada malo.

El LED de actividad debe parpadear 3 o 4 veces justo antes de apagarse. Entonces es seguro quitar el poder.

Normalmente apago, me voy unos minutos y luego desconecto el cable de alimentación.

joan
fuente
15

No necesita quitar la energía para reiniciar Pi. Hay un par de pads cerca de la tarjeta SD (creo que el reinicio etiquetado posiblemente se ejecute; no puedo ver en mi Pi porque todos tienen el interruptor soldado en el tablero). Momentáneamente corto para reiniciar.

Rasbpian reciente tiene un proceso incorporado para el apagado (manejado por systemd-logind)

Agregue lo siguiente a /boot/config.txt

dtoverlay=gpio-shutdown,gpio_pin=5

Esto permite que un interruptor conectado entre el pin 29 (GPIO 5) y el pin 30 (Gnd) inicie un apagado ordenado del Pi.

Se puede usar casi cualquier pin: el predeterminado es el pin 5 (GPIO 3), aunque esto se usa a menudo para I²C ,gpio_pin=21usaría los mismos pines utilizados en el script pin 40 (GPIO 21) y pin 39 (Gnd)

Recomiendo sudo poweroffapagar el Pi. No hay nada de malo en lo que está haciendo, pero poweroffhace que el LED verde parpadee 10 veces a intervalos de 1 segundo cuando es seguro apagarlo.

Tengo un script de Python que apaga el Pi con un botón.

#!/usr/bin/env python2.7
#-------------------------------------------------------------------------------
# Name:         Shutdown Daemon
#
# Purpose:      This program gets activated at the end of the boot process by
#               cron. (@ reboot sudo python /home/pi/shutdown_daemon.py)
#               It monitors a button press. If the user presses the button, we
#               Halt the Pi, by executing the poweroff command.
#
#               The power to the Pi will then be cut when the Pi has reached the
#               poweroff state (Halt).
#               To activate a gpio pin with the poweroff state, the
#               /boot/config.txt file needs to have :
#               dtoverlay=gpio-poweroff,gpiopin=27
#
# Author:      Paul Versteeg
#
# Created:     15-06-2015, revised on 18-12-2015
# Copyright:   (c) Paul 2015
# https://www.raspberrypi.org/forums/viewtopic.php?p=864409#p864409
#-------------------------------------------------------------------------------

import RPi.GPIO as GPIO
import subprocess
import time

GPIO.setmode(GPIO.BCM) # use GPIO numbering
GPIO.setwarnings(False)

# I use the following two GPIO pins because they are next to each other,
# and I can use a two pin header to connect the switch logic to the Pi.
# INT = 17    # GPIO-17 button interrupt to shutdown procedure
# KILL = 27   # GPIO-27 /KILL : this pin is programmed in /boot/config.txt and cannot be used by any other program
INT = 21    # GPIO button interrupt to shutdown procedure

# use a weak pull_up to create a high
GPIO.setup(INT, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def main():

    while True:
        # set an interrupt on a falling edge and wait for it to happen
        GPIO.wait_for_edge(INT, GPIO.FALLING)
#       print "button pressed"
        time.sleep(1)   # Wait 1 second to check for spurious input
        if( GPIO.input(INT) == 0 ) :
            subprocess.call(['poweroff'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

if __name__ == '__main__':
    main()
Milliways
fuente
¿Puede agregar ese código de Python como referencia, y qué pasa si le doy a la fuente de energía que automáticamente se iniciará pi o de lo contrario?
Gaurav Dave
4

Nadie parece haber respondido a esta pregunta: "¿En qué momento es seguro desconectar el Raspberry Pi?"

Para apagar correctamente, ejecutas

sudo shutdown

Cuando haga esto, verá que la luz "ACT" (la verde) parpadea 10 veces (intervalos de 0.5 segundos). Una vez que deja de parpadear, la luz verde se apagará. En este punto, es seguro desconectar la alimentación o desconectar el enchufe.

La luz roja permanecerá encendida mientras haya energía aplicada al Pi.

Después del apagado, debe quitar la alimentación y luego volver a aplicarla para encender el Pi.

Electronics_John
fuente
2

Como han dicho las respuestas anteriores, el led rojo significa que el pi está recibiendo energía, mientras que el led verde es actividad (creo que la actividad del disco)

puede tirar del enchufe cuando el LED verde ha dejado de parpadear después de un comando de apagado o puede acortar los botones de ejecución / reinicio que están en el tablero

Este sitio web tiene excelentes instrucciones sobre cómo agregar un interruptor de restablecimiento completo si está dispuesto a soldar algunos pines.

Si usa el restablecimiento completo, asegúrese de usarlo solo después de una interrupción o apagado del sistema o como último recurso, ya que reinicia inmediatamente el procesador, si está escribiendo en su tarjeta SD, entonces puede corromperla simplemente tirando de la alimentación mientras corre

S.Rose
fuente
2

Aquí hay un script de Python de apagado realmente simple.

import RPi.GPIO as GPIO 
import os 
channel=11 
GPIO.setmode(GPIO.BOARD) 
#Pin 11 & Gnd 

GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.wait_for_edge(channel, GPIO.FALLING) 
os.system("sudo shutdown -h now")
Andy Anderson
fuente