如何使用蓝牙连接的鼠标和 A2DP 耳机调试延迟?

ger*_*ijk 13 input-devices bluetooth 12.04 a2dp

我拥有一台Logitech M555b鼠标,用于运行 Kubuntu 12.04 的 HP Elitebook 8570w 笔记本电脑。使用 KDE 蓝牙控制模块连接后即可正常工作。

然而,一段时间后(看似随机),它开始滞后。运动在短时间内延迟了大约 500 毫秒。通常它也会在一段时间后恢复,但可能需要几分钟。所有动作都被延迟:移动、点击、滚动。此外,在这些时间运动可能会断断续续。

在相同的短时间内始终有效的解决方法是断开鼠标重新连接。这可以使用相同的 KDE 蓝牙控制模块来完成。

我已经尝试了什么?

  • 在启动时运行:

    echo on > `readlink -f /sys/class/bluetooth/hci0`/../../../power/level
    
    Run Code Online (Sandbox Code Playgroud)

    禁用蓝牙hci0设备上的任何节能功能。

  • 检查鼠标的电池(仅使用一周,其他新电池:结果相同)

  • 检查有关蓝牙相关条目的日志和内核消息:除了连接时间的预期消息外,无。
  • 我正在运行xorg-edges PPA 中3.5.0-13-generic提供的内核。引导常规 3.2 Precise 内核会导致相同的行为。

其他一些可能有帮助的信息:

  • 当机器上没有其他蓝牙连接处于活动状态时,就会发生这种情况。
  • 我的蓝牙立体声 (A2DP) 耳机也出现了类似的症状,但随后是音频滞后和跳频。按照此处所述交换蓝牙配置文件会有所帮助。结论:不是鼠标有问题。
  • 使用我现在已经死了的带有内置蓝牙的 Thinkpad T61p,耳机总是可以正常工作。
  • 我的笔记本电脑中的蓝牙模块通过 USB 连接并显示为

    0a5c:21e1 Broadcom Corp. 
    
    Run Code Online (Sandbox Code Playgroud)
  • 关闭内置蓝牙适配器并使用另一个可以正常工作,没有延迟。

    0a5c:2046 Broadcom Corp. Bluetooth Device
    
    Run Code Online (Sandbox Code Playgroud)

我是移动的,我周围的几个人在工作中使用蓝牙(主要是 A2DP)。它也发生在家里,我的邻居可能也在使用蓝牙。这可能只是无线电干扰,但我认为蓝牙连接应该跳到另一个频道。而且,它在重新连接时立即正常工作。

因此,我认为这是一个软件驱动程序问题,我想对其进行调试。有没有办法在蓝牙(-hid)模块上获得更详细的日志记录?

小智 6

您可以尝试使用hcidump软件包中的实用程序bluez-hcidump来监控您的蓝牙设备并获取深入信息:

sudo apt-get install bluez-hcidump
Run Code Online (Sandbox Code Playgroud)

在包装说明中,注意到:

hcidump 实用程序允许监控蓝牙活动。它提供对蓝牙流量的分解,并可以显示来自更高级别协议(如 RFCOMM、SDP 和 BNEP)的数据包。

您可以使用该实用程序将设备的输出记录到屏幕或文件中;hciX您自己的蓝牙设备在哪里(hci0 是默认值,如果您没有指定任何内容,则使用-i),您可以运行:

sudo hcidump -x -i hciX
Run Code Online (Sandbox Code Playgroud)

您可以通过附加到命令将转储保存到文件-w ~/output,如果您特别想了解音频数据,您可以使用-A开关来提取 SCO 音频数据,但在这种情况下,您必须始终指定一个输出文件:

sudo hcidump -x -A -i hciX -w ~/output
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令查看保存的转储文件

sudo hcidump -r ~/output
Run Code Online (Sandbox Code Playgroud)

您可能需要研究更多特定选项;如果需要,您可以按数据包类型进行过滤,因为默认情况下所有数据包都会被转储。请参阅man hcidumpUbuntu 联机帮助页以获取更多信息。

唯一的其他选择是安装wireshark并查看它是否可以检测到您的设备;如果可以的话,就可以分析USB和蓝牙通信,如上所述这里,但hcidump应该给出更好的结果。