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

Pourquoi c'est possible

Le nRF52840-MDK contient un hub USB 2.0 Hi-Speed Microchip à deux ports en aval : le port 1 va au DAPLink, le port 2 au contrôleur USB natif du nRF52840. Le SoC s'énumère donc directement sur le bus — exactement ce qu'il faut pour un usage de type dongle BLE. Le sample Zephyr hci_usb transforme la carte en radio HCI pour la pile Bluetooth de Linux (BlueZ) ; le même usage est documenté sur Raspberry Pi dans un fil DevZone cité par l'issue #55 du dépôt MakerDiary.

Étape 1 — Flasher le firmware hci_usb

Depuis un espace de travail Zephyr à jour :

west build -b nrf52840_mdk samples/bluetooth/hci_usb
west flash

west flash passe par la sonde CMSIS-DAP ; le port USB natif, lui, reste libre pour le rôle radio. Vous pouvez aussi déposer build/zephyr.hex sur le lecteur DAPLINK puis reset.

Étape 2 — Côté Linux

Branchez la carte, puis vérifiez l'énumération et la création de l'interface HCI :

lsusb                 # le périphérique Nordic apparaît
sudo dmesg | tail     # log: Bluetooth: hci0 ...

Ensuite testez avec l'outil standard :

bluetoothctl
[bluetoothctl] power on
[bluetoothctl] scan on        # les périphériques BLE à portée défilent
[bluetoothctl] exit

hciconfig -a (ou btmgmt info) doit montrer hci0 UP RUNNING avec les capacités LE. Sur un Raspberry Pi, la recette est identique — c'est exactement le scénario du walkthrough DevZone « performing bluetooth operations with nrf52840 dongle using bluetoothctl in raspberry pi ».

Étape 3 — Cas d'usage concrets

Bugs connus à connaître

Pour aller plus loin

Les Kconfig du sample (CONFIG_BT_HCI, descripteurs USB) se touchent via menuconfig ; c'est une bonne porte d'entrée vers le développement USB device sur nRF52840 (le même contrôleur sert aux profils CDC, HID et composite).

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels