Board Selection
The Metro RP2350 and Feather ESP32-S3 have shown the best SD card performance during benchmarking. These boards both produced consistent results. There are several contributing features that have come together to make this possible. By comparing these two setups in more detail, it will become clear what was done to achieve these speeds. The RP2350 runs the SPI bus to the SD card at 25 MHz (the SPI-mode ceiling); SDIO allows a higher 40 MHz clock.
| Metro RP2350 | Feather ESP32-S3 | |
|---|---|---|
| SD interface | SPI (sdcardio) |
4-bit SDIO (sdioio) |
| Clock | 25 MHz | 40 MHz |
| SD card | 64 GB Amazon Basics U3/A2 | 64 GB Amazon Basics U3/A2 |
| Filesystem | exFAT | exFAT |
| Breakout required | None (built-in slot) | SD SDIO Breakout PID: 4682 |
| Soldering required | None | headers / breadboard wiring |
| Other devices on bus | None | None |
Metro RP2350
The Metro RP2350 has a built-in SD slot whose four data lines are wired for SDIO. No soldering or add-ons are required. Today CircuitPython drives it in SPI mode using sdcardio. There is no PIO implementation of SDIO (at this time). This setup is pure convenience: simply booting the board with a FAT-formatted SD card is enough to get started. The host OS will see the SD card being passed through over USB. RP2040 and RP2350 boards will be using SPI mode with CircuitPython.
The Feather ESP32-S3 used here sits on a breadboard, with short jumper wires connecting it to the Adafruit microSD SPI or SDIO breakout board. This setup is running SDIO with the sdioio library. The SDIO clock frequency was run at 40 MHz during testing.
| Feather ESP32-S3 | Breakout #4682 | SDIO Signal | Wire Color |
|---|---|---|---|
| SCK | CLK | Clock | 🟡 Yellow |
| MOSI | CMD | Command | 🔵 Blue |
| MISO | D0 | Data 0 | 🟢 Green |
| D9 | D1 | Data 1 | 🟠 Orange |
| D10 | DAT2 | Data 2 | 🟣 Purple |
| D11 | D3 | Data 3 | 🟤 Brown |
| 3V | 3V | Power | 🔴 Red |
| GND | GND | Ground | ⚫ Black |
Results
The following results are based on the benchmarking style Jeff Epler originally published in his excellent guide, Adafruit microSD SPI or SDIO Card Breakout Board.
| Bus | Bulk read (MB/s) | Bulk write (MB/s) | Logging (lines/sec) |
|---|---|---|---|
| RP2350 SPI @25MHz | 2.3 | 2.3 | 2581 |
| ESP32-S3 SDIO @40MHz | 7.1 | 4.5 | 1489 |
| SDIO vs SPI | 3.1× (better) | 2.0× (better) | 0.6× (worse) |
- Bulk reads and writes with the ESP32-S3 can be 2-3 times faster than the RP2350.
- Choose the ESP32-S3 for media such as bitmaps, WAV, and MP3 files.
- For frequent tiny writes, the RP2350 is the clear choice.
Page last edited June 03, 2026
Text editor powered by tinymce.