use*_*710 13 linux debugging usb
我有一个 USB 游戏手柄,我想查看并检查该外围设备实际发送到我的 PC/内核的信号和命令:我该怎么做?
我假设像
cat /dev/bus/usb/006/003
Run Code Online (Sandbox Code Playgroud)
足够了,但显然这个命令会立即返回并打印一些不可读的编码字符。
有没有办法“调试”这样的 USB 设备?
Cos*_*ușă 15
您可以使用 Wireshark 捕获 USB 流量。
从它的维基:
要在 Linux 上转储 USB 流量,您需要该
usbmon
模块,该模块自 Linux 2.6.11以来就已存在。/usr/src/linux/Documentation/usb/usbmon.txt
Linux 源代码树中提供了有关该模块的信息。根据您使用的发行版和发行版的版本,该模块可能内置于内核中,也可能是可加载模块;如果它是可加载模块,则取决于您使用的发行版和该发行版的版本,它可能会或可能不会为您加载。如果它是一个可加载的模块,并且未加载,则必须使用以下命令加载它Run Code Online (Sandbox Code Playgroud)modprobe usbmon
必须以 root 身份运行。
1.0 之前的 libpcap 版本不包括 USB 支持,因此您至少需要libpcap 1.0.0。
对于2.6.21 之前的内核版本,唯一可用的 USB 流量捕获机制是基于文本的机制,它将为每个原始 USB 块捕获的数据总量限制为大约 30 个字节。如果不修补内核,就无法改变这一点。如果 debugfs 尚未安装在 上
/sys/kernel/debug
,请通过以 root 身份发出以下命令来确保将其安装在那里:Run Code Online (Sandbox Code Playgroud)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 上捕获的设备的名称为,其中n是总线编号。在 libpcap 1.1.0 及更高版本中,它们的名称为.
usbn
usbmonn
您还需要 Wireshark 1.2.x 或更新版本。
小智 6
更新是因为这是我查找时发现的第一个结果。我在 Debian Stretch 上找到的最佳方法如下:
# usbhid-dump --entity=all
这将转储从所有 USB 设备传入的数据。像对待美食一样拿起我的键盘,我可以读取流中的每个操作码。
归档时间: |
|
查看次数: |
18243 次 |
最近记录: |