icE40 based full-speed USB tracer
Go to file
Sylvain Munaut c9516d1ebb gateware: Pin definition for proto and final board
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2022-09-05 11:14:39 +02:00
firmware firmware/main: Add some basic control requests to start/stop capture 2022-08-14 17:42:21 +02:00
gateware gateware: Pin definition for proto and final board 2022-09-05 11:14:39 +02:00
hardware/eagle hardware: ERC+DRC 2022-08-29 11:53:05 +02:00
software packet_parser.py: Fix syntax errors when introducing USBPacketParser 2022-08-29 10:01:41 +02:00
.gitmodules gateware: Initial import of required submodules 2022-08-08 23:22:08 +02:00
README.md README.md: Put actual content in it 2022-08-25 12:00:05 +02:00

README.md

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!

Hardware

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.

Gateware

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)

Firmware

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.