🛠 Utiliser la carte comme adaptateur Bluetooth USB sous Linux
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
- Radio BLE pour des scripts BlueZ/
bluetoothctlsur une machine sans Bluetooth. - Passerelle domotique légère : la carte comme radio, le Pi comme cerveau.
- Pour renifler le trafic en parallèle, le sibling nRF52840 MDK USB Dongle est vendu pour l'usage sniffer BLE/802.15.4 avec Wireshark.
Bugs connus à connaître
- Adresse MAC à 00:00:00:00:00:00 avec hci_usb (issue #57) : si BlueZ rechigne, vérifiez l'adresse rapportée par
btmgmt infoavant de conclure à un câble mort. - USB_DEVICE_VID non défini (issue #56) sur certains builds : impacte la reconnaissance côté hôte.
- Énumération capricieuse sur certains hôtes (issues #53/#37) : port USB direct, pas de hub externe, câble data.
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).