如何在 bt 4.0 加密狗中禁用蓝牙经典

how to disable bluetooth classic in bt 4.0 dongle

我一直在为 IoT 解决方案使用 BLE 设备。我在断开 BLE 节点后将 BLE 节点重新连接到我的 SBC 时遇到问题。

案例:我总是必须使用 $sudo hcitool lescan 进行扫描,然后 运行 我的 bluepy python 应用程序才能通过 BLE 请求数据。 此时我可以断开 BLE 节点并在 15 秒内重新连接。但如果我再等下去,我又必须 运行 lescan cmd 然后 运行 我的 bluepy 应用程序才能连接和通信。 我只想在 运行 blupy 应用程序之前每次都删除扫描部分。 我可以知道当我执行 lescan cmd 之后 bluepy 应用程序开始与我的 ble 节点通信时到底发生了什么吗?

我假设 lescan cmd 会将加密狗切换到 ble 模式,并尝试通过使用
设置标志来将 ble 模式保持为默认模式 sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 16 1a(根据线程 How to set bluez mode? 将 1a 更改为 16)

我想要的只是 运行 带有 ble 设备 mac ID 的 blupy 应用程序并开始通信而无需 lescan。

提前致谢

我只用很少的研发努力就找到了解决方案。下面的脚本是模拟 hcitool lescan 命令。请注意,必须注释最后一个命令,以便 hci0(BT 4.0 设备)不会退出文件模式。

============================================= ==================

回声"hci0 up"

sudo hciconfig hci0 up

echo "***** 设置 hci0 为主 *****"

sudo hciconfig hci0 lm 主控

echo "***** 设置 lescan 状态 *****"

sudo hcitool -i hci0 cmd 0x08 0x000b 01 10 00 10 00 00 00

sudo hcitool -i hci0 cmd 0x08 0x000c 01 01

echo "***** 禁用 lescan *****" sudo hcitool -i hci0 cmd 0x08 0x000c 00 00

(您可以评论以上命令以保持 LE 模式,从而禁用经典 BT 模式)

============================================= ===============

您可以使用 hcidump -R 验证上述 cmd 值,以发出用于在 2 个不同终端中扫描的 lescan 命令。