USBゲームパッドがあり、この周辺機器が実際に自分のPC/カーネルに送る信号とコマンドを見て調べたいと思います。どうすればいいですか?
私は次のことを前提としています
cat /dev/bus/usb/006/003
それで十分ですが、明らかに、このコマンドは読み取れないエンコードされた文字をすぐに返して印刷します。
このようなUSBデバイスを「デバッグ」する方法はありますか?
答え1
Wiresharkを使用してUSBトラフィックをキャプチャできます。
それからウィキペディア:
usbmon
LinuxでUSBトラフィックをダンプするには、Linux以降から使用されてきたこのモジュールが必要です。2.6.11。このモジュールに関する情報は、/usr/src/linux/Documentation/usb/usbmon.txt
Linuxソースツリーにあります。使用しているディストリビューションとそのディストリビューションのバージョンによっては、このモジュールはカーネルに組み込まれているかロード可能なモジュールである可能性があります。ロード可能なモジュールの場合は、ディストリビューションによってロードされる場合もあれば、そうでない場合もあります。あなたが使用しているディストリビューションのバージョン。ロード可能なモジュールであるがロードされていない場合は、次のようにロードする必要があります。modprobe usbmon
ルートとして実行する必要があります。
1.0より前のlibpcapバージョンにはUSBサポートが含まれていないため、次のものが必要です。少なくともlibpcap1.0.0。
カーネルバージョンの場合21年6月21日以前唯一の利用可能なUSBトラフィックキャプチャメカニズムはテキストベースであり、生のUSBブロックごとにキャプチャされる総データ量を約30バイトに制限します。カーネルにパッチを適用しないと変更できません。 debugfsがまだインストールされていない場合は、
/sys/kernel/debug
rootとして次のコマンドを実行してインストールされていることを確認してください。mount -t debugfs / /sys/kernel/debug
カーネルバージョンの場合2.6.21以上、サイズ制限のないUSBパケットを追跡するためのバイナリプロトコルがあります。このカーネルバージョンの場合はlibpcapが必要です。1.1.0以上, libpcap 1.0.x USB は USB トラフィックを使用するメモリマッピングメカニズムをサポートしますが、正しく処理しないため、libpcap は使用可能な場合はそのメカニズムを使用します。使用できなくなる可能性があるため、libpcapは常にこのメカニズムを使用します。
libpcap 1.0.xでUSBキャプチャに使用されるデバイス名は次のとおりです。
usbn
Nバス番号です。libpcap 1.1.0以降では名前があります。usbmonn
Wiresharkも必要です。1.2.x以上。
答え2
検索時に初めて見つけた結果なので更新されました。 Debian Stretchで見つけた最良の方法は次のとおりです。
#usbhid-dump --entity=all
これにより、すべてのUSBデバイスから着信データがダンプされます。おいしい食べ物のようにキーボードを拾うと、ストリームのすべてのオペコードを読むことができます。