如何使用蓝牙连接鼠标和A2DP耳机调试滞后?
我拥有一台Logitech M555b鼠标,用于运行Kubuntu 12.04的HP Elitebook 8570w笔记本电脑。 使用KDE蓝牙控制模块连接后立即正常工作。
然而,经过一段时间(看似随机),它开始滞后。 运动在短时间内被推迟约500毫秒。 通常它会在一段时间后恢复,但可能需要几分钟。 所有动作都被延迟:动作,点击,滚动。 此外,在这些时间内,运动可能会波动。
始终在相同的短时间内工作的解决方法是断开重新连接鼠标的连接。 这可以使用相同的KDE蓝牙控制模块完成。
我已经尝试了什么?
-
在启动时运行:
echo on > `readlink -f /sys/class/bluetooth/hci0`/../../../power/level
禁用Bluetooth
hci0
设备上的任何省电function。 -
检查鼠标的电池(这只是一周之久,其他新电池:同样结果)
- 检查有关蓝牙相关条目的日志和内核消息:除了连接时的预期消息之外没有。
- 我正在运行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)。 它也发生在家里,我的邻居也可能在那里使用蓝牙。 它可能只是无线电干扰,但我认为蓝牙连接应该跳到另一个频道。 而且,它在重新连接时可以立即正常工作。
因此我认为这是一个软件驱动程序问题,我想调试它。 有没有办法在蓝牙(-hid)模块上获得更详细的日志记录?
您可以尝试使用bluez-hcidump
软件包中的hcidump
实用程序来监控您的蓝牙设备并获取更深入的信息:
sudo apt-get install bluez-hcidump
在包描述中,注意到:
hcidump实用程序允许监视蓝牙活动。 它提供了蓝牙流量的反汇编,可以显示来自更高级别协议(如RFCOMM,SDP和BNEP)的数据包。
您可以使用该实用程序将设备的输出记录到屏幕或文件中; 其中hciX
是你自己的蓝牙设备(如果你没有用-i
指定任何东西,则默认使用hci0),你可以运行:
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
应该会给出更好的结果。
我有幸使用USB跟踪来解决奇怪的音频问题。 有时您可以根据内容或数据包的时间来确定某些内容。 在我的情况下,与我听到的噪音相对应的包长度偶尔会发生变化。
这是 Wireshark 的一个页面 ,它提供了一些信息。
您只需执行以下操作即可获得跟踪:
- sudo modprobe usmon
- cd / sys / kernel / debug / usb / usbmon
- sudo cat 0u | tee~ / myusbtrace> / dev / null
- 运行你的测试
- 从第3步中删除该过程
以下是来自linux项目的信息,包括如何缩小您的跟踪范围。
第二列似乎包含时间,因此您应该仔细观察它的增量。 如果它开始平滑,后来变得跳跃,问题可能在蓝牙部分。
如果在存在可能是USB或蓝牙的问题时跟踪显示不规则数据包,但不规则数据包的方向可能指示它是内核还是驱动程序而不是USB总线另一侧的内容。