Модуль добавляет новый программный интерфейс в подсистему ядра USB Gadget и развивается в качестве альтернативы GadgetFS. Создание нового API обусловлено необходимостью получения низкоуровневого и прямого доступа к подсистеме USB Gadget из пространства пользователя, позволяющего обрабатывать все возможные USB-запросы (GadgetFS обрабатывает некоторые запросы самостоятельно, не передавая в пространство пользователя). Управление USB Raw Gadget производится через устройство /dev/raw-gadget по аналогии с /dev/gadget в GadgetFS, но для взаимодействия применяется интерфейс на основе ioctl(), а не псевдо-ФС.
Кроме прямой обработки всех USB-запросов процессом в пространстве пользователя новый интерфейс также отличается возможностью возвращения любых данных в ответ на USB-запрос (GadgetFS выполняет проверку корректности USB-дескрипторов и фильтрует определённые ответы, что мешает выявлению ошибок при fuzzing-тестировании USB-стека). Raw Gadget также даёт возможность выбрать конкретное устройство UDC (USB Device Controller) и драйвер для прикрепления, в то время как GadgetFS прикрепляется к первому доступному устройству UDC. Для разных UDC назначаются предсказуемые имена endpoint для разделения разных типов каналов обмена данными внутри одного устройства.
Источник: http://www.opennet.ru/opennews/art.shtml?num=52324