The bus pirate is a bit like a swiss pocket knife: It bundles many specialized functions in a tiny package.
My first contact with the bus pirate with at the JTAG workshop at Hackaday Munich. We connected the bus pirate to an old Linksys network router and started hooked into its UART interface. The topic looked a bit similar to this hack of a WRT54G, but all was based on the bus pirate. In principle, you can use the Open On-Chip debugger as described here.
The bus pirate is a kind of “bridge”. It translates signals from one signal to another, e.g. from UART to SPI. As such you can use the bus pirate as a programmer for Arduino. And sometimes, the bus pirate is easier to setup than tools that ship from vendors.
Other examples on the web show the bus pirate as USB-ttl converter. Or, as FTDI cable. This can be useful if you want to program some Arduino, such as Pro mini, or clone via UART. At this moment, I did not get it working but in principle it should be possible. There is a nice schematic on how the bus pirate MOSI/MISO map to a UART device.
Last, the bus pirate supports SPI. This makes it an universal programmer since many devices support programming via SPI (like) commands.
The bus pirate provides 10 pins in form of an IDC conector. As you’ll need to work with different protocols, it maybe be helpful to buy crocodile cables or cables like this
Often it is useful to have a quick pinout of the bus pirate connectors.
A nice overview on the bus pirate options is here. The options I used most were “M” to set a certain protocol, and “W” to turn on/off power.