Skip to content

00 Quick

Geo edited this page Mar 24, 2026 · 47 revisions

Quick Start

ESP32 Bus Pirate Logo and Supported Protocols

What is ESP32 Bus Pirate?

ESP32 Bus Pirate is a multi-protocol exploration and debugging tool for hardware hacking.

It allows you to:

  • Explore electronic buses (I2C, SPI, UART, 1-Wire, JTAG, SWD, CAN, etc.)
  • Explore radio protocols (RFID, RF, Bluetooth, WiFi)
  • Reverse engineer unknown devices
  • Send raw transactions
  • Read / write memories (EEPROM, Flash, Smartcards)
  • Automate tests and scripts

Think of it as a modern, scriptable toolbox running on ESP32, with a large range of supported protocols.


What You Need

To get started with ESP32 Bus Pirate, you only need a few basic components.

ESP32S3 Board Dupont cables Grove cable
  • An ESP32-S3 board

    • Recommended: at least 8MB Flash, no PSRAM required
  • Wiring:

    • Dupont jumper wires (male/female)
    • Or Grove → Dupont / Qwiic → Dupont cables
    • Test hooks / grabbers

Optional accessories

Additional protocol support can be enabled by connecting external modules:

CC1101 radio module Original Bus Pirate SPI adapters
  • You can also reuse accessories from the original Bus Pirate ecosystem (probes, cables, adapters, etc.)

Most core features (I2C, SPI, UART, 1-Wire, etc.) work with just the ESP32 and wires. Advanced features require external modules. Always check voltage levels when connecting hardware.


Basic Concept

Everything is done using commands. Don’t worry though, most commands are intentionally kept very simple.

In many cases, you only need to type a single word with no arguments or flags at all, such as read, receive, or scan. Some commands do accept arguments, but they follow straightforward and intuitive formats.

General form:

command [arg1] [arg2] ...

Examples:

scan
monitor 0x13
wizard 1
sniff
logic 1
jam
read 0x13 6
  • Arguments are space-separated
  • Arguments in < > are required
  • Arguments in [ ] are optionnal
  • Numbers can be decimal or hex:
255
0xFF

You can chain multiple commands, repeat commands, and insert delays between actions.
This makes it possible to build simple scripts directly from the command line interface.

Exemples:

m dio || read 1 || set 1 LOW || delayms 1 || set 1 HIGH
repeat 5 scan
repeat 10 set 1 LOW || delayus 100 || set 1 HIGH || delayus 100

Switching Protocol Modes

You usually start by selecting a protocol:

Type m, mode or m uart, m i2c.

m         (prompt for mode)
mode      (prompt for mode)
mode uart (direct mode access)
m dio     (direct mode access)

Example 1 – Some I2C operations

490790516-229dc03c-cb8a-40f2-935c-096d59462378

Example 2 – Some UART operations

466254812-6c6752c8-dc4e-47a8-b10c-7e178987f9b1


Bytecode Instructions

ESP32 Bus Pirate also supports instruction-based execution(similar to bytecode). See Instruction Syntax.

demo17


Python Scripting

You can control ESP32 Bus Pirate from Python over Serial. See Python Automation

ezgif-4508b9f0394d2712


ESP32 Bus Pirate is designed to be explored. Type commands, experiment, break things, learn.

Clone this wiki locally