Como desligar com segurança o Raspberry Pi?

30

Normalmente, com um computador de mesa, se eu executar sudo shutdown -P now, o computador desliga completamente e posso ligá-lo novamente com um botão. (Da mesma forma, se o computador travar, eu posso forçar uma reinicialização pressionando o botão liga / desliga por 5 segundos ou mais.)

O Raspberry Pi não possui um botão liga / desliga. De fato, se eu correr sudo shutdown -P now, o led de energia ainda parece estar ligado e, para iniciá-lo novamente, pareço precisar desconectá-lo e conectá-lo novamente. Isso parece um pouco análogo ao "Agora é seguro desligar o computador" nas versões antigas do Windows.

Em que momento é seguro puxar o plugue do Raspberry Pi? Estou fazendo algo errado?

George Simms
fonte
2
O led vermelho indica apenas que o oi está recebendo energia. O que você deseja prestar atenção é o verde. Se estiver piscando, significa que o oi está acessando o cartão microSD. Quando você desligar, assista. Deve piscar 4-10 vezes. Quando isso ocorre, é seguro desconectar.
TheXed
1
Desde que o seu cartão SD esteja formatado em ext4 (ou outro FS diário), é francamente mais ou menos seguro desativá-lo sempre que o pi estiver ocioso. Pelo menos mais seguro do que era apenas desligar um computador com Windows95. (Não que eu recomendo para quaisquer aplicações críticas de segurança ... mas um pi não é exatamente ideal, em seguida, de qualquer maneira.)
leftaroundabout
4
@leftaroundabout, o diário não faz muito quando o meio subjacente não consegue lidar com uma falha de energia de forma limpa. Frequentemente, preciso reformatar meus cartões SD após uma falha de energia.
Mark
@ Mark: possível. Eu tenho um pi que muitas vezes desliguei sem segurança, sem complicações, mas, na verdade, este só usa a placa apenas para o carregador de inicialização e tem todo o resto em um disco rígido USB.
usar o seguinte comando
@ Mark Também não significa muito quando está no meio de uma gravação de dados. Você ainda perderá seus dados. Apenas garantiu a consistência do sistema de arquivos.
22416 Bob

Respostas:

18

Você não está fazendo nada de errado.

O LED de atividade deve piscar 3 ou 4 vezes antes de desligar. É seguro remover a energia.

Normalmente, desligo, passo alguns minutos e depois retiro o cabo de alimentação.

joan
fonte
15

Você não precisa remover a energia para reiniciar o Pi. Há um par de pads perto do cartão SD (eu acho que a redefinição rotulada pode ser executada - não consigo ver no meu Pi porque todos eles foram soldados na placa.) Momentaneamente curto para reiniciar.

Os Rasbpian recentes têm um processo interno para desligamento (tratado por systemd-logind)

Adicione o seguinte a /boot/config.txt

dtoverlay=gpio-shutdown,gpio_pin=5

Isso permite que um comutador conectado entre o pino 29 (GPIO 5) e o pino 30 (Gnd) inicie um desligamento ordenado do Pi.

Quase qualquer pino pode ser usado - o padrão é o pino 5 (GPIO 3), embora isso seja frequentemente usado para I²C ,gpio_pin=21usaria os mesmos pinos usados ​​no pino de script 40 (GPIO 21) e no pino 39 (Gnd)

Eu recomendo sudo poweroffdesligar o Pi. Não há nada errado com o que você está fazendo, mas poweroffo LED verde pisca 10 vezes em intervalos de 1 segundo, quando é seguro desligar.

Eu tenho um script Python que desliga o Pi com um botão.

#!/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
fonte
Você pode adicionar esse código python para referência, e se eu fornecer a fonte de energia, ela iniciará automaticamente o pi ou então?
Gaurav Dave
4

Parece que ninguém respondeu a essa pergunta: "Em que momento é seguro puxar o plugue do Raspberry Pi?"

Para desligar corretamente, você executa

sudo shutdown

Ao fazer isso, você verá a luz "ACT" (a verde) piscar 10 vezes (intervalos de 0,5 segundo). Quando parar de piscar, a luz verde apaga-se. Neste ponto, é seguro remover a energia ou puxar o plugue.

A luz vermelha permanecerá acesa enquanto houver energia aplicada ao Pi.

Após o desligamento, você deve remover a energia e aplicá-la novamente para ligar o Pi.

Electronics_John
fonte
2

Como as respostas anteriores declararam, o led vermelho significa que o pi está recebendo energia, enquanto o led verde é atividade (acredito que a atividade do disco)

você pode puxar o plugue quando o led verde parar de piscar após um comando de desligamento ou pode colocar em curto os blocos de execução / redefinição que estão na placa

Este site tem ótimas instruções sobre como adicionar uma chave de redefinição física se você estiver disposto a soldar alguns pinos.

Se você usar o hard reset, certifique-se de usá-lo apenas após uma interrupção ou desligamento do sistema ou como último recurso, pois ele reinicia imediatamente o processador. Se você estiver gravando no cartão SD, poderá corrompê-lo da mesma forma que estiver desligando o computador. enquanto corre

S.Rose
fonte
2

Aqui está um script python de desligamento realmente simples.

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
fonte