Building and Hacking USB with FPGAs
Where
Talks
ShmooCon 2025
Duration
47 min
Walks through open-source FPGA tools for building USB devices, analyzing USB traffic, and emulating hardware.
Summary
The talk revisits the USB hardware work of Great Scott Gadgets, tracing how the earlier Daisho project, a super speed USB board, led to the smaller Cynthion analyzer. The speaker explains that Cynthion pairs an FPGA with open-source gateware, and that the Luna library, written in Amaranth HDL, provides the USB logic. Python scripts drive the build flow, so a new bitstream can be generated and loaded onto the board in seconds.
A large part of the talk covers Packetry, a Rust-based USB analyzer. Using live demos, the speaker compares it with Wireshark while capturing from a HackRF. The comparison shows that Linux usbmon exposes host controller requests rather than the traffic on the wire, and that Wireshark slows badly once a capture reaches millions of packets. An upcoming interleaved hierarchical view is previewed as a way to keep both protocol hierarchy and chronological order.
The later sections cover Facedancer, which lets a host Python script act as a USB device for a target computer, so the target sees a real device. A live example reverse engineers the board ID and version requests of a HackRF using the suggest feature. The closing part lists ways to build USB devices in software, gateware, or added hardware, and points listeners to the open-source projects and documentation behind them.
Related talks
Breaking Ground·40 min
Patrick Kiley
Introduces an open-source adapter that connects to serial, JTAG, SPI, I2C and SWD targets at mixed logic levels.
Talks
Explains how firmware cartography with Pyrrha 2.0 maps the structure of a firmware image.
Talks·31 min
Inbar Raz
Shows how an obscure payphone CPU was reverse engineered by writing a Ghidra processor module and patching ROM firmware.


