🛠 Apprivoiser les LED et la touche ADC du carrier CM4IO
Objetivos
El device tree mainline (meson-g12b-bananapi-cm4-cm4io.dts, Linux ≥ 6.4) ya registra los dos LED del carrier (azul = GPIOAO_7, verde = GPIOAO_2) y el botón «AD-Key» del carrier, una tecla de resistencia en el canal 2 del SARADC. No se necesita ninguna biblioteca GPIO: controlará los LED mediante la API LED class de /sys y leerá el botón con evtest.
Hardware
- BPI-CM4 en su carrier (idealmente BPI-CM4IO, ya que los LED y la tecla están soldados allí)
- Armbian bananapicm4io actualizado (o cualquier sistema con kernel mainline ≥ 6.4)
- Sin soldaduras, sin componentes externos
Código completo
sudo apt update && sudo apt install -y gpiod evtest
# Les deux LED sont des périphériques LED class
ls /sys/class/leds/
cat /sys/class/leds/blue:status/trigger # la liste des triggers, default=heartbeat
# LED bleue = activité CPU, LED verte = allumée manuellement
echo cpu | sudo tee /sys/class/leds/blue:status/trigger
echo none | sudo tee /sys/class/leds/green:status/trigger
echo 255 | sudo tee /sys/class/leds/green:status/brightness
# Faire monter la charge pour voir le trigger « cpu » réagir
sudo apt install -y stress-ng && stress-ng --matrix 0 --timeout 30s &
# Le bouton AD-Key (SARADC ch2, seuil 1,71 V) arrive comme périphérique evdev
sudo evtest # choisir le périphérique adc-keys, appuyer : événement KEY_FN
Verificación esperada
El LED azul parpadea según la carga de la CPU (mucho más rápido durante stress-ng); el LED verde permanece encendido después del echo 255; evtest muestra eventos EV_KEY / KEY_FN en cada pulsación de la tecla Function del carrier.
Errores frecuentes
- Buscar los pines con la numeración GPIO de Raspberry Pi: aquí los pines son bancos Amlogic (GPIOA, GPIOX, GPIOAO) y el DTS mainline no define gpio-line-names para el header.
- Instalar el WiringPi del fabricante (fork Dangku): solo funciona en el kernel 4.9 BSP, no en el mainline.
- Equivocarse con el nombre del LED según la imagen (usar el comodín /sys/class/leds/*/trigger si es necesario).
- evtest sin permisos: ejecutar con sudo o añadir el usuario al grupo input.
- Confundir el botón ADC (canal SARADC 2, evento de teclado) con un GPIO clásico: gpiomon nunca lo verá.
Otros tutoriales para esta placa
- Monter le module BPI-CM4 sur son carrier et réussir le premier boot
- Mesurer le stockage du BPI-CM4 : eMMC, microSD et le palier NVMe
- Activer I2C, SPI et UART sur le BPI-CM4 : env.txt ou armbianEnv.txt
- Brancher un capteur BME280 sur l'I2C1 du carrier (GPIOX_17/18)
- Déplacer le rootfs sur un SSD NVMe via le port mini-PCIe
- Exploiter le NPU 5 TOPS de l'A311D pour l'inférence embarquée
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash