HCI_UART 在 NRF52840 上,将设备连接到基于 Linux 的 Yocto 上时,SBC 出错说 "Can't init device hci0: Cannot assign requested address (99)"

HCI_UART on NRF52840, attaching the device on a Yocto based Linux SBC errors out saying "Can't init device hci0: Cannot assign requested address (99)"

我正在尝试将基于 Nordic 的 nrf52840 的 BLE 模块连接到基于 Yocto 的 SBC,其中添加了所有与 BlueZ 相关的软件包。

我已将 Zephyr 的示例 hci_uart 程序刷写到模块中。该模块在我的 Linux PC(BlueZ 版本 5.48)上似乎 运行 完美,而在 SBC(BlueZ 版本 5.54)上它无法启动。这是我使用

时出现的错误
root@rb-imx6:~# hciconfig hci0 up

root@rb-imx6:~# Can't init device hci0: Cannot assign requested address (99)

谁能帮我解决这个问题?

提前致谢。

分配地址错误是由于缺少Linux个内核配置选项:

CONFIG_CRYPTO_USER
CONFIG_CRYPTO_USER_API
CONFIG_CRYPTO_USER_API_AEAD
CONFIG_CRYPTO_USER_API_HASH

CONFIG_CRYPTO_AES
CONFIG_CRYPTO_CCM
CONFIG_CRYPTO_AEAD
CONFIG_CRYPTO_CMAC

自建的 BuildrootYocto 嵌入式 Linux 系统很可能会发生这种情况。如果你运行遇到这个错误,你应该启用上面的选项并重新编译内核。

在此处查看 BlueZ 要求:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/README#n64

要查看 BlueZ 的详细调试输出,运行 它带有 -d 选项:

bluetoothd -d