ESP32 Bit Pirate home
  • USB
  • UART
  • Beginner
  • 5 min
  • Serial CLI + host terminal

Recipe · Beginner · USB, UART

How to use ESP32 as a USB-UART dongle

Use the USB adapter workflow when you want the board to behave like a simple USB-to-serial dongle instead of staying inside the interactive multi-protocol shell.

USB adapter modes with browser tools.
Adapter mode gives desktop tools a normal USB CDC serial port while Bit Pirate handles the UART pins.

Wiring View

Target UART ESP32 adapter Target TXAdapter RX GPIOTarget RXAdapter TX GPIOTarget GNDESP32 GND
Generated from the wiring summary: Target UART to ESP32 adapter.
Step 1

Commands

Open the normal firmware CLI, enter the USB adapter menu, select the USB-UART bridge, then configure the GPIOs used as adapter RX and TX. The device reboots into a dedicated CDC serial adapter mode.

Result

What it means

The ESP32 is no longer acting like the normal Bit Pirate shell. It is now a dedicated USB-UART adapter for host tools, scripts and serial terminals.

Troubleshooting

  • RX and TX must be crossed: adapter RX goes to target TX, adapter TX goes to target RX.
  • The target and the ESP32 adapter must share ground.
  • Make sure the target UART voltage is safe for the ESP32 GPIO level before connecting TX.
  • Reset the board when you want to leave adapter mode and return to the normal firmware CLI.

Next steps

  • Use picocom, screen or pyserial to read boot logs or access a console.
  • Use the normal UART bridge recipe when you want to stay inside the interactive Bit Pirate shell.
  • Use dedicated USB adapter mode for host tools such as flashrom, avrdude, PulseView or OpenOCD.

USB-UART adapter FAQ

When should I use USB-UART adapter mode instead of UART bridge mode?

Use USB-UART adapter mode when a desktop program expects a normal serial port. Use UART bridge mode when you want to keep working from the Bit Pirate CLI and quickly switch back to other firmware commands.

Can this mode flash ESP32 or other targets?

It can be used with flashing tools only when the target is already in the right bootloader state or when boot/reset are handled externally. Treat it as a serial adapter first, not as a guaranteed auto-flasher.

Which direction do RX and TX use?

Adapter RX is an ESP32 input and connects to the target TX pin. Adapter TX is an ESP32 output and connects to the target RX pin. GND must be shared.

Go deeper