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

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

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

然而,过了一段时间(似乎是随机的),它开始滞后。移动在短时间内延迟了大约 500 毫秒。通常一段时间后也会恢复,但可能需要几分钟。所有操作都会延迟:移动、点击、滚动。此外,在此期间,移动可能会很不连贯。

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

我已经尝试过什么了?

  • 在启动时运行:

    echo on > `readlink -f /sys/class/bluetooth/hci0`/../../../power/level
    

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

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

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

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

  • 当机器上没有其他处于活动状态的蓝牙连接时,就会发生这种情况。
  • 我的蓝牙立体声 (A2DP) 耳机也出现了类似症状,但音频出现延迟和跳跃。按照说明交换蓝牙配置文件这里然后就有用了。结论:不是鼠标有问题。
  • 这款耳机在我现在已经坏掉的内置蓝牙的 Thinkpad T61p 上使用时始终能正常工作。
  • 我的笔记本电脑中的蓝牙模块通过 USB 连接,并显示为

    0a5c:21e1 Broadcom Corp. 
    
  • 关闭内置蓝牙适配器并使用另一个适配器即可正常工作,不会出现延迟。

    0a5c:2046 Broadcom Corp. Bluetooth Device
    

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

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

答案1

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

sudo apt-get install bluez-hcidump

在包装描述中,有如下说明:

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

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

sudo hcidump -x -i hciX

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

sudo hcidump -x -A -i hciX -w ~/output

您可以使用以下方式查看已保存的转储文件

sudo hcidump -r ~/output

您可能想要调查更多具体选项;您可以根据需要按数据包类型进行过滤,因为默认情况下会转储所有数据包。请参阅man hcidumpUbuntu 在线手册页了解更多信息。

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

答案2

我曾使用 USB 跟踪解决过一些奇怪的音频问题。有时您可以从内容或数据包的时间中确定一些问题。就我而言,这是数据包长度偶尔发生变化的结果,与我听到的噪音相对应。

这是一个页面来自 Wireshark 的一些信息。

您只需执行以下操作即可获得跟踪:

  1. sudo modprobe usmon
  2. cd /sys/内核/debug/usb/usbmon
  3. sudo cat 0u | tee ~/myusbtrace > /dev/null
  4. 运行测试
  5. 终止步骤 3 中的进程

这里是来自 Linux 项目的有关此问题的信息,包括如何缩小跟踪范围。

第二列似乎包含时间,因此您应该仔细观察它如何增加。如果开始很顺利,但后来变得不稳定,则问题可能出在蓝牙部分。

如果在出现问题时跟踪显示不规则数据包,则可能是 USB 或蓝牙的问题,但不规则数据包的方向可能指示它是内核还是驱动程序的问题,而不是 USB 总线另一端的某个东西的问题。

相关内容