ESP32 Bit Pirate

ESP32-S3 SPI protocol debugging

Probe, read and write SPI flash with ESP32

ESP32 Bit Pirate turns a compatible ESP32-S3 board into a practical SPI flash and module debugging workbench. Use it to read JEDEC IDs, inspect SPI flash chips, back up EEPROMs, test SD cards and debug common wiring problems before writing target firmware.

SPI bus debugging visual with an ESP32 board and memory or module targets

Quick SPI workflow

Start with a read-only probe. Once chip select, clock, MOSI, MISO, power and ground are confirmed, move to the recipe that matches the device or memory operation.

  1. 01

    Connect GND, CS, SCK, MISO and MOSI.

  2. 02

    Confirm the target voltage and keep the setup read-only first.

  3. 03

    Start SPI mode on ESP32 Bit Pirate.

  4. 04

    Probe the chip with a safe command such as a JEDEC ID read when working with SPI flash.

  5. 05

    Continue with a flash dump, EEPROM shell, SD card shell, adapter mode or module-specific recipe.

mode spi
[0x9F r:3]
flash
eeprom
sd

Example CLI flow. See the SPI wiki for exact syntax, pin configuration and firmware-specific options.

SPI workflows covered by ESP32 Bit Pirate

Use this overview to choose the right SPI workflow before opening a detailed recipe.

Probe

SPI JEDEC ID reader

Read the manufacturer and device bytes from a SPI flash chip before trusting any dump, erase or write workflow.

Backup

SPI flash backup

Use the browser SPI Flash Programmer or Flashrom adapter mode to create a clean backup before repair or firmware experiments.

Inspect

SPI flash analysis

Use CLI-side probe, analyze, search and string extraction workflows before deciding what to dump or modify.

EEPROM

SPI EEPROM dump

Work with 25X-style EEPROM chips where supply voltage, address organization and safe backup order matter.

Storage

SPI SD card shell

Open a small SPI SD workflow for file inspection and basic file operations from the bench.

Modules

SPI module wiring

Use SPI as the control bus for CC1101, nRF24L01, W5500, MCP2515 and other module workflows that add extra GPIO roles.

When an ESP32-S3 SPI workbench helps

SPI debugging often starts with a physical question: is the chip selected, powered and answering? A small external tool can separate wiring problems from firmware problems before deeper work.

Firmware backup

Before erasing or writing flash

Read the JEDEC ID, dump the chip twice and compare files before treating a backup as trustworthy.

Board bring-up

Before writing a driver

Use raw SPI reads and simple probes to confirm CS, clock, MOSI, MISO and power before integrating the target into firmware.

Module setup

Before blaming the radio or controller

Many CC1101, nRF24L01, W5500 and MCP2515 failures are pin mapping, chip-select, interrupt, supply or level problems.

SPI hardware reminders

These notes are intentionally short. The detailed command references live in the project documentation and firmware repository.

Chip select

CS must match the selected target. A floating or wrong CS line often looks like all-FF data, all-00 data or no response at all.

MISO and MOSI

MISO is target-to-controller and MOSI is controller-to-target. Swapping them is one of the most common SPI bring-up mistakes.

Voltage levels

ESP32 GPIO is 3.3 V; choose level adaptation before SPI tests on 1.8 V or 5 V hardware.

Shared bus

In-circuit flash access may fail if the original board still powers the chip or another controller drives the same SPI lines.

Common SPI problems

Most SPI failures are wiring, chip-select, power, bus contention or speed problems. Check these before changing target firmware.

All FF response

Check MISO, chip select, clip contact, target power and whether the chip is actually selected.

All 00 response

Look for a held-low line, short, wrong voltage, powered-off target or another device fighting the bus.

Changing JEDEC ID

Improve clip contact, shorten wires, reduce speed and verify the target supply before trusting any dump.

Write fails

Confirm WP# and HOLD# are high when required, verify image size and avoid in-circuit contention during erase/write.

Module not detected

Recheck CS/CSN, extra pins such as CE, GDO0, IRQ or RESET, and confirm the module uses the expected 3.3 V supply.

Detailed SPI recipes

These pages are the task-level SPI workflows. This overview keeps the protocol-level guidance here, while each recipe covers wiring, commands and troubleshooting in detail.

Useful SPI references

This page is a protocol overview. Use the site index for the full web experience, or GitHub for source code, firmware documentation and the SPI command reference.

Flash ESP32 Bit Pirate

Flash a supported ESP32-S3 board before testing SPI mode from the browser.

Open Web Flasher

Logic Analyzer

Capture SPI-like signal activity when command-level results do not explain the bus behavior.

Open Logic Analyzer

AVR Programmer

Use the AVRDUDE-compatible SPI adapter workflow from a browser interface.

Open AVR Programmer

ESP32 Bit Pirate GitHub

Check firmware source, issues and releases that affect SPI support.

Open GitHub repository

SPI debugging FAQ

Short answers for common questions before moving into a detailed workflow.

Can ESP32 Bit Pirate read a SPI flash JEDEC ID?

Yes. ESP32 Bit Pirate can send a JEDEC ID probe to a SPI flash chip and use the response as a first sanity check for chip select, clock, MOSI, MISO and power.

Can ESP32 Bit Pirate back up a SPI flash chip?

Yes. Use the browser SPI Flash Programmer or the Flashrom-compatible adapter workflow after the chip is probed reliably and the wiring is stable.

Is SPI only used for flash memory?

No. SPI is also used by EEPROMs, SD cards and modules such as CC1101, nRF24L01, W5500 and MCP2515, depending on the selected ESP32 Bit Pirate mode.