bus-pirate

Drive a Bus Pirate 5/6 to probe, sniff, and script I2C, SPI, UART, and 1-Wire buses.

2|Updated May 13, 2026
One-click install
npx skills add https://github.com/curtisgalloway/public-skills --skill bus-pirate-curtisgalloway
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: bus-pirate
Source: https://github.com/curtisgalloway/public-skills/tree/main/plugins/hardware-lab/skills/bus-pirate
Command: npx skills add https://github.com/curtisgalloway/public-skills --skill bus-pirate-curtisgalloway

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Working with unknown chips and serial buses normally requires writing custom firmware just to ask "is this chip alive and what does it say." This Skill provides the complete command syntax, mode configuration, and automation patterns for the Bus Pirate 5/5XL/6, so an agent can immediately probe, sniff, dump, and bit-bang I2C, SPI, UART, 1-Wire, 2-wire, 3-wire, and JTAG/SWD buses from the terminal or a host script. ## Core Features & Use Cases - Interactive bus transactions: Full bracket-expression syntax ([0xa0 0x00 [0xa1 r:8]), mode selection, programmable power supply, pull-ups, per-pin voltage measurement, and the built-in logic analyzer. - Host automation: BPIO2 binary protocol over the second USB serial port with Python (pybpio) and Rust clients, on-device script/macro files, and guidance for screen-scraping the ANSI terminal when BPIO2 does not cover a command. - Chip-level tooling: EEPROM and NOR flash dump/write/verify, DDR4/DDR5 SPD editing, SLE4442 smart cards, I2C sniffing, and blueTag JTAG/SWD pin finding. - Use Case: You find an unmarked I2C EEPROM on a board. Attach the Bus Pirate, run m i2c, W 3.3 100, P, then scan to find the address and eeprom dump -d 24c256 -f dump.bin to extract its contents. ## Quick Start Ask the agent to connect to the Bus Pirate terminal port, enable I2C mode with 3.3 V power and pull-ups, and scan the bus for devices.

Frequently Asked Questions about bus-pirate

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I scan for I2C devices with a Bus Pirate?▼

Enter I2C mode with `m i2c`, enable power with `W 3.3 100`, turn on pull-ups with `P`, then run `scan`. Pull-ups are mandatory for I2C; without them the scan reports a device at every address.

How do I read an I2C EEPROM using Bus Pirate terminal commands?▼

Use 8-bit addresses in bus syntax: `[0xa0 0x00 [0xa1 r:8]` writes the register address, issues a repeated START, and reads 8 bytes. For full dumps, the `eeprom dump -d <device> -f file` command handles 24x-series parts directly.

Which Bus Pirate serial port is the terminal versus the binary port?▼

Bus Pirate 5/6 enumerates two CDC ports; the lower-numbered one is the VT100 terminal and the higher one is the BPIO2/SUMP binary port. Open a port and press enter: the terminal answers with a prompt like `HiZ>`, the binary port stays silent.

Does this Bus Pirate documentation apply to the classic v3.x hardware?▼

No. Bus Pirate v3.x runs entirely different firmware with the old BBIO1 binary protocol and appears as a single FTDI serial port. This material covers only the RP2040/RP2350-based Bus Pirate 5, 5XL, and 6.

Why does my Bus Pirate script see garbage characters from the terminal?▼

The terminal is a full-screen ANSI UI whose live status bar interleaves escape sequences with output. Prefer the BPIO2 binary port, answer `n` to the VT100 prompt, or disable color and the status bar in bpconfig.bp before parsing.

Can I automate Bus Pirate from Python instead of the terminal?▼

Yes. The BPIO2 FlatBuffers protocol runs on the second USB serial port, with an official Python library (pybpio) offering I2C, SPI, UART, 1-Wire, and LED mode classes. Select the BPIO2 binmode by name first, then connect with BPIOClient.