ezSniffer USB Protocol Analyzer - Hardware Sniffing on a Budget
The ezSniffer is a hardware packet capture and analysis tool for inspecting and debugging USB connections to Full Speed and High Speed devices.
The ezSniffer is an add-on to the EZ-USB FX2LP board that is widely available on ebay and similar web sites. We supply the ezSniffer mounted on an EZ-USB board, together with a USB mini cable needed by the EZ-USB board. Alternatively, we also supply the ezSniffer as a bare board.
The ezSniffer 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 ezSniffer is nifty and compact, around half the size of a credit card. Also check out the miniSniffer - the features of the ezSniffer, more portable, but a limited capture size.
The red line is a USB link that we can inspect.
Insert the ezSniffer into the USB link.
Then attach an analysis/diagnostic computer and we are ready to go.
The ezSniffer 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 256MBytes 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 ezSniffer prevents HS devices moving from FS to HS, so the ezSniffer can sniff these devices as well.
The ezsniffer 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.
On the Analysis PC
the hardware requires a USB socket, either a USB socket on a PC or a socket on a USB Hub.
If you buy a bare ezSniffer board you will need an EZ-USB board plus an A to mini-B cable. These are included in the alternative ezSniffer plus EZ-USB package.
On the USB connection being sniffed
from the host to the ezSniffer: an A to micro-B cable, the most common USB cable type.
from the ezSniffer to the target device: the ezSniffer has a standard type A socket, so you can use the target device's regular cable.
Download the Windows software bundle from here:
|Windows 64-bit installer||ezsniff-1.08-win-64.exe|
|Windows 32-bit installer||ezsniff-1.08-win-32.exe|
and run the downloaded bundle to install the software.
Install the Windows Driver
The ezSniffer software accesses the Ez-USB board via 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 your Ez-USB board.
- run the Zadig executable (no installation required).
- choose Cypress FX2LP from the device list. If Cypress FX2LP 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, ezfind.exe will check that the driver has been installed and the ezSniffer can be found. ezfind.exe is 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 ezsniff-1.08-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 ezSniffer can access USB without special priviledges:
cp ezsniff.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 ezfind, 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||55mm x 35mm (2.1" x 1.4")|
|Power Consumption||0.15W. Total power consumption depends on the power used by the Ez-USB board.|
|Power Source||Via the USB cable to the Ez-USB board. No external power supply|
Please note that the ezSniffer 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.