The Bus Pirate is an open source hacker multi-tool that talks to electronic stuff. It's got a bunch of features an intrepid hacker might need to prototype their next project. This manual is an effort to link all available Bus Pirate information in one place.

Linux, OS X

Download

Unfortunately it seems that Dangerous Prototypes have abandoned the Bus Pirate firmware development (and the Bus Pirate v4 also), despite that their official firmware has never reached a truly stable state: the quantity of bug report threads at forums, especially regarding flashrom, is a direct proof of that.

In attempt to change this desperate situation around BP v4, kallisti5 has started a Bus Pirate community firmware project: to include the important fixes and clean-ups, committed by several prominent community members, that Dangerous Prototypes still did not merge to official version of firmware (as of 19.09.2016) - and to continue its' future development.

Although the primary target of community is to significantly improve the user experience for Bus Pirate v4, the Bus Pirate v3 support will be maintained at all costs (despite the difficulties while compiling with the recent MPLAB XC16 compilers)

bootloader - different optimization bootloader builds
firmware - different optimization firmware builds
combined - I install bootloader and firmware of the same optimization, and then instantly make a complete backup of PIC24FJ256GB106 internal program memory (it is 256 KB, but because of hex file structure these 256 KB turn into 963,2 KB)

3) SHA1_checksums.txt inside each directory

About the optimization levels:

- 0 - Do not optimize. The compiler’s goal is to reduce the cost of compilation and to make debugging produce the expected results
- 1 - Optimize. Optimizing compilation takes somewhat longer, and a lot more host memory for a large function. The compiler tries to reduce code size and execution time
- 2 - Optimize even more. The compiler performs nearly all supported optimizations that do not involve a space-speed trade-off
- s - Optimize yet more favoring size (superset of O2)
- 3 - Optimize yet more favoring speed (superset of O2)

Even on level 3 my BPv4 passes a self test successfully, no errors. So you could try a stronger optimization first, and then - if it is causing you some issues - you tell us about them on Github and meanwhile could use a lighter optimization version (such as level 0 or 1)

but please note that you will need to compile it by yourself (cannot find a compiled hex file for it)

Reference

User terminal mode

The Bus Pirate is accessed from a command line in a serial terminal. The Bus Pirate always starts in high impedance mode (Hi-Z), a safe mode with all outputs disabled. It's intended to protect any connected devices from conditions beyond their specifications. From there, a bus mode can be selected to use the Bus Pirate with a specific protocol.

Various probe cable pinouts

Application guides

Several applications can use the Bus Pirate as a programmer or debugger.

JTAG

The Bus Pirate is a slow serial port device intended for human-speed interaction. It was NEVER intended to do JTAG duties. Because it's open source, cheap, and versatile, the community hacked various JTAG features into it. They're great in a pinch, but no substitute for the real thing!

The Bus Pirate supports JTAG in three ways: with the OpenOCD debug application, as an XSVF player, and through a user-mode terminal interface.

JTAG and OpenOCD

The Bus Pirate is supported as a JTAG programmer/debugger by OpenOCD. If your target is supported by OpenOCD it may work. Slowly :) You will need to use a Bus Pirate firmware version which supports the binary JTAG protocol — not all do.

Note that the above is about binary JTAG / OpenOCD support. JTAG terminal mode is not enabled in any of the above firmwares (not even 5.9-extras, even though it was advertised to be enabled in there at some point).

FPGA and CPLD programming

JTAG terminal mode

The -extras firmware has a the old user terminal JTAG mode from the Hack a Day demo. This was removed from the main firmware because nobody used it - it isn't particularly useful to enter JTAG commands manually. (OpenOCD uses the binary JTAG mode, which is different from the user terminal JTAG mode.)

AVR programming

The Bus Pirate can be used to program Atmel AVR microcontrollers. AVRDUDE version 5.8 and later support the Bus Pirate as a programmer directly. AVRDude is the most common software for programming AVR microcontrollers. Many packages such as WinAVR and the Arduino IDE bundle a version of AVRDude.

There is also an alternate firmware that can be installed on to Bus Pirate to make it an STK500 v2 AVR programmer clone.

Oscilloscope (very low speed)

Utilities

Chip demonstrations

Here's a comprehensive list of Bus Pirate chip demonstrations. It includes Ian's old demonstrations from Hack a Day, and the most recent demos from Dangerous Prototypes. Tutorials are arranged by Bus Pirate hardware version.

Updating Bus Pirate v4

Updating Bus Pirate v3

With firmware v5.9 we ran out of space in hardware v3.
We can't fit all the new goodness in one firmware.
Firmware release v5.9+ includes a bonus firmware with some extra modes.
Bootload the BPv3-Firmware-vx.x-extras.hex file to try the new modes.
Currently: digital IO mode (DIO), JTAG, PC keyboard, more