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


13

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

但是,经过一段时间(看似随机)后,它开始滞后。运动在短时间内延迟了大约500毫秒。通常,它也会在一段时间后恢复,但可能需要几分钟。所有动作都被延迟:动作,单击,滚动。此外,在这些时间,动作可能会比较不稳定。

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

我已经尝试了什么?

  • 在启动时运行此命令:

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

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

  • 检查鼠标的电池(刚用完一个星期,其他新电池:同样的结果)

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

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

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

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

    0a5c:2046 Broadcom Corp. Bluetooth Device
    

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

因此,我认为这是一个软件驱动程序问题,我想对其进行调试。有什么方法可以让更多详细的登录记录在Bluetooth(-hid)模块上?


在更换主板之前,我的计算机上的USB端口损坏。您是否尝试过使用其他模块插入蓝牙模块?您也可以尝试带计算机去乡下,关掉汽车和手机,看看在没有RF干扰的情况下这是否仍然是一个问题。
John S Gruber 2012年

我发现了一个较旧的Bluetooth 2.0 USB加密狗,这个加密狗的工作原理很像。似乎是0a5c:21e1 Broadcom Corp.Linux中的特定问题。
gertvdijk 2012年

关于原始问题的另一个更新。自从我使用Linux内核3.7.x以来,这在内部适配器上也似乎消失了-一切都很好。可能是现在修复了一个错误。一旦我有时间找出更多细节,我将把它报告为一个错误。
gertvdijk

Answers:


6

您可以尝试使用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 hcidump在线Ubuntu手册页以获取更多信息。

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


谢谢!关于此的奇特之处在于,运行hcidump该问题时未出现。另外,当我开始运行它时,问题立即消失。此调试探针似乎无法复制。
gertvdijk 2012年

2

使用USB跟踪来解决奇怪的音频问题,我有些运气。有时,您可以根据内容或数据包的时间确定某些内容。就我而言,这是偶然的包长度变化,与我听到的噪音相对应。

这是 Wireshark 的页面,其中提供了一些信息。

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

  1. 须藤modprobe usmon
  2. cd / sys /内核/调试/ usb / usbmon
  3. 须藤猫0u | tee〜/ myusbtrace> / dev / null
  4. 运行测试
  5. 终止第3步的过程

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

第二列似乎包含时间,因此您应注意它的增量。如果启动平稳且稍后跳动,则问题可能出在蓝牙部分。

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


非常有帮助,谢谢。如果可能的话,本来会提供一笔小小的赏金。:)
gertvdijk 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.