将近一年半之后,我再次决定回到这个问题。
我有一个任务:跟踪无线耳机上的按键,当收到某个包时,在代码中执行一些操作。
要完成此任务,首先我想使用Python3或C/C++(最好是选项 1)将所有包输出到控制台。
我怎样才能在代码中准确地使用这些包Python/C/C++?也就是说,它不应该是样式中的终端命令os.system('hcitool ...'),而是源代码。
通过“戳”的方法,我已经可以确定哪个包负责无线耳机上的按键。
我也尝试使用Wireshark(Windows),但顺便说一句,他没有抓到一个包。
我假设可以通过以下方式创建连接和Python3模块:socketLinux
socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM),然后输出数据包进行分析。
没有必要显示代码(但最好在 上查看一个最低限度可重现的示例Python3)。至少把我引向正确的方向,在那里我可以读到它。顺便说一句,我在互联网上搜索并没有找到合理的结果。
可以通过 pcap 获得传输数据的完整列表。您将获得与隐藏的原始 pulseaudio 的交流。
HCI 接口用于与设备通信。在 python 中,最先进的方法是通过 scapy https://scapy.readthedocs.io/en/latest/layers/bluetooth.html。还有集成的 pcap 嗅探器。所有数据都被解析为类。
连接设备上的按钮事件可以像普通的 evdev 按钮一样通过拦截来接收。Bluez 将它们翻译为媒体密钥。我得到所有5个。