2012-10-29 2 views
8

In breve, sto sviluppando un sistema embedded che richiede, tra le altre cose, un bridge da una porta host USB a una porta del dispositivo (questo è solo un primo passo, più tardi le informazioni trasmesse saranno essere filtrato e alterato).Bridge Host USB al dispositivo

Considerando che questo è fondamentalmente uno snooper/sniffer USB, ho pensato che qualcuno avrebbe dovuto scrivere un modulo in grado di farlo, ma la mia ricerca si è rivelata inutile.

Quindi, alla domanda: qual è il modo più semplice per reindirizzare un host USB a un dispositivo USB in Linux? I dati devono essere identici, tutti i descrittori e gli endpoint devono corrispondere. Deve essere Linux amichevole, posso codice in C/C++ e una certa esperienza con i moduli di codifica del kernel, driver, ecc

+0

Fondamentalmente è necessario scrivere il proprio driver, che dovrebbe elaborare i dati in/out. Dovresti iniziare a studiare come si può sviluppare un driver USB su Linux. – garzanti

risposta

5

ho trovato il lavoro precedente alla http://www.elinux.org/BeagleBoard/GSoC/2010_Projects/USBSniffer

Il modo più semplice per reindirizzare un host USB ad un Il dispositivo USB in Linux è a mio parere utilizzare sia lo stack USB periferico di Linux sia lo stack USB del gadget Linux. Questi stack si prendono cura del livello basso, quindi il tuo codice dovrebbe riguardare solo l'interfaccia di alto livello tra questi due stack. Il bonus aggiuntivo è che lo sniffer (tramite usbmon) arriverà quasi gratis.

In questo modo si occuperà del kernel Linux, deve essere compatibile con Linux. L'interfaccia per entrambi gli stack è (almeno) disponibile in C. Quindi, le tue condizioni sono soddisfatte.

+0

Grazie per il link, stammi bene a controllare dopo. E in sostanza sì, sono andato un po 'più in alto. Non è flessibile ma sono stato pressato con alcuni limiti di tempo seri. Se mai riuscissi a migliorare, andrei anche io. – user1783395