Как отладить лаг с помощью Bluetooth-подключенной мыши и гарнитуры A2DP?

У меня есть мышь Logitech M555b для использования с моим ноутбуком HP Elitebook 8570w под управлением Kubuntu 12.04. Прекрасно работает сразу после подключения с помощью модуля управления KDE Bluetooth.

Однако через некоторое время (казалось бы, случайное) оно начинает отставать. Движения задерживаются примерно на 500 мсек на короткий промежуток времени. Обычно он восстанавливается через некоторое время, но это может занять несколько минут. Все действия откладываются: движения, клики, прокрутки. Кроме того, движения могут быть прерывистыми в это время.

Обходной путь, который всегда работает в течение одного и того же короткого промежутка времени, заключается в отключении и повторном подключении мыши. Это можно сделать с помощью того же модуля управления Bluetooth KDE.

Что я уже пробовал?

  • Запуск во время загрузки:

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

    Чтобы отключить все функции энергосбережения на устройстве Bluetooth hci0.

  • Проверьте батарейки мыши (ей всего неделя, другие новые батарейки: тот же результат)

  • Проверка журналов и сообщений ядра о записях, связанных с Bluetooth: ни одной, кроме ожидаемых время соединения.
  • Я использую ядро ​​3.5.0-13-generic, как указано в xorg-edgers PPA . Загрузка обычного ядра 3.2 Precise приводит к тому же поведению.

Некоторая другая информация, которая может помочь:

  • Это происходит, когда никакие другие соединения Bluetooth не активны на машине.
  • Аналогичные симптомы возникают и в моей стереогарнитуре Bluetooth (A2DP), но в этом случае звук отстает и пропускается. Поменяйте местами профили Bluetooth, как описано здесь здесь . Вывод: неисправна не мышь.
  • Гарнитура всегда работала нормально, используя мой мертвый Thinkpad T61p со встроенным Bluetooth.
  • Модуль Bluetooth в моем ноутбуке подключен через USB и отображается как

    0a5c:21e1 Broadcom Corp. 
    
  • Выключение встроенного адаптера Bluetooth и использование другого работает нормально, без лагов.

    0a5c:2046 Broadcom Corp. Bluetooth Device
    

Я мобильн, и несколько человек вокруг меня используют Bluetooth на работе (в основном A2DP). Это также происходит дома, где мои соседи, вероятно, также используют Bluetooth. Это может просто быть радиопомехой, но я думаю, что Bluetooth-соединения должны просто переходить на другой канал. И, кроме того, он просто работает правильно сразу же при повторном подключении.

Поэтому я думаю, что это проблема с программным драйвером, и я бы хотел ее отладить. Есть ли способ получить более подробное ведение журнала в модулях Bluetooth (-hid)?

13
задан 13 April 2017 в 15:23

2 ответа

Мне посчастливилось использовать USB-трассировку для решения странных проблем со звуком. Иногда вы можете определить что-то из содержимого или времени пакетов. В моем случае это было случайное изменение длины пакета, соответствующее шуму, который я слышал.

Вот страница из Wireshark, которая предоставляет некоторую информацию.

Вы можете получить трассировку, просто выполнив следующее:

  1. sudo modprobe usmon
  2. cd / sys / kernel / debug / usb / usbmon
  3. sudo кот 0u | tee ~ / myusbtrace> / dev / null
  4. запустить тест
  5. завершить процесс из шага 3

Здесь - информация из Linux проект об этом, в том числе, как сузить то, что вы отслеживаете.

Второй столбец содержит время, поэтому вам следует внимательно следить за тем, как оно увеличивается. Если он начинается плавно, а потом становится нервным, проблема может быть в разделе Bluetooth.

Если трассировка показывает нерегулярные пакеты, когда есть проблема, которая может быть или USB или Bluetooth, но направление нерегулярных пакетов может указать, является ли это ядром или драйвером, а не чем-то на другой стороне USB-шина.

0
ответ дан 13 April 2017 в 15:23

Вы можете попробовать использовать утилиту hcidump из пакета bluez-hcidump для мониторинга ваших устройств Bluetooth и получения подробной информации:

sudo apt-get install bluez-hcidump

В описании пакета указано, что: [ 1116]

Утилита hcidump позволяет отслеживать активность Bluetooth. Он обеспечивает разборку трафика Bluetooth и может отображать пакеты из протоколов более высокого уровня, таких как RFCOMM, SDP и BNEP.

Вы можете использовать утилиту для записи вывода с вашего устройства на экран или в файл; где hciX - ваше собственное устройство Bluetooth (hci0 - это значение по умолчанию и используется, если вы ничего не указали с помощью -i), вы можете запустить:

sudo hcidump -x -i hciX

Вы можете сохранить дамп в файл, выполнив добавив к команде -w ~/output, и, если вы конкретно хотите узнать об аудиоданных, вы можете использовать переключатель -A и, таким образом, извлечь аудиоданные SCO, хотя в этом случае вы всегда должны указывать выходной файл:

[ 112]

Вы можете просмотреть сохраненный файл дампа, используя

sudo hcidump -r ~/output

. Есть много более специфических опций, которые вы можете исследовать; Вы можете фильтровать по типу пакета, если хотите, так как по умолчанию все пакеты сбрасываются. Пожалуйста, смотрите man hcidump или руководства по Ubuntu онлайн для получения дополнительной информации.

Единственный другой вариант - установить wireshark и посмотреть, сможет ли он обнаружить ваши устройства; если это возможно, он сможет анализировать трафик usb и bluetooth, как отмечено здесь , здесь , но hcidump должно дать лучшие результаты.

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: