UPDATE: \o/ We made the target! Thank you!
But your pledges are still appreciated and needed.
Pledging more will allow us to buy larger quantities of components that will give us more buying power and access further price breaks with the distributors and vendors. Pledge to secure your badge, PCB, kit or finished OpenVizsla unit!
OpenVizsla is a project to design a device that will allow the capture and inspection of USB traffic that will help with the reverse engineering and debugging of proprietary USB devices, and will also be an invaluable tool for developers working with USB and especially those who are using USB in embedded designs. The project is created by bushing and pytey of Team Twiizers and iPhone DevTeam fame.
The name OpenVizsla comes from the Magyar (Hungarian) Vizsla, a multipurpose breed of dog that is skilled in seeking, tracking, pointing, and retrieving, if you are wondering how to pronounce the word "Vizsla" you can hear a clip here and here.
USB has a standard, published interface that is properly described (at great length) but the actual protocols for connected devices are not common and are often proprietary to the individual vendors or manufacturers. USB succeeded at eliminating most strange cables, but requires custom drivers for many types of hardware.
Often, these USB protocols are intentionally obfuscated to make them confusing and complex in order to attempt to restrict support to the original manufacturer of the device. In this case the USB packets themselves hold the key to the information that is necessary to write independent third party drivers.
Protocol analysis and reverse engineering is needed to create such drivers and these tasks rely on the real-time capture of USB traffic. Software-based analyzers are available, but only useful in certain limited applications.
Hardware based protocol analyzers are expensive and are usually out of the reach of most independent developers, hobbyists and hackers. The most popular products cost $1400+ and, with few exceptions, use proprietary Windows-only client software, proprietary protocols, and proprietary data formats that are hard to export for use with other software.
OpenVizsla will be a completely open design of a device that can capture USB 1.1/2.0 (high-speed, full-speed and low-speed) traffic passively between a target USB device and the connected host (usually a PC, but potentially anything that has a USB host port -- think Xbox 360 and PS3). It will be controlled by any computer using open-source client software or potentially in standalone mode (where captured traffic is stored onto an on-board SD card).
As is proper for any open and hackable design, unused I/Os on the FPGA will be exposed (via 0.1" header) for use as a primitive logic analyzer. We hope to eventually support additional sniffing interfaces (SPI, I2C RS232, SD card etc) that connect to a high-speed Mictor connector that can act as 'man-in-the-middle' and extend the device capability limitlessly.
The OpenVizsla device is built around a multi-layer PCB with around 180 surface-mount components that allow the target USB packets to be captured, buffered and delivered to the PC (or stored on SD card in standalone mode).
An XMOS event-driven processor will handle the huge amount of USB data (these little chips are fast!) and it will handle the overall communications with the host (which will be a fully published protocol!) and will provide on-board system programming, housekeeping and of course flash the status LEDs! In standalone mode, the XMOS chip will handle data acquisition and SD card storage; this processor is fully reconfigurable and can be modified and reprogrammed to improve the features or adapt to new requirements.
For the high-speed USB signals a Xilinx Spartan3E FPGA (with attached, expandable RAM) will capture, process and buffer the USB traffic from an attached USB transceiver that we use to deserialize the USB signals from the target link.
We have been working on this project in various forms for over two years now, and large parts of the hardware design have already been proven. We think we can produce a device that will be affordable to many, but only if we can buy all of the components in bulk and afford to have some prototypes professionally assembled.
With your investment in our project, we will finalize the design, order the components in bulk (so that automated assembly is viable) and we will have initial prototypes built. The components are very expensive, but they are worth every penny.
Though we have considerable experience in this area, we need your financial and moral support to kickstart our prototype and first production runs. Depending on your level of support, you will get various tokens of our appreciation, and you will get a chance to play a part in the Open Hardware revolution.
We have set up a website, which we will eventually fill in with the fruits of our labor. We will release schematics and design files under a Creative Commons license and we will set up a community to develop the device firmware, FPGA HDL, and client software. We think this will be a great start to creating open, powerful and affordable test equipment.
Funding this project will ultimately help with the ongoing development of open-source device drivers for various peripherals and gadgets. Even if you don't intend to buy an OpenVizsla device, helping fund the development really does help the rest of the community!
Some examples of successful USB protocol analysis -
- Independent drivers for the Microsoft Kinect device
- Linux support for your favorite USB modem or tethered mobile phone
- iPhone sync support for Linux.
- Linux and Mac support for a Windows only Logic Analyzer
- Development of an open-source "PS Jailbreak" device
- (30 days)