Как сбросить USB-трафик?

У меня есть USB-геймпад, и я хотел бы видеть и проверять сигналы и команды, которые эти периферийные устройства действительно отправляют на мой компьютер / ядро: как я могу это сделать?

Я предполагал, что что-то вроде

cat /dev/bus/usb/006/003 

Было достаточно, но, видимо, эта команда немедленно возвращается и печатает некоторые нечитаемые кодированные символы.

Есть способ «отладить» устройство USB, подобное этому?

Вы можете захватить USB-трафик с помощью Wireshark.
Из его вики :

Чтобы сбросить USB-трафик в Linux, вам нужен модуль usbmon , который существует с Linux 2.6.11 . Информация об этом модуле доступна в /usr/src/linux/Documentation/usb/usbmon.txt в исходном дереве Linux. В зависимости от используемого дистрибутива и версии этого дистрибутива, этот модуль может быть встроен в ядро ​​или может быть загружаемым модулем; если это загружаемый модуль, в зависимости от используемого дистрибутива и версии этого дистрибутива, он может быть или не быть загружен для вас. Если это загружаемый модуль и не загружен, вам придется загрузить его с помощью команды

modprobe usbmon

который должен выполняться как root.

Релизы libpcap до 1.0 не включают поддержку USB, поэтому вам понадобится хотя бы libpcap 1.0.0 .

Для версий ядра до 2.6.21 доступен единственный механизм захвата трафика USB – текстовый механизм, который ограничивает общий объем данных, захваченных для каждого необработанного блока USB, примерно до 30 байтов. Невозможно изменить это, не исправляя ядро. Если debugfs еще не установлен на /sys/kernel/debug , убедитесь, что он установлен там, вызывая следующую команду:

mount -t debugfs / /sys/kernel/debug

Для версии ядра 2.6.21 и более поздних версий существует двоичный протокол для трассировки пакетов USB, которые не имеют такого ограничения по размеру. Для этой версии ядра вам понадобится libpcap 1.1.0 или новее , потому что поддержка USB libpcap 1.0.x использует, но неправильно обрабатывает механизм отображения памяти для USB-трафика, который libpcap будет использовать, если он доступен, – он не может быть недоступен, поэтому libpcap всегда будет использовать его.

В libpcap 1.0.x устройства для захвата на USB имеют имя usbn, где n – номер шины. В libpcap 1.1.0 и более поздних версиях они имеют имя usbmonn.

Вам также понадобится Wireshark 1.2.x или новее .