RP-003139-SP - 4 Raspberry Pi Trading LTD
Raspberry Pi 3-pin Debug Connector Specification
Introduction
Raspberry Pi is standardising on using a small, keyed, 3-pin connector which can be used for either
UART or 2-wire serial debug interfaces. Future Raspberry Pi devices with dedicated serial debug or
UART interfaces will, where possible, use this connector and follow this specification.
The oldest and most universal ‘debug’ port is a simple 16550-style UART. A UART requires 2
unidirectional pins, one to transmit data from the target to the host (TX) and one for the other
direction (RX).
The 3-pin serial debug connector interface is designed to work with a single unidirectional clock pin
and a bidirectional data I/O pin. This arrangement can support ARM’s Serial Wire Debug (SWD) or
things like cJTAG, for example.
This document uses the words target and host to describe the debug target (e.g., a Raspberry Pi
Pico) and debug host (the debug dongle, e.g., RP2040 running debugprobe) respectively.
*Note when talking about UART TX and RX, we are talking about these pins from the target
perspective. E.g., if the target is a BCM2711 SoC, then RX means the signal driving into the SoC and
TX driving out from the SoC.
Pinout
Each of the interfaces needs 2 pins and a ground, so a keyed 3-pin connector can be used for both:
Pin Number UART Signal Serial Debug Signal
1 RX SC (serial clock)
2 GND GND
3 TX SD (bidirectional serial data)
We specify the pinout such that the unidirectional SC (which is driven into the debug target) is on
the same pin as the UART RX signal that is in the same direction (this avoids contention as we are
using the same connector for both UART and serial debug so mis-plugging is possible).
We specify that SD and UART TX are on the same pin. Using the specified pinout If you plug a UART
into a serial debug interface it is ‘safe’ and no contention will occur. If you plug a serial debug
interface into a UART, contention is possible on the TX/SD pin but current will be limited by the
termination resistors.
Raspberry Pi Trading LTD registered in England and Wales. Company No. 8207441
1
RP-003139-SP - 4 Raspberry Pi Trading LTD
We further specify ‘source termination’ resistors on both pins at both ends of the link:
- 100 Ohm resistor on the SC/TX and SD/RX IC pins at the host
- 100 Ohm resistors on the SC/RX and SD/TX IC pins at the target
These resistors must be placed very close to the IC pins of the debug host and the target device so
the serial combination of 200R only has to ‘drive’ the pin capacitance and shortest possible PCB
trace capacitance.
The resistors provide some slew limiting (better for signal integrity and EMC), short-circuit and ESD
current limiting. Note that the 100R resistors at the target are not strictly required but highly
recommended unless the platform is very low cost and/or space constrained.
The series resistors will limit the maximum speed of the interface, however over a few 10s of CM of
cable and PCB ~30MHz performance should still be achievable.
3 pin SH connectors
100R 100R
SC/TX 1 1 SC/RX
Debug Host IC
100R 2 2 100R
Debug Target IC
SD/RX 3 3 SD/TX
HOST TARGET
Straight-through (pin 1 to pin 1) cable
Voltages
We specify that the interface on the debug host should operate at 3.3V (+/- 10%). It is recommended
that targets use 3.3V I/O where possible but they can operate at IO voltages of between 1.8 to 3.3V
(+/- 10%) as long as they follow the rules below.
Hosts and targets using these interfaces MUST have 3.3V failsafe pads. (Failsafe means that even if
the host or debug target is unpowered, the pins will survive 3.3V+10% being applied to them
continuously and will not draw any current).
We allow a debug target to work at lower voltages, say 2.5V or 1.8V, but in this case, as before, the
pins used MUST still be both 3.3V tolerant and failsafe to 3.3V (plus 10%). Note that the RP2040
Raspberry Pi Trading LTD registered in England and Wales. Company No. 8207441
2
RP-003139-SP - 4 Raspberry Pi Trading LTD
microcontroller pins satisfy the above tolerance and failsafe requirements when being used at any
voltage from 1.8V to 3.3V.
We further specify that debug hosts MUST be able to work correctly with IO voltages down to 1.8V
on their TX/SD pin (pin 3). This allows targets using 1.8V IO (which, as per the previous paragraph
still must have 3.3V tolerant and failsafe pins) to interface to the debug host reliably.
Connector
We specify the connector to be a 1.0mm pitch 3-pin JST ‘SH’ connector either BM03B-SRSS-TB (top
entry) or SM03B-SRSS-TB (side entry) types, or compatible alternatives.
The following PCB footprints show the pin numbering for both top and side entry types and signal
direction from the target perspective. For clarity, the fact that we are showing UART on a side entry
type and serial debug on the top entry type is just for example – either type can use either interface:
Raspberry Pi Trading LTD registered in England and Wales. Company No. 8207441
3
RP-003139-SP - 4 Raspberry Pi Trading LTD
Further Requirements
Products should, where possible, clearly mark what interface the 3-pin connector is for, to avoid
users plugging in the wrong interface. If it is not possible to clearly mark the connector (e.g. if the
PCB is too small and/or dense) then it should be clearly marked in the product documentation.
Mark ‘UART’ next to the connector for a UART.
Mark the type of 2-wire debug interface next to the connector for serial debug (e.g. ‘SWD’ or ‘cJTAG’)
or alternatively mark as ‘DBG’, ‘DBUG’ or ‘DEBUG’.
Raspberry Pi Trading LTD registered in England and Wales. Company No. 8207441