walnux/Documentation/components/drivers/special/usbmonitor.rst
Lars Kruse b333ad3ab5 style: fix typos
Thanks, codespell!
2025-04-30 13:45:46 +08:00

55 lines
1.5 KiB
ReStructuredText

===================
USB Monitor support
===================
Wireshark
=========
The wireshark software USB capture can capture URBs (USB Request Blocks) rather than raw USB packets when device connect to host directly.
To capture raw USB packets, a sniffer is needed.
Linux
-----
1. Install Wireshark::
sudo apt update
sudo apt install wireshark
2. (Optional) Configure Wireshark
Wireshark official documentation: https://wiki.wireshark.org/CaptureSetup/USB
3. Load the usbmon kernel module and run Wireshark::
sudo modprobe usbmon
sudo wireshark
4. Find bus the device connects::
$ adb devices -l
List of devices attached
1234 device usb:1-9.4 product:adb dev model:adb_board device:NuttX device transport_id:1000
$ dmesg
[3713722.861582] usb 1-9.4: New USB device found, idVendor=18d1, idProduct=4e11, bcdDevice= 1.01
$ lsusb
Bus 001 Device 035: ID 18d1:4e11 Google Inc. Nexus One
5. Filter address
- Select usbmon (Bus 001): usbmon1
- Wireshark filter (Bus 001 Device 035): usb.addr[0:4] == "1.35"
6. Example
Capturing ADB packets with filter (usb.addr[0:4] == "1.35"), on board `ESP32S3-DevKit:ADB <https://nuttx.apache.org/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-devkit/index.html#adb>`_::
adb -s 1234 shell ls /dev/
The example PcapNg(Packet CAPture Next Generation) file can be downloaded from :download:`here <./usbmonitor_wireshark_linux_example_adb.pcapng>`.
.. figure:: usbmonitor_wireshark_linux_example_adb.png
:align: center
Wireshark Capturing