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

13

Eu possuo um mouse Logitech M555b para uso com o meu laptop HP Elitebook 8570w executando o Kubuntu 12.04. Funciona bem logo 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 adiados por aproximadamente 500ms por um curto período de tempo. Normalmente, ele também se recupera após algum tempo, mas pode levar alguns minutos. Todas as ações estão atrasadas: movimentos, clique, rola. Além disso, os movimentos podem ser agitados durante esse período.

Uma solução alternativa que sempre funciona pelo mesmo curto período de tempo é desconectar e reconectar o mouse. Isso pode ser feito usando o mesmo módulo de controle KDE Bluetooth.

O que eu já tentei?

  • Executando isso no momento da inicialização:

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

    Para desativar qualquer recurso de economia de energia no hci0dispositivo Bluetooth .

  • Verifique as pilhas do mouse (há apenas uma semana, outras pilhas novas: o mesmo resultado)

  • Verificando logs e mensagens do kernel sobre entradas relacionadas ao Bluetooth: nenhuma exceto as mensagens esperadas no tempo de conexão.
  • Estou executando o kernel 3.5.0-13-genericcomo fornecido no PPA do xorg-edgers . A inicialização do kernel 3.2 Precise regular resulta no mesmo comportamento.

Algumas outras informações que podem ajudar:

  • Isso acontece quando nenhuma outra conexão Bluetooth está ativa na máquina.
  • Sintomas semelhantes também ocorrem no meu fone de ouvido estéreo Bluetooth (A2DP), mas ficam atrasados ​​e pulando. A troca de perfis Bluetooth, conforme descrito aqui , ajuda. Conclusão: não é o mouse que está com defeito.
  • O fone de ouvido sempre funcionou bem usando meu Thinkpad T61p, agora morto, com Bluetooth embutido.
  • O módulo bluetooth no meu laptop está conectado via USB e aparece como

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

    0a5c:2046 Broadcom Corp. Bluetooth Device
    

Sou móvel e várias pessoas ao meu redor estão usando Bluetooth no trabalho (principalmente A2DP). Também ocorre em casa, onde meus vizinhos provavelmente também estão usando Bluetooth. isto poderia ser apenas a interferência de rádio, mas eu acho conexões Bluetooth deve apenas hop para outro canal. Além disso, ele funciona corretamente instantaneamente quando se reconecta.

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

gertvdijk
fonte
Até eu ser substituído pela placa-mãe, eu tinha uma porta USB ruim no meu computador. Você já tentou usar um diferente para conectar seu módulo bluetooth? Você também pode tentar levar o computador para uma volta ao país, desligar o carro e o telefone celular e verificar se ainda há um problema na ausência de interferência de RF.
John S Gruber
Encontrei um dongle USB 2.0 Bluetooth mais antigo e este funciona como um encanto. Parece um 0a5c:21e1 Broadcom Corp.problema específico no Linux.
gertvdijk
Outra atualização sobre o problema original. Desde que estou no kernel 3.7.x do Linux, isso parece desaparecer também no adaptador interno - tudo funciona muito bem. Provavelmente atingiu um bug aqui agora corrigido. Quando tiver tempo para descobrir mais alguns detalhes, relatarei isso como um bug.
precisa saber é o seguinte

Respostas:

6

Você pode tentar usar o hcidumputilitário do pacote bluez-hcidumppara monitorar seus dispositivos bluetooth e obter informações detalhadas:

sudo apt-get install bluez-hcidump

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

O utilitário hcidump permite o monitoramento da atividade do Bluetooth. Ele fornece uma desmontagem do tráfego Bluetooth e pode exibir pacotes de protocolos de nível superior, como RFCOMM, SDP e BNEP.

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

sudo hcidump -x -i hciX

Você pode salvar o despejo em arquivo anexando ao comando -w ~/outpute, se desejar saber especificamente sobre os dados de áudio, poderá usar o -Acomutador e, assim, extrair os dados de áudio do SCO, embora, neste caso, você sempre deva especificar um arquivo de saída:

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

Você pode visualizar um arquivo de despejo salvo usando

sudo hcidump -r ~/output

Há muito mais opções específicas que você pode querer investigar; você pode filtrar por tipo de pacote, se desejar, pois, por padrão, todos os pacotes são descartados. Por favor, veja man hcidumpou as páginas de manual do Ubuntu online para mais informações.

A única outra opção é instalar wiresharke ver se ele pode detectar seus dispositivos; se puder, será capaz de analisar o tráfego usb e bluetooth, conforme observado aqui , mas hcidumpdeverá fornecer melhores resultados.


fonte
Obrigado! O que é curioso é que, durante a execução hcidumpdo problema, não aparece. Além disso, no momento em que começo a executá-lo, o problema desaparece imediatamente. Esse probe de depuração parece tornar irreprodutível.
gertvdijk
2

Tive alguma sorte usando o rastreamento USB para resolver problemas estranhos de áudio. Às vezes, você pode determinar algo a partir do conteúdo ou do tempo dos pacotes. No meu caso, houve uma alteração 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. sudo cat 0u | tee ~ / myusbtrace> / dev / null
  4. faça seu teste
  5. mate o processo da etapa 3

Aqui estão as informações do projeto linux sobre isso, incluindo como restringir o que você está rastreando.

A segunda coluna parece conter o tempo, portanto, você deve observar cuidadosamente como ele aumenta. Se começar suavemente e depois ficar irregular, o problema pode estar na seção bluetooth.

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

John S Gruber
fonte
Muito útil, obrigado. Teria oferecido uma pequena recompensa, se isso fosse possível. :)
gertvdijk 26/09/12