🛠 Utiliser la carte comme adaptateur Bluetooth USB sous Linux

nRF52840-MDK (id boards.json: nrf52840-mdk) · intermediaire · Le nRF52840 a son propre contrôleur USB, exposé sur le hub de la carte : un sample Zephyr et Linux voit un vrai radio BLE hci0.

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

Errores conocidos a tener en cuenta

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).

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales