Finding UART on a PCB
theory
Photo: UART header with TX, RX, GND, VCC labeled on a real IoT router board.
Finding UART on a PCB
UART is everywhere in embedded hardware. Routers, IP cameras, smart meters, PLCs, IoT gateways — nearly all of them have UART exposed somewhere on the board. The challenge is that manufacturers rarely solder a header on it. No pin header means no cable to plug in, no obvious entry point. But the pads are almost always there.
Why UART Pins Are Unpopulated
Soldering a 4-pin header costs money at scale. A million-unit production run does not need debug headers — those are for the engineering team. Manufacturing strips them out before mass production. The traces and through-holes remain because redesigning the PCB costs far more than leaving empty pads. This is good for you: the hardware is there, it just has no connector attached.
Test pads — small bare copper circles on the PCB surface — are the most common form. Through-holes (empty holes sized for a 2.54mm header pin) are also common, especially on older designs. Both are equally useful.
Visual Inspection
Start here before touching a meter. Good eyes and a magnifying glass save time.
What to look for:
- Groups of 3 or 4 through-holes or pads in a row, typically 2.54mm pitch
- Location: near the main SoC or CPU, along the edge of the board, near a DC power jack, or in a corner
- Labels: silkscreen text printed directly on the PCB in white or yellow ink
Common silkscreen labels:
| Label | Meaning |
|---|---|
TX / TXD |
Transmit data |
RX / RXD |
Receive data |
GND / GND1 |
Ground |
VCC / 3V3 / 5V |
Power reference |
J1 / J2 / J3 |
Generic connector designators |
DEBUG |
Usually UART, sometimes JTAG |
CON1 / CON2 |
Connector — worth probing |
UART0 / UART1 |
Explicit label, your lucky day |
CONSOLE |
Direct console access |
Not all boards label clearly. Some use only J1 with no further hint. When in doubt, probe it.
Typical 4-pin UART header layout:
[ GND ][ RX ][ TX ][ VCC ]
| | | |
1 2 3 4
Pin 1 = GND (always find this first)
Pin 2 = RX (receive, idle HIGH)
Pin 3 = TX (transmit, toggles on boot)
Pin 4 = VCC (3.3V or 5V, do NOT connect to adapter)
Note: pin order varies by board. Always verify with a meter.
Some boards use a 3-pin layout (GND, TX, RX) with no VCC exposed. Others expose 5 pins including a reset line. The 4-pin format above is the most common.
Multimeter Method
This is the most reliable identification technique when silkscreen labels are absent or ambiguous.
Setup: - Multimeter set to DC voltage - Device powered on and running (boot sequence active, ideally within the first 30 seconds) - Black probe to a known good ground (chassis screw, metal shielding, capacitor negative leg)
Step 1 — Identify GND first. Always.
Probe each candidate pin with the red probe while black is on chassis ground. A pin reading 0V constant is GND. Confirm by swapping: move black probe to the candidate and probe a known ground with red — you should still read 0V (or near zero). GND is your anchor. Mark it.
Step 2 — Identify VCC.
A pin reading a stable 3.3V or 5.0V with no fluctuation is the VCC reference. Some UART headers expose this, some do not. It tells you the logic level of the interface (3.3V is most common on modern SoCs, 5V on older or industrial designs). Do not connect your adapter's VCC to this — it is a reference point, not a power source for your tool.
Step 3 — Identify TX.
TX is the transmit line from the device. During boot, the device sends console output: kernel logs, bootloader messages, init scripts. This creates rapid voltage transitions on the TX pin. On your multimeter, this looks like a voltage bouncing between roughly 0V and VCC, hovering somewhere in between depending on the data rate. The needle or digits will flutter. If you probe during the boot window (first 10–30 seconds after power-on), TX is impossible to miss. If you probe a cold, fully-booted device with no activity, TX looks like VCC (idle HIGH). Reboot and watch.
Step 4 — Identify RX.
RX is the receive line — it accepts data from your adapter. When nothing is connected, RX sits idle at VCC level. It is steady, same as VCC, because UART idle state is logic HIGH. If you send data into it (from your adapter), it will drop to 0V momentarily on each bit. Distinguishing RX from VCC on a meter alone can be tricky — context matters. On a 3-pin header (GND, TX, RX), once GND and TX are identified, the remaining pin is RX by elimination.
Logic Analyzer Method
A logic analyzer gives you certainty. Attach a probe to each candidate pin, power on the device, and capture for 30 seconds. Open the capture in PulseView (sigrok frontend).
In PulseView: 1. Add a decoder: Protocol Decoder → UART 2. Set the RX/TX channels to your probed pins 3. Set baud rate to a common value (115200 first, then 9600, 57600, 38400) 4. If the decoder produces readable ASCII, you have the right pins and baud rate
The logic analyzer also reveals JTAG pins nearby — useful for not confusing the two interfaces.
JTAGulator
The JTAGulator is a dedicated open-source tool designed specifically for automated UART and JTAG pin discovery. Connect its inputs to all candidate pins, supply the target voltage, and run the UART scan. It sweeps baud rates and pin combinations automatically, printing readable output when it finds a valid UART configuration. This is the professional approach when you have 10+ candidate pins and do not want to probe manually. It reduces a 2-hour manual process to a 5-minute automated scan.
Common Mistakes
Confusing UART with JTAG. Both often sit near the CPU, both use small headers. JTAG typically has 10 or 20 pins (standard ARM connector) or at minimum 4–5 pins (TDI, TDO, TCK, TMS, optional TRST/SRST). UART is 2 data lines. If you find a 4-pin header that produces no readable output on UART, check if it is JTAG using a logic analyzer.
Connecting VCC. Never connect your USB-UART adapter's VCC pin to the target board's VCC when the board is already powered by its own supply. You risk backfeeding voltage into the target's regulator, creating a voltage conflict, and potentially destroying the SoC or your adapter. Power from one source only.
Wrong logic level. A 5V adapter connected to a 3.3V UART RX line will damage the target SoC over time or immediately. Identify the logic level from the VCC pin first. Most modern boards run 3.3V. Always match your adapter's output voltage to the target's logic level.
Probing a cold idle device. If the device has been running for an hour, TX is idle and looks like VCC. You will not distinguish it from the VCC pin by voltage alone. Always probe during boot. If you missed it, reset the device while probing.
Practical Workflow Summary
- Examine the board under good lighting. Look for unpopulated headers near the SoC.
- Check silkscreen for labels: DEBUG, UART, J1, TX, RX, CON.
- Power on the device. Immediately probe candidate pins with a multimeter.
- Find GND first (0V). Find VCC next (stable 3.3V or 5V). TX fluctuates on boot. RX is steady at VCC.
- If uncertain, attach a logic analyzer, decode with PulseView, try 115200 baud first.
- Mark identified pins before moving on. Tape a paper label to the board if needed.
UART identification is a skill that gets faster with practice. After your third or fourth device, you start recognizing header shapes and silkscreen patterns at a glance. The multimeter method is all you need for 90% of cases.