USB SD Passthrough

Use your device as a USB SD card reader

USB SD Passthrough exposes the device’s SD card to a host PC as a USB mass-storage drive, turning the board into a USB SD card reader. Requires an ESP32-S3 board with a physical SD card.

How It Works

When started, the firmware releases the SD card from its own filesystem, hands the card to the TinyUSB mass-storage class, and enumerates on the host PC as a USB drive. The card stays owned by the USB host until passthrough is stopped, at which point the card is remounted and the serial console restored.

While active:

  • The firmware cannot access the SD card (captures, logging, and other SD writes fail cleanly until passthrough stops).
  • The USB serial console is unavailable — use WiFi or the WebUI terminal to run usbsd off.
  • WiFi and the WebUI stay up.

Usage

Via CLI

usbsd on      # start passthrough (card becomes a USB drive)
usbsd off     # stop passthrough and remount the card
usbsd toggle  # start if stopped, stop if active
usbsd status  # show passthrough state and saved preference

From the Display Menu

Navigate to Settings → Power → USB SD Passthrough and toggle it on. Toggling off stops passthrough and remounts the card.

Saved Preference

The toggle state is remembered across reboots (settings get/set usb_msc), but passthrough never auto-starts at boot — the device always boots with a normal console and mounted SD card.

Requirements and Limitations

  • ESP32-S3 board with an SD card (Cardputer, Cardputer ADV, T-Deck, TEmbed C1101, T-Dongle-S3, and other S3 builds with SD support).
  • Cannot run at the same time as BadUSB, USB Keyboard Mode, or USB host keyboard — stop those first.
  • Boards whose SD card is wired to GPIO19/20 (the native USB pins) are unsupported.
  • The disk identifies itself to the host with test vendor strings from the TinyUSB stack; the USB device itself shows as “Ghost ESP SD”.
  • Always eject the drive on the host PC before running usbsd off.