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

13

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

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

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

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

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

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

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

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

  • Проверка журналов и сообщений ядра о записях, связанных с Bluetooth: ни один, кроме ожидаемых сообщений о времени соединения.
  • Я использую ядро, 3.5.0-13-genericкак указано в PPA xorg-edgers . Загрузка обычного ядра 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)?

gertvdijk
источник
Пока я не заменил материнскую плату, у меня был плохой порт USB на моем компьютере. Вы пытались использовать другой для подключения вашего модуля Bluetooth? Вы также можете попробовать отвезти свой компьютер для поездки за город, выключить автомобиль и мобильный телефон и проверить, не возникает ли проблема при отсутствии радиочастотных помех.
Джон С. Грубер
Я нашел старый USB 2.0 ключ Bluetooth, и он работает как шарм. Похоже, конкретная 0a5c:21e1 Broadcom Corp.проблема в Linux.
gertvdijk
Еще одно обновление об оригинальной проблеме. С тех пор, как я использую ядро ​​Linux 3.7.x, это также исчезло на внутреннем адаптере - все работает очень хорошо. Вероятно, попала ошибка здесь и сейчас исправлена. Как только у меня будет время выяснить некоторые детали, я сообщу об этом как об ошибке.
gertvdijk

Ответы:

6

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

sudo apt-get install bluez-hcidump

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

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

Вы можете использовать утилиту для записи вывода с вашего устройства на экран или в файл; где hciXваше собственное устройство Bluetooth (по умолчанию используется 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 и Bluetooth, как отмечено здесь , но hcidumpдолжен дать лучшие результаты.


источник
Благодарность! Особенностью этого является то, что во время работы hcidumpпроблема не появляется. Кроме того, в тот момент, когда я запускаю его, проблема немедленно исчезает. Этот отладочный зонд кажется невоспроизводимым.
gertvdijk
2

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

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

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

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

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

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

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

Джон С. Грубер
источник
Очень полезно, спасибо. Я бы предложил небольшую награду, если бы это было возможно. :)
gertvdijk