¿Cómo depurar el retraso usando un mouse con Bluetooth y auriculares A2DP?

13

Tengo un mouse Logitech M555b para usar con mi laptop HP Elitebook 8570w con Kubuntu 12.04. Funciona bien justo después de conectarse usando el módulo de control Bluetooth KDE.

Sin embargo, después de un tiempo (aparentemente aleatorio), comienza a retrasarse. Los movimientos se retrasan aproximadamente 500 ms durante un corto período de tiempo. Por lo general, también se recupera después de un tiempo, pero puede llevar minutos. Todas las acciones se retrasan: movimientos, clics, desplazamientos. Además, los movimientos pueden ser entrecortados durante estos tiempos.

Una solución alternativa que siempre funciona durante el mismo período de tiempo corto es desconectar y volver a conectar el mouse. Esto se puede hacer usando el mismo módulo de control KDE Bluetooth.

¿Qué probé ya?

  • Ejecutando esto en el momento del arranque:

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

    Para desactivar las funciones de ahorro de energía en el hci0dispositivo Bluetooth .

  • Verifique las baterías del mouse (tiene solo una semana, otras baterías nuevas: el mismo resultado)

  • Comprobación de registros y mensajes del kernel sobre entradas relacionadas con Bluetooth: ninguno aparte de los mensajes esperados en el tiempo de conexión.
  • Estoy ejecutando kernel 3.5.0-13-genericsegún lo dispuesto en el PPA xorg-edgers . Arrancar el núcleo regular 3.2 Precise resultados en el mismo comportamiento.

Alguna otra información que puede ayudar:

  • Ocurre cuando no hay otras conexiones Bluetooth activas en la máquina.
  • Síntomas similares también ocurren en mis auriculares estéreo Bluetooth (A2DP), pero luego se retrasa y salta el audio. Intercambiar perfiles de Bluetooth como se describe aquí, entonces ayuda. Conclusión: no es el mouse el que está defectuoso.
  • Los auriculares siempre funcionaron bien con mi Thinkpad T61p ahora muerto con Bluetooth incorporado.
  • El módulo bluetooth de mi computadora portátil está conectado a través de USB y aparece como

    0a5c:21e1 Broadcom Corp. 
    
  • Apagar el adaptador Bluetooth incorporado y usar otro funciona bien, sin retraso.

    0a5c:2046 Broadcom Corp. Bluetooth Device
    

Soy móvil y varias personas a mi alrededor están utilizando Bluetooth en el trabajo (A2DP en su mayoría). También ocurre en casa, donde mis vecinos probablemente también estén usando Bluetooth. Se podría simplemente haber interferencia de radio, pero creo que las conexiones Bluetooth sólo debe saltar a otro canal. Y, además, simplemente funciona correctamente al instante cuando se vuelve a conectar.

Por lo tanto, creo que es un problema de controlador de software y me gustaría depurarlo. ¿Hay alguna forma de obtener un registro más detallado en los módulos Bluetooth (-hid)?

gertvdijk
fuente
Hasta que lo reemplacé por la placa base, tenía un puerto USB defectuoso en mi computadora. ¿Has intentado usar uno diferente para conectar tu módulo bluetooth? También puede intentar llevar su computadora al país, apagar su automóvil y su teléfono celular, y ver si todavía es un problema en ausencia de interferencia de RF.
John S Gruber
Encontré un dongle USB 2.0 Bluetooth más antiguo y este funciona de maravilla. Parece un 0a5c:21e1 Broadcom Corp.problema específico en Linux.
gertvdijk
Otra actualización sobre el problema original. Desde que estoy en el kernel de Linux 3.7.x, esto parece desvanecerse también en el adaptador interno, todo funciona muy bien. Probablemente golpeó un error aquí ahora corregido. Una vez que tenga tiempo para descubrir algunos detalles más, informaré esto como un error.
gertvdijk

Respuestas:

6

Puede intentar usar la hcidumputilidad del paquete bluez-hcidumppara monitorear sus dispositivos bluetooth y obtener información detallada:

sudo apt-get install bluez-hcidump

En la descripción del paquete, se observa que:

La utilidad hcidump permite monitorear la actividad de Bluetooth. Proporciona un desmontaje del tráfico de Bluetooth y puede mostrar paquetes de protocolos de nivel superior como RFCOMM, SDP y BNEP.

Puede usar la utilidad para registrar la salida de su dispositivo en la pantalla o archivo; donde hciXestá su propio dispositivo bluetooth (hci0 es el predeterminado y se usa si no especifica nada con -i), puede ejecutar:

sudo hcidump -x -i hciX

Puede guardar el volcado en el archivo agregando el comando -w ~/output, y si desea conocer específicamente los datos de audio, puede usar el -Ainterruptor y extraer los datos de audio SCO, aunque en este caso siempre debe especificar un archivo de salida:

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

Puede ver un archivo de volcado guardado utilizando

sudo hcidump -r ~/output

Hay muchas opciones más específicas que es posible que desee investigar; puede filtrar por tipo de paquete si lo desea, ya que por defecto todos los paquetes se vuelcan. Consulte man hcidumplas páginas de manual de Ubuntu en línea para obtener más información.

La única otra opción es instalar wiresharky ver si puede detectar sus dispositivos; si puede, podrá analizar el tráfico usb y bluetooth, como se indicó aquí , pero hcidumpdebería dar mejores resultados.


fuente
¡Gracias! Curioso acerca de esto es que mientras se ejecuta hcidumpel problema no aparece. Además, en el momento en que empiezo a ejecutarlo, el problema desaparece de inmediato. Esta sonda de depuración parece ser irreproducible.
gertvdijk
2

Tuve suerte usando el rastreo USB para resolver problemas extraños de audio. A veces puede determinar algo a partir del contenido o la sincronización de los paquetes. En mi caso, fue un cambio ocasional en la longitud del paquete correspondiente al ruido que estaba escuchando.

Aquí hay una página de Wireshark que proporciona información.

Puede obtener un rastro simplemente haciendo lo siguiente:

  1. sudo modprobe usmon
  2. cd / sys / kernel / debug / usb / usbmon
  3. sudo cat 0u | tee ~ / myusbtrace> / dev / null
  4. ejecuta tu prueba
  5. matar el proceso desde el paso 3

Aquí hay información del proyecto de Linux sobre esto, incluyendo cómo reducir lo que está rastreando.

La segunda columna parece contener el tiempo, por lo que debe vigilar cuidadosamente cómo se incrementa. Si comienza sin problemas y luego se pone nervioso, el problema puede estar en la sección de Bluetooth.

Si la traza muestra paquetes irregulares cuando hay un problema que podría ser USB o Bluetooth, pero la dirección de los paquetes irregulares puede indicar si es el núcleo o el controlador en lugar de algo en el otro lado del bus USB.

John S Gruber
fuente
Muy servicial, gracias. Hubiera ofrecido una pequeña recompensa si eso fuera posible. :)
gertvdijk