🛠 Utiliser la carte comme adaptateur Bluetooth USB sous Linux
Por qué es posible
El nRF52840-MDK contiene un hub USB 2.0 Hi-Speed de Microchip con dos puertos de bajada: el puerto 1 va al DAPLink, y el puerto 2 al controlador USB nativo del nRF52840. El SoC se enumera directamente en el bus, exactamente lo necesario para un uso tipo dongle BLE. El sample de Zephyr hci_usb convierte la placa en una radio HCI para la pila Bluetooth de Linux (BlueZ); este mismo uso está documentado en Raspberry Pi en un hilo de DevZone citado por el issue #55 del repositorio MakerDiary.
Paso 1 — Flashear el firmware hci_usb
Desde un espacio de trabajo Zephyr actualizado:
west build -b nrf52840_mdk samples/bluetooth/hci_usb
west flash
west flash utiliza la sonda CMSIS-DAP; el puerto USB nativo, por su parte, queda libre para el rol de radio. También puede copiar build/zephyr.hex en la unidad DAPLINK y luego reiniciar.
Paso 2 — Lado de Linux
Conecte la placa, luego verifique la enumeración y la creación de la interfaz HCI:
lsusb # le périphérique Nordic apparaît
sudo dmesg | tail # log: Bluetooth: hci0 ...
A continuación, pruebe con la herramienta estándar:
bluetoothctl
[bluetoothctl] power on
[bluetoothctl] scan on # les périphériques BLE à portée défilent
[bluetoothctl] exit
hciconfig -a (o btmgmt info) debe mostrar hci0 UP RUNNING con las capacidades LE. En un Raspberry Pi, la receta es idéntica; es exactamente el escenario del walkthrough de DevZone « performing bluetooth operations with nrf52840 dongle using bluetoothctl in raspberry pi ».
Paso 3 — Casos de uso concretos
- Radio BLE para scripts BlueZ/
bluetoothctlen una máquina sin Bluetooth. - Pasarela domótica ligera: la placa como radio, el Pi como cerebro.
- Para esnifar el tráfico en paralelo, el hermano nRF52840 MDK USB Dongle se vende para el uso de sniffer BLE/802.15.4 con Wireshark.
Errores conocidos a tener en cuenta
- Dirección MAC 00:00:00:00:00:00 con hci_usb (issue #57): si BlueZ presenta problemas, verifique la dirección reportada por
btmgmt infoantes de concluir que el cable está dañado. - USB_DEVICE_VID no definido (issue #56) en algunas compilaciones: afecta al reconocimiento en el lado del host.
- Enumeración inestable en algunos hosts (issues #53/#37): use un puerto USB directo, sin hub externo, y un cable de datos.
Para ir más allá
Las opciones Kconfig del sample (CONFIG_BT_HCI, descriptores USB) se modifican mediante menuconfig; es una buena puerta de entrada al desarrollo de dispositivos USB en nRF52840 (el mismo controlador sirve para los perfiles CDC, HID y composite).