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

Posted

技术标签:

【中文标题】如何在 bt 4.0 加密狗中禁用蓝牙经典【英文标题】:how to disable bluetooth classic in bt 4.0 dongle 【发布时间】:2015-08-27 14:06:26 【问题描述】:

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

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

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

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

提前致谢

【问题讨论】:

*** 严格可用于软件编程问题,而不是硬件问题。我建议迁移到 StackExchange 中的另一个平台 【参考方案1】:

通过很少的研发工作,我找到了解决方案。下面的脚本是模拟hcitool lescan 命令。注意最后一个 cmd 必须注释掉,这样 hci0(BT 4.0 设备)就不会退出文件模式。

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

回显“hci0 up”

sudo hciconfig hci0 up

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

sudo hciconfig hci0 lm MASTER

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 值,以便发出 lescan 命令以在 2 个不同的终端中进行扫描。

【讨论】:

以上是关于如何在 bt 4.0 加密狗中禁用蓝牙经典的主要内容,如果未能解决你的问题,请参考以下文章

带有蓝牙 4.0 的 iOS XCode 模拟器

iPhone检测蓝牙设备

SPP配置文件蓝牙iOS

开启蓝牙 4.0 LE+经典(双模)

E-PUCK机器人-FAQ

如何查看安卓手机中已配对蓝牙设备信息