2012-10-02 5 views
5

Sto cercando di scrivere un driver Linux a un dispositivo che ho il driver di Windows di (simile al caso descritto Here, ma un dispositivo diverso)Conversione di un conducente a Linux

sto usando per Libusb la comunicazione sul lato linux e SourceUSB come il mio sniffer USB (sulla macchina Windows). Ora penso di aver replicato correttamente i controlli e le masse, ma non posso davvero testare il log di linux con quello di Windows. Sto usando Ubuntu 12.04 su una VM.

Quindi le mie domande sono:

  1. Esiste un logger multipiattaforma? Ciò potrebbe davvero semplificare il processo di confronto dei registri.
  2. Quando collego il dispositivo USB alla VM, ottengo il driver VM in Windows. Annusare questo dispositivo mi dà esattamente quello che il dispositivo vede, giusto? Voglio dire - E 'questo il posto dove voglio annusare?

EDIT: Ho compilato la mia domanda su Windows (libusb è cross platform - Un grande grazie a libusb sviluppatori che hanno fatto un buon lavoro) e la mia applicazione ha funzionato correttamente.

Quando si annota il driver VM mentre si esegue l'applicazione su Linux, vedo le richieste sull'USB come VENDOR_DEVICE invece di CONTROL_TRANSFER e BULK_OR_INTERRUPT. Questo sembra essere il problema se capisco correttamente, poiché questo è ciò che il dispositivo "vede".

Quindi immagino che il mio problema ora sia il motivo per cui Linux invia le mie richieste come fornitore.

ALTRO EDIT: Problema risolto:

  1. Ascoltando il driver VM mi ha dato le richieste sbagliate (stavo ascoltando il traffico conducente VM, non, come ho voluto, il traffico del mio driver per Linux USB
  2. Libusb è perfettamente multipiattaforma. mi ci sono voluti un paio di minuti per raggiungere il mio codice per compilare sotto le finestre, e da lì è stato abbastanza facile da mettere a punto e confrontare i registri

risposta

5

è possibile utilizzare Wireshark per catturare il traffico USB. Questa pagina spiega come farlo per Linux e Wi ndows: CaptureSetup/USB