Bus Pirate
From DP
- Now available in Adafruit Industries (USA) Open Source Control Systems (USA) eHaJo (Germany) Watterott Electronic (Germany)
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.
Contents[hide] |
Introduction
Project Summary | |
---|---|
Name: | Bus Pirate |
Buy it: | Get one for $30 at Seeed Studio |
Price: | $30 |
Status: | Mature |
Manufacturing: | Shipping |
Forum: | Bus Pirate Forum |
- Features overview (original)
- Hardware overview
- Bus Pirate Hardware SelfTest
- Bus Pirate 101 tutorial (original)
- Bus Pirate 102 tutorial (original)
- Bus Pirate forum
- Latest firmware download
- Beta firmware download
Linux, Mac
- Connecting with Mac OS X
- Bus Pirate and Mac OSX tutorial
- Using the Bus Pirate with Ubuntu
- Using the Bus Pirate with Arch Linux
- Create /dev/bus_pirate on Linux
- Using the Bus Pirate with Fedora 14
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.
- Bus Pirate user interface
- Bus Pirate menu options guide
- HEX/DEC/BIN number entry and output display
- Bus modes (main firmware): 1-Wire, UART, I2C, SPI, raw 2-wire, raw 3-wire, HD44780 LCDs, MIDI
- Bus modes (bonus firmware, v5.9+): PC keyboard, DIO, JTAG
- BASIC script engine reference
- Bus Pirate self-test guide
Binary scripting mode
The Bus Pirate has a binary access mode that can be used with software or scripts. There's example scripts in C, Python, Perl, and more in the SVN repository.
Binmode protocol pages: bitbang, SPI, I2C, UART, 1-Wire, and raw-wire.
A guide to getting started with the pyBusPirateLite Python library: Bus Pirate Scripting in Python
I/O header and hardware
- Bus Pirate I/O Pin Descriptions
- Practical guide to Bus Pirate pull-up resistors
- Mixed voltage interfacing with the Bus Pirate
- LCD library and adapter
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 :)
- Gonemad's Bus Pirate/OpenOCD walk through
- OpenOCD JTAG debugger
- Tutorial by the developer of OpenOCD support
- Bus Pirate OpenOCD walk-through
- Bus Pirate JTAG with OpenOCD
- JTAG posts
- Bus Pirate & OpenOCD forum
- Bus Pirate JTAG connections for OpenOCD
- Debricking Dockstar
FPGA and CPLD programming
As a stand-alone XSVF player to program CPLDs/FPGAs. This requires a simple firmware swap.
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.
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.
- See Bus Pirate AVR Programming - Instructions and resources for AVR programming with the Bus Pirate.
flashrom
A flash chip programmer for Linux and Windows.
Logic Analyzer with SUMP
The Bus Pirate can act as a low speed logic analyzer using a SUMP-compatible protocol. Jawi's latest OLS client includes extended support for the Bus Pirate.
Oscilloscope (very low speed)
- Python Oscilloscope script
- Python Oscilloscope script info
- miniscope v3
- miniscope info
- PirateScope in GIT (Python, Discussion)
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.
Bus Pirate v2&v3
- MMA7455L 3-axis accelerometer (SPI, IC2)
- 3EEPROM explorer board (original), DS2431 (1wire), 24AA (I2C), 25AA (SPI)
- Wii Nunchuck quick guide (original) (I2C)
- iButton serial number (original) (1-Wire)
- 2AA02E48 EEPROM with MAC address (original) (I2C)
- HD44780 character LCD adapter (original) (LCD)
- DS1307 real time clock (original) (I2C)
- NA204SD02 Futaba VFD character display (raw2wire)
- SLE4442 (FedEx Kinko's) smart card update (original) (raw2wire)
- 25AA/25LC serial EEPROM (SPI)
- ShiftBrite with A6281 3 channel LED driver (SPI)
- PCF8563 real time clock calendar (I2C)
- Sure LED matrix (original) (raw3wire)
- AT45DB041D 4Mbit flash memory (original) (SPI)
- HMC6352 digital compass (original) (I2C)
- Parallax RFID reader (original) (UART)
- KS0074 serial LCD (original) (SPI)
- SURE DE-DP014 character matrix (raw3wire)
- 23K256 32K serial RAM (SPI)
- 74F138 binary decoder
- DS28EA00 temperature sensor (1-Wire)
- MCP9800 temperature sensor (I2C)
- DS18S20 temperature sensor (1-Wire) (Original)
Bus Pirate v1a
- LTC2640 digital to analog converter (SPI, raw3wire)
- LTC2631A digital to analog converter (I2C)
- PC keyboard (PC Keyboard)
- DS1807 audio volume potentiometer (I2C)
- SparkFun 4×4 RGB button pad controller (raw3wire)
- DS1801 audio volume potentiometer (SPI)
- MCP6S26 programmable gain amplifier (raw3wire)
Bus Pirate v0a
- 24LC1024 EEPROM (I2C)
- EM406 GPS (UART)
- SLE4442 (FedEx Kinko’s) smart card (raw2 wire)
- DS1077 133MHz programmable oscillator (I2C)
- XC9572XL CPLD (JTAG)
- DS1822 temperature sensor (1-Wire)
- PCF8574 IO Expander (I2C)
- DS2431 1K EEPROM (1-Wire)
- SHT1x/7x humidity and temperature sensor (raw2wire)
- TC74 temperature sensor (I2C)
User submitted hacks and demos
- Wii Motion Plus controller (I2C)
- Nokia 3310 LCD (binary SPI)
- Hack the MD80 firmware to remove the date display (SPI sniffer)
- Program STM32 (raw2wire)
- I2C magnetic compass sensor (I2C)
- TK-1315LA GPS (serial UART)
- SparkFun LED Matrix
- MAX147 ADC (SPI)
- MMA7456L three-axis accelerometer (I2C/SPI)
- FSA03 GPS (serial UART)
- Wavecom GSM modem (serial UART bridge)
- Sure 8×32 LED matrix marquee
- Zeno zit zapper tip reset (I2C)
- 1-Wire iButton (1-Wire)
- Bus Pirate high voltage power supply (PWM)
- Sniffing between smartcard & terminal (serial UART at arbitrary baudrate)
- Bus Pirate BlinkM demo
- AK8975 magnetometer (I2C)
- TMP102 temperature sensor (I2C)
- MMA8453Q accelerometer (I2C)
- Thinkpad T30 password reset (I2C)
- BPv4 HD66717 I2C demo (I2C)
Firmware upgrades
With firmware v5.9 we ran out of space. 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
Updating with Bootloader v4
Instructions for changing the firmware in a Bus Pirate over USB.
These are for Bus Pirates with bootloader version 4+. See the next section for more bootloader information.
- Pirate-Loader console upgrade application (Linux, Mac, Windows) (original)
- ds30 Loader GUI (original) (Mono/.NET)
Follow these instructions to load new firmware, older firmware (v4+ only), the extras firmware, or the XSVF player firmware.
Bootloader upgrades
The bootloader is a small program in the Bus Pirate that installs the firmware upgrade. The bootloader itself can also be upgraded with a small amount of effort. This is not normally required.
Firmware version 4 and higher requires bootloader version 4 or higher. The new v4 bootloader makes space for more features.
Find your bootloader version:
- Verify version with command i in the terminal (type i then press enter)
- Hardware v3b and v3.5 shipped with a v4+ bootloader, don't do anything!
- Hardware v3a and v2go shipped with the v2 bootloader, please see upgrade instructions below
Still not sure?
- Firmware v4.0 or higher means you have a v4+ bootloader, don't do anything!
- Firmware v3.10 or less means you have a v2 bootloader, please see upgrade instructions below
How to upgrade the bootloader over USB:
- Upgrade an old v2 bootloader to v4 (original)
- v2 to v4 upgrade guide in English and Spanish
- Upgrade any v4+ bootloader to v4.3 (original)
Bootloader v4.3 is the version of the v4.3/v4.4 bootloader installed with an upgrader. v4.4 is programmed with a PIC programmer. They are the same.
Program with a programmer
How to put the bootloader in a new chip or replace a damaged bootloader.
Hardware documentation
Bus Pirate v3.x
A minor update to v3 available from June 2011. All changes are cosmetic, v3.5 works exactly the same a v3a/b.
v3a and v3b were available from October 2009 to June 2011. A similar version is sold by SparkFun.
- v3a and v3b schematic and partlist
- v3a hardware overview (original)
- v3b hardware overview (original)
v3.x is based on the original v2go circuit using a PIC24FJ64GA002 microcontroller.
Bus Pirate v4.x
v4 is currently in development. The first batch is available, but the hardware is still experimental.
- Bus Pirate v4 design overview
- Bus Pirate v4 firmware updates
- See it come to life, v4 development history and prototypes
Legacy hardware
Bus Pirate v2go was the first USB Bus Pirate. Around 1000 were sold as a fundraiser for Hack a Day. The PCB is black.
v1a and v0a were serial port Bus Pirate prototypes. Fundamental Logic briefly sold a through-hole kit for v1a.
Mods
- User created cases
- 2K ohm MOSI pull-up resistor mod
- Modify the FTDI EEPROM, change serial name on OSX
- Create /dev/bus_pirate on Linux
Known Defects
- Bus Pirate v3 preorder 2 & 3 dead MODE LED fix
- Bus Pirate v2go preorder 2 shipped with v2 bootloader only
Manufacturing resources
We maintain a combined bootloader/firmware flash image to assist in manufacturing.
- bpv3-BL44FW510-DUMP.hex is bootloader v4.4 with firmware v5.10
- Latest version in SVN
There is also an automated self-test utility, but it is generally slower than doing it manually
Cases and accessories
- LCD adapter v2 ($9)
- Probe cable ($4.99)
- Synthetos laser-cut acrylic case ($14.99)
- How-to: Assemble the Synthetos case
- User created cases
Source
- Google Code page and SVN repository
- Compile the Bus Pirate firmware (original)
- Spanish, Italian translations
License
- PCB art: CC-0
- Bootloader: GPL (from ds30 Loader project)
- Firmware: CC-0
- The Bus Pirate pinout, menu, and command tables are released into the public domain.