Como rastrear o tráfego USB no modo periférico ou OTG?

4

Eu configurei um Jessie Raspbian em um Raspberry Pi Zero para usar o USB OTG com o módulo dwc2 . O que eu gostaria de fazer agora é farejar o tráfego USB de entrada no lado periférico . Eu encontrei e testei o módulo do kernel usbmon , mas aparentemente (na medida do meu conhecimento limitado) parece não funcionar: nada é gravado.

Para fins de teste, tentei exatamente a mesma coisa no lado do host (outro computador no Linux) e posso rastrear com êxito os dados USB com usbmon . Infelizmente, isso não é o que eu preciso.

Em conclusão: é possível? E se sim, como? Posso usar usbmon ou eu tenho feito alguma outra coisa (por exemplo, recompilar o kernel com opções específicas)?

    
por wismna 10.01.2017 / 17:05

3 respostas

1

a ferramenta USBMon está inacabada

existe um módulo do kernel com o mesmo nome que está atualizado

certifique-se de que o módulo do kernel usbmon esteja disponível e carregue-o ( modprobe usbmon ) e você pode farejar o tráfego USB usando

  • usbdump (como uma interface para o módulo do kernel usbmon )
  • seguindo as instruções no link
  • wireshark link

veja também link

    
por 11.01.2017 / 10:25
0

Como não tenho um RPi à mão, não posso dizer com certeza se isso funcionará para você ou não, mas gerenciei com sucesso o monitoramento do tráfego USB em uma máquina remota usando tcpdump e wireshark , com o seguinte comando:

$ ssh user@remotehost 'tcpdump -U -i usbmon2 -w -' | wireshark -k -i -

Aqui, usbmon2 the 2 é para o ID do barramento no qual o dispositivo USB está conectado. Você pode obter isso com lsusb .

    
por 11.01.2017 / 10:46
0

Depois de muita pesquisa, não parece possível (ou, se for, eu não consigo encontrar qualquer informação em qualquer lugar) para rastrear o tráfego USB quando o controlador está em dispositivo ( ou periférico). Só é possível quando o controlador está configurado como um host .

Como nenhum rastreio é gerado por usbmon , infelizmente não consigo usar nenhuma ferramenta (Wireshark, dumpcap ...) porque eles precisam desse rastreio em primeiro lugar.

Então, o que vou tentar fazer agora é modificar o módulo do kernel libcomposite para adicionar informações de depuração ou até mesmo escrever um módulo específico projetado para sniffing (mas isso está muito acima do meu conhecimento atual no assunto momento).

    
por 12.01.2017 / 21:32