Arranque y apagado de Raspberry Pi 4 B GPIO
He estado investigando un poco sobre los botones de encendido de la Raspberry Pi, pero me está costando bastante encontrar información. En este momento, tengo un botón funcionando en GPIO5, y cuando lo conecto al pin GND opuesto, el Pi se inicia. Agregué la línea dtoverlay=gpio-shutdowna mi /boot/config.txt, para poder apagar también con esta conexión. Sin embargo, tengo un par de preguntas a las que me cuesta encontrar respuestas.
- ¿El apagado iniciado al conectar el pin GPIO3 y el pin GND se considera un apagado seguro? ¿El sistema terminará de escribir en la memoria, etc., al igual que con
sudo shutdown? - Sé que puedo cambiar el pin para el apagado, cambiando
dtoverlay=gpio-shutdownadtoverlay=gpio-shutdown,gpio-pin=X, pero ¿hay alguna manera de cambiar el pin para el arranque también? Considerando que GPIO3 se usa normalmente para I2C.
Respuestas
No conozco la respuesta completa a todas sus preguntas, por lo que esta es una respuesta parcial .
Q1:
¿El apagado iniciado con la conexión del pin GPIO3 y el pin GND se considera un apagado seguro?
Recuerdo haber oído hablar de problemas asociados con el uso de GPIO para el apagado, pero alguna información reciente sugiere que esta característica funciona como debería si el sistema está configurado correctamente, es decir, si está configurado correctamente, el apagado es "seguro". Por supuesto, la forma sin hardware de apagar el RPi es desde la pantalla o la CLI a través de sudo shutdown, sudo halto sudo poweroff.
P2:
Sé que puedo cambiar el pin para el apagado, cambiando dtoverlay = gpio-shutdown a dtoverlay = gpio-shutdown, gpio-pin = X, pero ¿hay alguna manera de cambiar el pin para el arranque también?
No es necesario utilizar un pin GPIO para reiniciar el RPi desde un estado de apagado. La documentación dice:
WAKE_ON_GPIO
Si es 1, entonces 'sudo halt' se ejecutará en un modo de menor energía hasta que GPIO3 o GLOBAL_EN estén en corto a tierra.
Predeterminado: 1 (0 en la versión original del gestor de arranque 2019-05-10) Versión: Todos
POWER_OFF_ON_HALT
Si 1 y WAKE_ON_GPIO = 0, apague todas las salidas PMIC en detención. Este es el estado de energía más bajo posible para detener, pero puede causar problemas con algunos HAT porque los 5V todavía estarán encendidos. GLOBAL_EN debe tener un cortocircuito a tierra para arrancar.
Predeterminado: 0 Versión: 2019-07-15
Mi interpretación de la documentación anterior es la siguiente: En pocas palabras cortocircuito GLOBAL_ENa tierra se volverá a comenzar / re-arranque del IPC independientemente de cómo WAKE_ON_GPIOy POWER_OFF_ON_HALTse fijan. El GLOBAL_ENnodo se muestra en la foto a continuación:
La operación se explica en /boot/overlays/README
Es bastante seguro, lo tengo en todo mi Pi en caso de que necesite apagar un Pi sin cabeza (o uno sin teclado conectado), aunque mi Pi rara vez se apaga, a menos que esté agregando hardware.
Lo uso dtoverlay=gpio-shutdown,gpio_pin=21para poder apagar mediante un puente entre los pines 39/40
Name: gpio-shutdown
Info: Initiates a shutdown when GPIO pin changes. The given GPIO pin
is configured as an input key that generates KEY_POWER events.
…
This overlay only handles shutdown. After shutdown, the system
can be powered up again by driving GPIO3 low. The default
configuration uses GPIO3 with a pullup, so if you connect a
button between GPIO3 and GND (pin 5 and 6 on the 40-pin header),
you get a shutdown and power-up button. Please note that
Raspberry Pi 1 Model B rev 1 uses GPIO1 instead of GPIO3.
Load: dtoverlay=gpio-shutdown,<param>=<val>
Params: gpio_pin GPIO pin to trigger on (default 3)
For Raspberry Pi 1 Model B rev 1 set this
explicitly to value 1, e.g.:
dtoverlay=gpio-shutdown,gpio_pin=1
active_low When this is 1 (active low), a falling
edge generates a key down event and a
rising edge generates a key up event.
When this is 0 (active high), this is
reversed. The default is 1 (active low).
gpio_pull Desired pull-up/down state (off, down, up)
Default is "up".
Note that the default pin (GPIO3) has an
external pullup. Same applies for GPIO1
on Raspberry Pi 1 Model B rev 1.
debounce Specify the debounce interval in milliseconds
(default 100)