与UE Megaboom 串行协议相关:我试图了解 UE Megaboom 所说的串行协议,我怀疑这是应用程序如何控制扬声器的高级功能。
一种方法是将应用程序安装在 Android 虚拟机上,连接到扬声器并捕获交换的流量。
使用 VirtualBox,我可能需要将蓝牙加密狗连接为 USB 设备并让 VM 控制它。
如何捕获扬声器和应用程序之间交换的串行流量?
与UE Megaboom 串行协议相关:我试图了解 UE Megaboom 所说的串行协议,我怀疑这是应用程序如何控制扬声器的高级功能。
一种方法是将应用程序安装在 Android 虚拟机上,连接到扬声器并捕获交换的流量。
使用 VirtualBox,我可能需要将蓝牙加密狗连接为 USB 设备并让 VM 控制它。
如何捕获扬声器和应用程序之间交换的串行流量?
根据这个 StackOverflow 答案,Android 从 4.4 开始在开发者选项中有一个设置。您首先需要启用开发人员设置(如果您还没有这样做),然后启用“启用蓝牙 HCI 监听日志”。
我自己还没有尝试过,但根据我能找到的信息:
/sdcard/btsnoop_hci.log./sdcard,请相应地修改路径。FileName参数 in/etc/bluetooth/bt_stack.conf以找到正确的路径。(某些版本的 Android 可能会将这个文件放在/system/etc或 中/vendor/etc。)/data/misc/bluetooth/logs/btsnoop_hci.log(您需要具有 root 权限才能获取文件)。要从 VirtualBox 上运行的 Android VM 获取蓝牙:
vboxusers组中,例如通过运行sudo usermod -a -G vboxusers your_user_name然而,在实践中,我无法从 Android VM 获得可靠的蓝牙连接。我可以扫描设备并设法配对 BT 设备(尽管这需要多次尝试),但我从未设法连接到该设备。我怀疑这是因为 Android 非常需要资源,并且虚拟化的开销以及对 4 个处理器内核中的 2 个的限制(我设置了这种方式以防止 VM 占用我的整个 CPU)并没有为安卓运行流畅。需要在物理硬件上运行的 USB 记忆棒上使用 Android x86_64 重试。