我正在开发一个嵌入式系统,需要扫描蓝牙设备。我想用自己的程序来做这件事,我可以使用 hci_get_route() 和 BlueZ devel 中的支持 hci 函数来实现。但是,扫描仅在 bluetoothd 运行时才有效。是否有可能在不需要 bluetoothd 在后台运行的情况下做到这一点?
更新:
根据 harrymc 的回答,我能够在没有运行 bluetoothd 甚至 systemd 的情况下使蓝牙扫描工作。但是,我确实需要加载以下内核模块(内核 5.19):
hci_uart
btusb
只要这些模块在启动时加载,我所需要做的就是运行这个:hciconfig hci0 up
然后我就可以扫描蓝牙设备。我不需要运行 hciattach。我的笔记本电脑使用英特尔蓝牙适配器(lsusb 将供应商/产品报告为 8087:0033)。
答案1
帖子 Linux 命令连接蓝牙设备 可能是相关的。
这篇未答复的帖子详细说明了使用 HCI 如下。
要设置蓝牙硬件:
sudo modprobe hci_uart
sudo modprobe btbcm
sudo hciattach /dev/ttyAMA0 bcm43xx 921600 noflow -
要扫描设备:
sudo hcitool scan
然而,该软件实际上未能成功连接到设备,至少对于该帖子的发布者来说是这样。