与UE Megaboom串行协议有关:我正在尝试了解UE Megaboom所说的串行协议,我怀疑这是应用程序如何控制扬声器的高级功能。

一种方法是将应用程序安装在Android VM上,连接到扬声器并捕获交换的流量。

使用VirtualBox,我可能需要将蓝牙加密狗连接为USB设备,然后让VM控制它。

如何捕获扬声器和应用之间交换的串行流量?

#1 楼

根据这个StackOverflow答案,Android从4.4开始就在开发人员选项中进行了设置。首先,您需要启用“开发人员设置”(如果尚未启用),然后启用“启用蓝牙HCI监听日志”。

我还没有尝试过,但是根据信息我可以找到:


通信应记录到名为/sdcard/btsnoop_hci.log的文件中。
如果外部存储目录不是/sdcard,则相应地修改路径。
有些风味Android可能会使用完全不同的路径。在FileName中查找/etc/bluetooth/bt_stack.conf参数以找到正确的路径。 (某些版本的Android可能会将文件放在/system/etc/vendor/etc中。)
在某些版本的Android(包括Android x86_64 CM 14.1)上,上述方法均无效,但您会在/data/misc/bluetooth/logs/btsnoop_hci.log中找到日志(您需要具有root权限来获取文件)。
然后可以使用Wireshark或类似工具分析生成的文件。

要从在VirtualBox上运行的Android VM获取蓝牙:


如果您使用Linux(在Ubuntu 18.04上试用):


将自己添加到vboxusers组,例如通过运行sudo usermod -a -G vboxusers your_user_name

注销并重新登录以使新的组成员身份生效。


启动Android VM。
在“设备”>“ USB”中设备,将蓝牙适配器连接到虚拟机。它的名称可能不太明显(我的名字叫Intel [0001])。
可选地,添加USB过滤器,以使VM在启动时自动自动抓住BT设备。
请注意主机系统当VM使用BT适配器时,它将失去对BT适配器的访问权限。如果您有BT鼠标或键盘,请用有线鼠标替换它,或获取一个额外的BT适配器并将其用于您的VM。

但是实际上,我无法从Android VM获得可靠的蓝牙连接。我可以扫描设备并设法与BT设备配对(尽管进行了多次尝试),但是我从未设法连接到该设备。我怀疑这是因为Android占用大量资源,并且虚拟化的开销以及对4个处理器内核中2个的限制(我已经以此方式设置,以防止VM占用整个CPU)没有足够的空间来容纳Android运行平稳。将需要在物理硬件上运行的USB记忆棒上使用Android x86_64重试。