SD Drivers
There are three ways to access SD cards from CircuitPython, two of which offer higher performance. The builtin modules sdcardio and sdio are part of the CIrcuitPython firmware and are implemented in C. Not all boards and ports implement both. The CircuitPython library, adafruit_sdcard, should be avoided when performance matters. It is written in pure Python and is slower.
| Driver | Boards | Interface |
|---|---|---|
sdioio |
ESP32-S3, STM32F405, SAMD51 | SDIO (requires extra wiring) |
sdcardio |
RP2350, RP2040, nRF52840, SAMD21 Express, SAMD51 | SPI only |
adafruit_sdcard |
any SPI board | SPI only |
sdioio — For boards with a native SDMMC peripheral. It requires wiring all four data lines. The fastest CircuitPython SD reads are then available. Many boards don't provide sdioio.
sdcardio — Built into CircuitPython firmware; there is nothing to install. On some boards, notably Metro RP2350 and Fruit Jam, the card auto-mounts at boot with no code needed. In most cases, this will be the library to use, but will not be as fast as sdioio in throughput. It is SPI only.
adafruit_sdcard — Written in pure Python, it is slower than sdcardio. Use only when sdcardio isn't available in your board's firmware.
Page last edited June 03, 2026
Text editor powered by tinymce.