Como depurar o atraso usando mouse conectado Bluetooth e fone de ouvido A2DP?

13

Eu possuo um mouse Logitech M555b para uso com meu laptop HP Elitebook 8570w em execução Kubuntu 12.04. Funciona bem após a conexão usando o módulo de controle Bluetooth do KDE.

No entanto, depois de algum tempo (aparentemente aleatório), ele começa a ficar lento. Os movimentos estão sendo atrasados por cerca de 500ms por um curto período de tempo. Normalmente, ele se recupera depois de algum tempo também, mas pode levar alguns minutos. Todas as ações estão sendo atrasadas: movimentos, clique, rola. Além disso, os movimentos podem ser agitados durante esses tempos.

Uma solução alternativa que sempre funciona durante o mesmo curto período de tempo é desconectar o mouse novamente. Isto pode ser feito usando o mesmo módulo de controle Bluetooth do KDE.

O que eu já tentei?

  • Executando isso no momento da inicialização:

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

    Para desativar os recursos de economia de energia no dispositivo Bluetooth hci0 .

  • Verifique as pilhas do mouse (só tem uma semana, outras baterias novas: o mesmo resultado)

  • Verificando logs e mensagens do kernel sobre entradas relacionadas ao Bluetooth: nenhuma além das mensagens esperadas no tempo de conexão.
  • Estou executando o kernel 3.5.0-13-generic conforme fornecido no PPAs xorg-edgers . A inicialização do kernel regular 3.2 resulta no mesmo comportamento.

Algumas outras informações que podem ajudar:

  • Acontece quando nenhuma outra conexão Bluetooth está ativa na máquina.
  • Sintomas semelhantes também ocorrem em meu fone de ouvido estéreo Bluetooth (A2DP), mas o áudio fica atrasado e é ignorado. Trocar os perfis Bluetooth conforme descrito aqui então ajuda. Conclusão: não é o mouse que está com defeito.
  • O fone de ouvido sempre funcionou bem usando meu agora morto Thinkpad T61p com Bluetooth integrado.
  • O módulo bluetooth no meu laptop é conectado via USB e aparece como

    0a5c:21e1 Broadcom Corp. 
    
  • Desligar o adaptador Bluetooth integrado e usar outro funciona bem, sem atrasos.

    0a5c:2046 Broadcom Corp. Bluetooth Device
    

Sou móvel e várias pessoas ao meu redor estão usando o Bluetooth no trabalho (principalmente A2DP). Também ocorre em casa, onde meus vizinhos provavelmente estão usando o Bluetooth também. Isso poderia ser apenas interferência de rádio, mas eu acho que as conexões Bluetooth devem apenas saltar para outro canal. E, além disso, apenas funciona corretamente instantaneamente quando se re-conecta.

Portanto, acho que é um problema de driver de software e gostaria de depurá-lo. Existe alguma maneira de obter log mais detalhado nos módulos Bluetooth (-hid)?

    
por gertvdijk 17.09.2012 / 13:30

2 respostas

6

Você pode tentar usar o utilitário hcidump do pacote bluez-hcidump para monitorar seus dispositivos Bluetooth e obter informações detalhadas:

sudo apt-get install bluez-hcidump

Na descrição do pacote, note-se que:

% bl0ck_qu0te%

Você pode usar o utilitário para registrar a saída do seu dispositivo para a tela ou arquivo; onde hciX é seu próprio dispositivo bluetooth (hci0 é o padrão e usado se você não especificar nada com -i ), você pode executar:

sudo hcidump -x -i hciX

Você pode salvar o despejo em arquivo anexando ao comando -w ~/output e, se quiser saber especificamente sobre os dados de áudio, pode usar a opção -A e, assim, extrair dados de áudio SCO, embora nesse caso você deve sempre especificar um arquivo de saída:

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

Você pode ver um arquivo de despejo salvo usando

sudo hcidump -r ~/output

Existem muito mais opções específicas que você pode querer investigar; Você pode filtrar por tipo de pacote, se quiser, como por padrão todos os pacotes são despejados. Por favor, consulte man hcidump ou os Man pages on-line do Ubuntu para obter mais informações.

A única outra opção é instalar wireshark e ver se ele pode detectar seus dispositivos; se puder, ele poderá analisar o tráfego usb e bluetooth, conforme aqui , mas hcidump deve dar melhores resultados.

    
por user76204 25.09.2012 / 19:10
2

Eu tive alguma sorte usando o rastreamento USB para resolver problemas estranhos de áudio. Às vezes você pode determinar algo do conteúdo ou o tempo dos pacotes. No meu caso, foi uma mudança ocasional no comprimento do pacote correspondente ao ruído que eu estava ouvindo.

Aqui está uma página do Wireshark que fornece algumas informações.

Você pode obter um rastreamento simplesmente fazendo o seguinte:

  1. sudo modprobe usmon
  2. cd / sys / kernel / depuração / usb / usbmon
  3. gato sudo 0u | tee ~ / myusbtrace > / dev / null
  4. execute seu teste
  5. mate o processo da etapa 3

Aqui são informações do projeto linux sobre isso, incluindo como restringir o que você estão traçando.

A segunda coluna parece conter a hora, portanto, você deve observar atentamente como ela é incrementada. Se começar suave e depois ficar nervoso, o problema pode estar na seção bluetooth.

Se o rastreamento mostrar pacotes irregulares quando houver um problema que pode ser USB ou bluetooth, mas a direção dos pacotes irregulares pode indicar se é o kernel ou o driver, e não algo do outro lado do barramento USB.

    
por John S Gruber 25.09.2012 / 18:42