EEPROM phiên bản 2020-05-15 đặt mặc định WAKE_ON_GPIO=1
Khi đó, sudo halt (shutdown) sẽ đưa RPi 4 vào trạng thái tiêu thụ điện ít nhất nhưng vẫn nhận biết một số thành phần trên board mạch, như GPIO.
Nối đất GPIO 3 (pin 5) sẽ khiến RPi khởi động (boot).
Nếu chúng ta dùng một nút bấm nối với GPIO 3 và GROUND để khởi động thì chúng ta cũng muốn dùng nút này để tắt máy.
Chúng ta tạo script /path/to/shutdown.py để làm việc này
#!/usr/bin/python
# shutdown.py
import time, subprocess
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
GPIO.wait_for_edge(5, GPIO.FALLING)
print("Power off detected")
time.sleep(3)
ret = GPIO.input(5)
if ret == 0:
print("Shutting down")
subprocess.call("sudo shutdown -h now", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
else:
print("Press 3 seconds to shutdown")
Đặt thuộc tính thực thi cho script
sudo chmod +x /path/to/shutdown.py
Cho crontab gọi script khi khởi động
crontab -e
@reboot /path/to/shutdown.py
- Khi RPi đang chạy, bấm và giữ nút 3 giây để tắt máy
- Khi RPi đang sleep, bấm nút để mở máy
Chú thích:
- EEPROM phiên bản trước 2020-05-15 đặt mặc định WAKE_ON_GPIO=0
Có thể đặt lại tham số cấu hình WAKE_ON_GPIO=1 (bài trước) hoặc cập nhật pi-eeprom
2. Khác với RPi 3, board mạch RPi 4 có EEPROM để thiết kế boot từ USB. Tuy nhiên ngay cả khi không cần boot từ USB, vẫn có thể dùng EEPROM cho mục đích khác như tạo nút khởi động, đặt ip tĩnh, …