icE40 based full-speed USB tracer
Go to file
Martin Schramm e3b762e15b hardware: repair a supply conn problem in brd after SYS#6121
...and add more BOM extd attribs
2022-09-19 17:26:52 +02:00
firmware firmware: Clear overflow flag on flush request 2022-09-14 20:17:37 +02:00
gateware gateware: Pin definition for proto and final board 2022-09-05 11:14:39 +02:00
hardware/eagle hardware: repair a supply conn problem in brd after SYS#6121 2022-09-19 17:26:52 +02:00
software software: Add pyproject.toml to make it installable 2022-09-14 20:18:05 +02:00
.gitmodules gateware: Initial import of required submodules 2022-08-08 23:22:08 +02:00 Mention the git submodules 2022-09-08 11:32:13 +02:00

icE40-usbtrace - full-speed USB tracer

The icE40-usbtrace is an Open Source Hardware + Software passive tracer/sniffer for USB full-speed communication.

It was built as a lower-cost / complexity alternative to OpenVizsla v3.x whose FPGA became virtually impossible (or ridiculously expensive on the grey market) during the 2020/2021 chipocalypse.

The underlying idea is relatively simple: passively tap the CMOS logic-level full-speed USB signals and feed them into a passive/receive-only variant of the no2usb FPGA softcore of Sylvain "tnt" Munaut.

NOTE: This project only supports full-speed USB. Unlike the OpenVizsla, it supports neither low-speed nor high-speed!


The icE40-usbtrace hardware is form-factor compatible to the OpenVizsla v3.2 circuit boards in terms of the USB connector types and locations as well as the PCB outline and mounting holes. It's hence a mechanically compatible drop-in replacement.

See the hardware directory for the hardware design files.


The gateware (FPGA configuration) is based around the OSHW no2 softcores. They are referenced as git submodules from this repository.

See the gateware directory for more details.

The gateware can be upgraded via USB DFU (Device Firmware Upgrade)


There's a picoRISCV softcore inside the ice40 FPGA, whose firmware is provided in the firmware directory.

The firmware can be upgraded via USB DFU (Device Firmware Upgrade)

Host Software

There's a python library and sample application that can run on a USB host talking to the icE40-usbtrace device firmware. You can implement your own call-back function for handling the captured USB packets.

Building / Repository Structure

This git repository makes use of git submodules for the various softcores.

You will need to run git submodule init and git submodule update to have the respective cores and build either firmware or gateware.


All parts of the project are released under Free / Open Source / Hardware licenses:

  • The overall firmware is released under GPL-3.0-or-later (portions under MIT and LGPL-3.0-or-later, check the individual files).
  • The hardware design is released under CC-BY-SA 3.0
  • The gateware is released under CERN-OHL-P-2.0
  • the software is released under LGPL-2.1-or-later