🛠 Réveiller le Bluetooth de l'AP6212 : hci_uart et firmware BCM
Objetivos
En la BPI-M2 Zero, el Bluetooth del combo AP6212 no es un controlador USB: es una interfaz HCI serie sobre UART1 (nodo brcm,bcm43438-bt en el device tree, 1 500 000 baudios, RTS/CTS en PG11-PG13). Según las versiones del kernel, la carga del firmware y el adjunto del disciplina hci_uart no se realizan automáticamente — los comentarios de los usuarios documentan un « no BT controller found » que requiere cargar hci_uart y adjuntar el puerto serie manualmente. Vas a llevar el controlador hasta bluetoothctl y un escaneo BLE.
Hardware
- BPI-M2 Zero con Armbian (kernel 6.x) con consola disponible
- Paquete de firmware BCM43xxx presente (linux-firmware non-free/brcm según la imagen)
- Un smartphone o un sensor BLE para detectar
- Antena U.FL atornillada (el BT comparte la antena del módulo)
Código completo
sudo apt update && sudo apt install -y bluez
# 1) Le noyau a-t-il déjà créé le contrôleur ?
bluetoothctl list
dmesg | grep -i -e bluetooth -e hci -e 4343
# 2) Sinon, apport manuel : firmware + discipline hci_uart + attach UART1
sudo apt install -y psmisc
sudo rfkill unblock bluetooth 2>/dev/null
sudo modprobe hci_uart
# Attacher le port série de l'UART1 au discipline HCI (BCM)
sudo sh -c 'echo "bcm43xxx 0" > /sys/bus/serial/device_add' 2>/dev/null || \
sudo btattach -n -B -s 1500000 /dev/ttyS1
sleep 3
hciconfig -a # hci0 doit être apparu
# 3) Scanner
bluetoothctl
# power on
# agent on
# scan on # les périphériques BLE défilent
# quit
# 4) Rendre le réveil permanent si nécessaire
echo hci_uart | sudo tee /etc/modules-load.d/bt.conf
Verificación esperada
Tras el adjunto, hciconfig -a muestra hci0 con una dirección MAC; bluetoothctl scan on hace desfilar dispositivos (relojes, teléfonos, sensores) a unos pocos metros; el enlace permanece estable tras power on/off. El Wi-Fi y el BT coexisten en la misma antena.
Errores frecuentes
- Apuntar a ttyS0: es la consola (UART0); el BT del AP6212 está en UART1 (ttyS1, pinout PG11-PG13).
- Ejecutar btattach a 9600 o 115200: el módulo espera 1 500 000 baudios, de lo contrario se produce un timeout en el primer intercambio de firmware.
- Olvidar las líneas RTS/CTS: sin control de flujo por hardware a 1,5 Mbaud, la carga del firmware falla por desbordamiento.
- Falta del firmware brcm/ en la imagen mínima: hci_uart se carga pero el controlador nunca responde — instala el paquete de firmware adecuado.
- Culpar al hardware cuando la causa es una regresión del kernel: el foro de Armbian documenta versiones donde el BT de esta familia ya no se inicializa solo — de ahí el procedimiento manual.
Otros tutoriales para esta placa
- Flasher Armbian et premier boot du BPI-M2 Zero
- LED et bouton avec libgpiod sur le port 40 broches
- Wi-Fi AP6212 : le piège de l'antenne U.FL non fournie
- Console série sur USB-OTG : dépanner sans réseau ni câble UART
- Activer le bus SPI0 et piloter un petit écran TFT
- Survivre avec 512 Mo : zram, swap compressé et services légers
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash