是否可以在未运行 bluetoothd 守护进程的情况下扫描蓝牙设备?

是否可以在未运行 bluetoothd 守护进程的情况下扫描蓝牙设备?

我正在开发一个嵌入式系统,需要扫描蓝牙设备。我想用自己的程序来做这件事,我可以使用 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

然而,该软件实际上未能成功连接到设备,至少对于该帖子的发布者来说是这样。

相关内容