miniSniffer USB Protocol Analyzer - Hardware Sniffing on a Budget
The miniSniffer is a hardware packet capture and analysis tool for inspecting and debugging USB connections to Full Speed and High Speed devices.
For the designer and the developer and the debugger, the miniSniffer reveals exactly what is happening on a USB connection by capturing and displaying the packets that go up and down the wires.
The miniSniffer is delivered with software for capturing and displaying USB traffic, plus these software interfaces:
- an API for custom applications to drive the USB packet capture hardware
- an API for user programmable USB packet decoders.
The miniSniffer is nifty, compact, half the size of a credit card. As portable as portable can be. Also check out the ezSniffer - all the features of the miniSniffer plus an unlimited capture size. But not so portable.
The red line is a USB link that we can inspect.
Insert the miniSniffer into the USB link.
Then attach an analysis/diagnostic computer and we are ready to go.
The miniSniffer can do all this:
disconnect and reconnect USB devices. This makes it straightforward to capture startup packets, including descriptors.
compresses capture data. It can capture up to 128KBytes of compressed data.
sniff USB Full-Speed (FS) device traffic at 12Mbit/s.
sniff USB High-Speed (HS) device traffic. 480Mbit/s High-Speed devices power up as FS devices and then attempt to move up to HS. The miniSniffer prevents HS devices moving from FS to HS, so the miniSniffer can sniff these devices as well.
The minisniffer app shows captured packet details as a series of labelled rows:
with accompanying decodes of USB Setup Transfers:
The packet capture dialog:
Programming and API
Programmable interfaces to the capture logic and the decode are standard.
the capture logic interface can be driven by a Python, Lua, or similar scripting language. It can also be driven by a C++ application. The github repo includes a Python example.
the decode logic interface drives the decode pane in the main display and is implemented in the Lua language. The github repo includes the scripts that are used for the defaullt display.
Here are the connectors on the miniSniffer for USB links to the Target Host+Device and to the Analysis computer.
On the USB connection being sniffed
from the miniSniffer to the target device: the miniSniffer has a standard type A socket, so you can use the target device's regular cable.
from the target host to the miniSniffer: an A to micro-B cable.
On the Analysis PC
- a USB socket, either a USB socket on a PC or a socket on a USB Hub, plus a C cable. Most PCs have A sockets, and need an A to C cable. Some new PCs may have C sockets, they need a C to C cable.
Download the Windows software bundle from here:
|Windows 64-bit installer||minisniff-1.06-win-64.exe|
|Windows 32-bit installer||minisniff-1.06-win-32.exe|
and run the downloaded bundle to install the software.
Install the Windows Driver
The miniSniffer uses standard libusb drivers, WinUSB on Windows. Although no special drivers are required on Linux and Mac systems, a small amount of driver installation is required on Windows computers:
- download Zadig from https://zadig.akeo.ie/
- plug in the miniSniffer board.
- run the Zadig executable (no installation required).
- choose miniSniffer from the device list. If miniSniffer is not shown by Zadig, tick List All Devices in Options.
- make sure the WinUSB driver is selected.
- click Replace Driver.
You should now be ready to go, though you might have to unplug and replug on some systems. Optionally, you can check that the driver has been installed and the miniSniffer can be found by running minifind.exe, a console app that is installed as part of the download bundle.
Download the Linux software bundle from here:
The download bundle is a self-extracting shell archive, build with makeself. It should download with executable permission, but if necessary you can correct the permissions with:
chmod +x minisniff-1.06-linux-64.run
Run the download bundle via sudo. For instance:
There is a built-in setup script that runs automatically and sets udev rules so that the miniSniffer can access USB without special priviledges:
cp minisniff.rules /etc/udev/rules.d udevadm trigger udevadm control --reload-rules
Optionally, you can check your system has libusb installed and that the udev rules have been updated by running minifind, a console app that is part of the download bundle.
Download the Mac software bundle from here:
|Mac OS X 10.?? or later||to follow|
This will be the usual Mac 64-bit dmg archive. But it isn't ready yet.
The github repo is here.
|Operating Temperature||5°C to 40°C|
|Storage Temperature||-40°C to 75°C|
|Size||50mm x 33mm (2.0" x 1.3")|
|Power Source||Via USB cable. No external power supply|
Please note that the miniSniffer is high-performance test equipment. It is designed for users who are familiar with electronic design and debugging, and familiar with the usual safety precautions when working with electronic equipment.