Vì sao thư viện RPi.GPIO không dùng được trên Raspberry Pi 5?

Raspberry Pi 5 được phát hành và giới thiệu cho chúng ta một chiếc Pi mạnh mẽ hơn, nhưng nó cũng thay đổi một vài thứ và đáng chú ý nhất là GPIO.

Nếu bạn từng điều khiển GPIO trên Raspberry Pi bằng thư viện quen thuộc RPi.GPIO, thì khi nâng cấp lên Raspberry Pi 5, bạn có thể gặp lỗi như:

RuntimeError: Mmap of GPIO registers failed!

Vậy điều gì đã xảy ra? Tại sao code cũ không chạy được? Và đâu là hướng đi mới?

Vì Sao RPi.GPIO không hoạt động trên Raspberry Pi 5?

Trên các đời Raspberry Pi trước đây (từ Pi 1 đến Pi 4), GPIO được điều khiển trực tiếp qua phần cứng của SoC Broadcom. Thư viện RPi.GPIO truy cập các chân này thông qua file đặc biệt /dev/gpiomem.

Tuy nhiên, Raspberry Pi 5 đã thay đổi kiến trúc phần cứng, sử dụng một con chip phụ tên là RP1 để quản lý I/O như USB, Ethernet, và GPIO. Vì vậy:

  • RPi.GPIO không còn truy cập được các chân GPIO như trước nữa.
  • Raspberry Pi Foundation cũng xác nhận sẽ không cập nhật thư viện này cho RPi 5.

Giải pháp: Dùng gpiozero hoặc gpiod (libgpiod)

May mắn là bạn không đơn độc! Có hai lựa chọn hiện đại và chính thức được khuyến nghị:

1. gpiozero – đơn giản, thân thiện

Đây là thư viện Python cấp cao, rất dễ dùng và phù hợp cho người mới.

from gpiozero import LED
from time import sleep

led = LED(17)

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)

Thư viện này sẽ tự chọn backend phù hợp, như lgpio hoặc gpiod, và hoạt động tốt trên RPi 5.

2. gpiod (libgpiod) – chuẩn công nghiệp Linux

Đây là thư viện cấp thấp hơn, kiểm soát trực tiếp các chân GPIO thông qua hệ thống kernel hiện đại.

Ví dụ bật LED qua GPIO 17:

import gpiod
import time

chip = gpiod.Chip('gpiochip4')  
line = chip.get_line(17)

config = gpiod.LineRequest()
config.request_type = gpiod.LINE_REQ_DIR_OUT
line.request(config)

while True:
    line.set_value(1)
    time.sleep(1)
    line.set_value(0)
    time.sleep(1)

Lưu ý: Bạn có thể kiểm tra tên chip GPIO bằng lệnh gpiodetectgpioinfo.

So sánh nhanh các thư viện GPIO trên Raspberry Pi

Thư viện Ưu điểm Nhược điểm
RPi.GPIO Đơn giản, quen thuộc Không dùng được trên Pi 5
gpiozero Cú pháp dễ, nhiều tính năng Không kiểm soát sâu
gpiod Chuẩn hóa, hiệu quả Cần hiểu chi tiết kỹ thuật
lgpio Hỗ trợ Pi 5, hiệu năng tốt Tài liệu ít

Kết luận

Việc Raspberry Pi 5 thay đổi phần cứng khiến chúng ta buộc phải tạm biệt RPi.GPIO. Tuy có chút bất tiện, nhưng đây là cơ hội để chuyển sang các thư viện chuẩn hóa, mạnh mẽ và tương thích tốt với hệ điều hành hiện đại.

  • Nếu bạn chỉ làm các dự án đơn giản → hãy dùng gpiozero.
  • Nếu bạn cần hiệu năng và kiểm soát tốt → hãy học libgpiod.

Nếu cần tư vấn hoặc hỗ trợ kỹ thuật, vui lòng liên hệ với chúng tôi

Raspberry Pi Việt Nam

  • Địa chỉ: Tầng 5, số 25 đường Hồ Mễ Trì, phường Trung Văn, quận Nam Từ Liêm, Hà Nội.
  • Email: info@raspberrypi.vn – Hotline: 092.707.8688
  • Hỗ trợ kỹ thuật: 09.3757.6116
  • Fanpage: https://rpi.vn/fb
  • Group: https://rpi.vn/groupfb