Documentation

The DG-UART, documented.

Everything you need to put one on your bench and get it working. No hunting through PDFs. No dead driver links.

Quick start

From box to blinking LED in under a minute.

  1. Unbox your DG-UART. Inside you'll find the adapter, a USB-C cable, a braided jumper cable, and a pinout reference PCB — because a bit of card wouldn't feel right.
  2. Set the voltage to match your target — 1.8V, 3.3V, or 5V. Slide switch on the Board variant, rotary switch on the Cased.
  3. Wire up GND, TX, and RX to your target. The adapter's TX connects to the target's RX, and the adapter's RX connects to the target's TX.
  4. Plug the USB-C cable into your computer. The device should enumerate within a second. If it doesn't, jump to the Drivers section below.
  5. Open your terminal of choice (minicom, screen, PuTTY, CoolTerm). Pick the new serial port. Default is 115200 baud, 8N1.

Important: the DG-UART does not power your target. Give your target board its own supply before connecting.

Step 1

Confirm your computer sees the adapter.

Before you wire anything to your target, check the OS has enumerated the device and assigned a port. Pick your platform:

Terminal · zsh / bash

# Plug the DG-UART in, then list USB-serial devices:
ls -1 /dev/cu.usbserial-* 2>/dev/null

# More detail — confirm it's the FTDI chip:
ioreg -p IOUSB -l -w 0 | grep -A 5 'FT232\|FTDI'

# You should see a line like:
# /dev/cu.usbserial-AB0XYZ12

If ls returns nothing, the OS hasn't seen the device. Try a different USB-C cable — charge-only cables will not enumerate.

Step 2

Open a serial session at 115200 8N1.

Once the OS sees the adapter, you need a terminal program to actually talk to your target. Pick one — they're all fine.

Terminal — pick one tool

# screen ships with macOS — quick and dirty:
screen /dev/cu.usbserial-XXXX 115200
# Exit:  Ctrl-A  then  K  then  Y

# picocom is nicer (install once with Homebrew):
brew install picocom
picocom -b 115200 /dev/cu.usbserial-XXXX
# Exit:  Ctrl-A  then  Ctrl-X

# CoolTerm is a free GUI option if you'd rather not live in a terminal.

Replace cu.usbserial-XXXX with the exact name from Step 1. Tab-completion (cu.usb<Tab>) usually fills it in for you.

Step 3

Flash an ESP32 over UART.

The classic embedded smoke test. esptool.py is Python-based, so the workflow is the same on every OS — only the install path changes. Wire DTR to EN and RTS to IO0 on your ESP32 and esptool will handle the boot-mode dance for you.

esptool via pip

# macOS already ships Python 3 in /usr/bin/python3.
# Install esptool into your user site-packages:
python3 -m pip install --user esptool

# Wire up: GND-GND, TX-RX, RX-TX, plus DTR-EN and RTS-IO0 for auto-reset.
# Erase the chip first to start clean:
esptool.py --port /dev/cu.usbserial-XXXX erase_flash

# Flash an application binary at the standard 0x10000 offset:
esptool.py --chip esp32 \
  --port /dev/cu.usbserial-XXXX \
  --baud 460800 \
  write_flash 0x10000 firmware.bin

If esptool.py isn't found, add Python's user-bin to your $PATH — the installer prints the directory at the end of pip install.

Pin reference

Pinout

Function Notes
TX Transmit (adapter → target) Outputs at the selected voltage
RX Receive (target → adapter) 5V-tolerant regardless of switch position
GND Ground Shared reference with your target
DTR Data Terminal Ready Commonly repurposed as reset when flashing ESP32 / RP2040
RTS Request to Send Flow control output, or boot-mode select on some MCUs
CTS Clear to Send Flow control input from the target
DSR Data Set Ready Legacy modem signal — rarely used in embedded work
DCD Data Carrier Detect Legacy modem signal — rarely used
RI Ring Indicator Legacy modem signal — rarely used
Drivers

Standard FTDI. No DG-specific software.

The DG-UART uses the stock FTDI VCP drivers — the same signed, maintained driver package that's been around for over a decade. No custom installer, no DG-branded software, nothing to sign up for.

Windows 10 / 11: drivers install automatically over Windows Update within a minute of plugging the adapter in. If they don't, grab the latest VCP installer from FTDI directly and run it manually. A reboot is occasionally needed.

macOS 10.15+: native support is built in. The adapter appears as /dev/cu.usbserial-XXXX as soon as you plug it in. No driver install required.

Linux: the ftdi_sio kernel module is included in every mainstream distribution. The adapter appears as /dev/ttyUSB0 (or similar) immediately. If your user isn't in the dialout group, add them before you try to open the port.

Download FTDI VCP drivers →

Troubleshooting

When things don't go to plan.

  • Device doesn't appear after plugging in

    Check the USB-C cable. If it's a charge-only cable, the host can't see data. Swap for the cable in the box — or any USB-C data cable you trust.

  • Garbled text in the terminal

    Almost always a baud-rate mismatch or the wrong voltage. Confirm your target's baud, and that the switch matches the target's logic level.

  • Nothing received from the target

    Check TX/RX aren't swapped — the adapter's TX goes to the target's RX, and vice versa. Also confirm you share a common GND.

  • Windows reports 'driver not signed'

    You've picked up an unofficial driver somewhere. Uninstall it, then let Windows Update install the signed FTDI VCP driver — or grab the installer directly from ftdichip.com.

  • Port opens but no LEDs flash

    The TX/RX LEDs only blink when traffic is active. Send a character from your terminal. If the TX LED stays dark, confirm the port and baud settings.

  • Target board isn't booting

    The DG-UART does not supply power to the target. Your board needs its own supply. Trying to parasitically power a target from the adapter will not work and may damage both devices.

Still stuck?

Email us. Replies come from the person who designed it.

hello@differentgravy.uk — no ticket system, no bot, no autoresponder. A real engineer, usually within 48 hours.

If you think you've found a bug, tell us what OS you're on and which variant you have. A screenshot of your terminal helps.

Back to the DG-UART