Andrej Konovalov di Google sta sviluppando un nuovo modulo , per emulare dispositivi USB nello spazio utente. È attualmente in fase di valutazione per l'inclusione di questo modulo nel kernel Linux. USB Raw Gadget è già in Google per semplificare i test fuzzing dello stack USB del kernel tramite strumenti .
Il modulo aggiunge una nuova interfaccia di programmazione nella sottosistema del kernel e si evolve come alternativa a GadgetFS. La creazione di una nuova API è motivata dalla necessità di ottenere un accesso a basso livello e diretto alla sottosistema USB Gadget dallo spazio utente, consentendo di gestire tutte le possibili richieste USB (GadgetFS gestisce alcune richieste autonomamente, senza passare allo spazio utente). La gestione di USB Raw Gadget avviene attraverso il dispositivo /dev/raw-gadget similmente a /dev/gadget in GadgetFS, ma per l'interazione viene utilizzata un'interfaccia basata su ioctl(), e non un pseudo-FS.
Oltre alla gestione diretta di tutte le richieste USB da parte di un processo nello spazio utente, la nuova interfaccia offre anche la possibilità di restituire qualsiasi dato in risposta a una richiesta USB (GadgetFS esegue un controllo sui descrittori USB e filtra determinate risposte, il che ostacola l'identificazione di errori durante i test fuzzing dello stack USB). Raw Gadget consente inoltre di selezionare un dispositivo UDC (Controller Dispositivo USB) specifico e un driver da collegare, mentre GadgetFS si collega al primo dispositivo UDC disponibile. Vengono assegnati nomi predeterminati per diversi UDC per separare i diversi tipi di canali di scambio dati all'interno di un singolo dispositivo.
Fonte: opennet.ru
