

JTAG SWD adapter
Universal JTAG/SWD/UART adapter based on FT2232H
- Size
- 91.2 × 48.3 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 103
- Nets
- 124
- Pads
- 455
- Tracks, vias
- 1,376, 365
- Pours
- 4
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 10 Aug 2019
- Updated
- 13 Apr 2022
Overview
JTAG SWD adapter is an open-source printed circuit board by Neofoxx, from the Neofoxx/JTAG-SWD-adapter repository on GitHub. It is a 2-layer board of 91.2 × 48.3 mm with 103 parts on 124 nets, routed with 1,376 tracks and 365 vias.
It is built around the 74LVC125AD, SRV05-4 and 74LVC157AD, with the LN1134A332MR-G, BC847 and BC857 among its other parts. Its parts include 34 resistors, 25 capacitors, 13 ICs, 6 diodes and 3 transistors. It belongs with the interfaces and adapters boards of this library.
Main components
674LVC125AD
SOP-14L-40℃~+125℃ 1 1.65V~5.5V 2.6ns@5V,15pF 4 40uA 50mA 50mA 74LVC Schmitt trigger Tri-State Unidirectional SOP-14L Buffers, Drivers, Receivers, Transceivers ROHSMDDBuffers, Drivers, Receivers, TransceiversSRV05-4
SOT-23-6L-55℃~+150℃ 15V 1pF 4A 5V 5uA 6V 80W ESD Four channels IEC 61000-4-2、IEC 61000-4-5 Unidirectional SOT-23-6L ESD and Surge Protection (TVS/ESD) ROHShongjiachengESD And Surge Protection (TVS/ESD)74LVC157AD
SO-16-40℃~+125℃ 1.2V~3.6V 2.5ns@3.3V,50pF 24mA 24mA 40uA 74LVC 8/4 Level shifting Multiplexer Single Supply SOIC-16 Signal Switches, Multiplexers, Decoders ROHSNexperiaSignal Switches / Encoders & Decoders / MultiplexersLN1134A332MR-G
SOT-23-5-40℃~+85℃ 1 180mV@(100mA) 3.3V 300mA 60dB@(1kHz) 70uA 7V Fixed Over Current Protection、Enable Positive SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSNATLINEARVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsBC847
SOT-231 NPN 100MHz 100mA 100nA 110 200mW 45V 500mV 6V NPN SOT-23 Bipolar (BJT) ROHSShikuesBipolar (BJT)BC857
SOT-231 PNP 100MHz 100mA 15nA 200mW 45V 5V 650mV 800 PNP SOT-23 Bipolar (BJT) ROHSSTMicroelectronicsBipolar (BJT)
README
README.mdJTAG-SWD-adapter
Universal JTAG/SWD/UART adapter based on FT2232H
PCB view

Finished product

Pinout

Description
This is a universal JTAG/SWD/UART/SPI/... adapter based around the FT2232H chip. This initially started based off the KT-Link specifications, but has since evolved into the following set of features:
- USB Type-C connector
- 1.8V - 5V traget supply
- JTAG and SWD support on channel A, UART support on channel B.
- ESD protection of USB and of target
- Integrated power section, to power target from the adapter (5V/3.3V/2.5V/1.8V available)
- Similar pinout to the standard found on commercial JTAG/SWD adapters, with the addition of UART pins
- JTAG/SWD programming with simultaneous UART communication
- LEDs for USB power, Target power, SWD interface, Activity, and RX&TX of the UART
The design has been tested and confirmed working with OpenOCD. Tested targets so far have been STM32F1 (SWD), STM32F3 (SWD), ESP32 (JTAG), and PIC32MX (JTAG)
Component selection & BOM
Components were selected based on the desire to try them out, usually based on price/performance. FT2232H and its support circuitry should not be changed, but other things (series resistors, LEDs, DCDC chip) can be changed & exprimented with without issue.
Setup (1/2) - EEPROM
After soldering the board together and verifying for no shorts, plug the debugger into your computer, and verify that it shows up. With no parameters in the EEPROM, it should show up as a generic FT2232H Dual UART device.
You can find the relevant files in the Setup folder.
Windows
Use the provided "Neofoxx FT-Prog template.xml".
- Connect the device to your computer. Verify that VCP drivers for FT2232H are installed
- Open FT-Prog. Click on "Devices" -> "Scan and Parse"
- The device should now show up
- Right clock on your device, and select "Apply template". Choose the template in the first step.
- Afterwards, right-click on the device again, and select "Program". Confirm again that you want to progam the device.
- After programming, unplug & re-plug your device. Wait for driver installation.
- In FT-Prog, perform another "Scan and Parse".
- Confirm the device has the proper parameters.
- Success!

Linux
- Use the provided "Neofoxx_ftdi_eeprom.conf".
- (Feel free to change the serial number, but do not increase the number of characters)
- Install/build libftdi1 from https://www.intra2net.com/en/developer/libftdi/download.php
- (Link for reference, if you run into trouble: https://www.acmesystems.it/CM3-HOME_ft4232_setup )
- Flash the eeprom with the following command:
ftdi_eeprom --device i:0x0403:0x6010 --flash-eeprom Neofoxx_ftdi_eeprom.conf - Run the command again. Afterwards, unplug & re-plug the device.
- With dmesg or similar, you can check that the attached device now has the proper Manufacturer and Description string
- Alternatively, in the examples folder, run the
eepromutility, and see what it outputs.
Known issues
- FT-Prog and ftdi_eeprom do not write 100% identical settings. The adapter will work nonetheless.
- If flashed with ftdi_eeprom, then checked in FT-Prog, the device will LOSE ITS PARAMETERS. In that case, upload them again in FT-Prog. If you don't check it in FT-Prog, it will work in Windows just fine. (Possible issue, that ftdi_eeprom doesn't write the eeprom type?)
- If you manage to mangle the parameters, and your VID/PID is suddenly 0000:0000, you can revive the device with a Windows box (virtualization won't work, unless you can pass a device with 0000:0000 to it).
- -> Connect the device to a Windows box, and force install the VCP drivers on the "Unknown device"
- -> This should then allow you to see the device in FT-Prog, and allow you to erase the eeprom and flash it with the proper parameters.
Setup (2/2) - OpenOCD settings
- Copy the neofoxx.cfg file into your openocd scripts/interface/ftdi/ folder.
Linux
- Done!
Windows
- If you want to use the adapter with OpenOCD under Windows, you will have to change its drievr from the FTDI one a WinUSB one.
- Download zadig from here: https://zadig.akeo.ie/
- Run the tool.
- If necessary, in the Options menu, select "List All Devices"
- Select "Neofoxx JTAG/SWD adapter (Interface 0)"
- Select WinUSB, then click Replace Driver.
- Done!
- Note, if you have multiple adapters connected at the same time and want to use them, you have to do this on all of them.
- If the adapter suddenly stops working under Windows, fist check if the driver has changed. Windows have a nasty habit of changing things without telling you.

Normal operation and things to look out for
- To use SWD with this board, you need to pass the proper flags to OpenOCD. Try something like this
openocd -f interface/ftdi/neofoxx.cfg -c "transport select swd" -f target/stm32f1x.cfg -c "adapter_khz 1000" - Because the board is compliant to the standard pinout, it will, when used in SWD mode, connect the TDO line to the RX of the UART channel, to be used as SWO.
- -> If this is undesired, the jumper on the board can be moved from "Auto" to "RX". This way, the UART RX pin will always be the RX pin, bypassing the switching of pins.
- The adapter includes a power section to power the target
- -> The maximum current draw is limited with a 1 ohm resistor, to protect the PC.
- -> When changing voltages, first turn the EN/1.8V pin to off, then set the voltage, then enable it again.
- -> When using 5V, disable the EN/1.8V switch first (the other two do not matter), then enable the 5V switch. Also in this case, if you make a mistake and short a high voltage onto the VTarget rail, your computer is at risk. There is some protection, but it's your computer. If you suspect this might happen, replace the 1 ohm resistor with an SMD fuse.
- The USB/Power LED shines when the USB cable is plugged in (5V is present)
- The VTarget LED shines when the voltage on VTarget is over 0.7V
- The SWD LED shines when the SWD interface is selected
- The Acivity light is SW driven from OpenOCD or others.
Housing
The housing has been designed with latches, so it can be quickly opened and closed. 3D printing with PLA has given the best results so far. Be warned, the housing was designed with minimal tolerances, so it might be a snug fit.
Future improvements:
- Possibly split the two Vtarget pins into two separate pins - possibility of powering the target with say 5V, while communication works on 1.8V, etc.
- Instead of rounded corners, use inverted rounded corners, or no rounding at all. This would reduce waste during production of PCBs, since they could be panelized more easily (just V-cut, no mouse bites required)
- Fixup ftdi_eeprom & FT-Prog differences
- Update schematic to newer version of KiCad, and not use rescue symbols.
- Test the power section & enabling via the FTDI. As it is, that is UNTESTED
Parts
103| Qty | Value | Footprint | References |
|---|---|---|---|
| 14 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder | C2, C4, C6, C9, C11, C14, C18, C19, C20, C21, C22, C23, C24, C26 |
| 11 | 1k | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R9, R12, R13, R15, R17, R21, R22, R26, R31, R32, R33 |
| 6 | LED | LED_THT:LED_D3.0mm | D1, D2, D3, D4, D5, D6 |
| 5 | 100k | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R8, R14, R16, R28, R29 |
| 5 | 4u7 | Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C1, C3, C5, C7, C8 |
| 5 | 4x220R | Resistor_SMD:R_Array_Convex_4x0603 | RN4, RN5, RN6, RN7, RN8 |
| 4 | 10k | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R2, R7, R27, R30 |
| 4 | 74LVC125 | Package_SO:TSSOP-14_4.4x5mm_P0.65mm | U9, U11, U12, U13 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 4 | SRV05-4 | Package_TO_SOT_SMD:SOT-23-6 | U1, U2, U3, U5 |
| 3 | 220k | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R18, R19, R20 |
| 3 | 4x470k | Resistor_SMD:R_Array_Convex_4x0603 | RN1, RN2, RN3 |
| 2 | 10R | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R5, R6 |
| 2 | 27pF | Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder | C10, C12 |
| 2 | 4.7uF | Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C13, C16 |
| 2 | 5k1 | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R24, R25 |
| 2 | 600R, 1A | Inductor_SMD:L_0603_1608Metric_Pad1.05x0.95mm_HandSolder | FB1, FB3 |
| 2 | BC847 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2 |
| 2 | DNS | Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder | C17, C25 |
| 1 | 0R | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R1 |
| 1 | 1.5uH | KiCAD library:SMNR4018_(1616FPS) | L1 |
| 1 | 12MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm_HandSoldering | Y1 |
| 1 | 12k | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R4 |
| 1 | 180k | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R10 |
| 1 | 1R | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R23 |
| 1 | 220R, 2.5A | Inductor_SMD:L_0603_1608Metric_Pad1.05x0.95mm_HandSolder | FB2 |
| 1 | 2k | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R3 |
| 1 | 330k | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R34 |
| 1 | 470k | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R11 |
| 1 | 74LVC157A | Package_SO:TSSOP-16_4.4x5mm_P0.65mm | U10 |
| 1 | 93LCxxB | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U6 |
| 1 | BC857 | Package_TO_SOT_SMD:SOT-23 | Q3 |
| 1 | BL8028 | Package_TO_SOT_SMD:SOT-23-5 | U8 |
| 1 | CONN_02X10 | Connector_Multicomp:Multicomp_MC9A22-2034_2x10_P2.54mm_Horizontal | J4 |
| 1 | Conn_01x03_Male | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J2 |
| 1 | FT2232H-56Q | Package_DFN_QFN:QFN-56-1EP_8x8mm_P0.5mm_EP5.6x5.6mm | U7 |
| 1 | LN1134A332MR-G | Package_TO_SOT_SMD:SOT-23-5 | U4 |
| 1 | LOGO | KiCAD library:FOX_LOGO_MASK | MARK1 |
| 1 | SW_DIP_x04 | Button_Switch_THT:SW_DIP_SPSTx04_Slide_9.78x12.34mm_W7.62mm_P2.54mm | SW1 |
| 1 | USB_C_Receptacle_USB2.0 | KiCAD library:Jing USB C 2.0 16pin receptable | J1 |
Similar boards
- 4 layers150 × 99.5 mm

- 2 layers70.1 × 63.5 mm

- 2 layers161.3 × 90.2 mm

Full Card
flypie/Ace-2019
Reimplimentation of the Jupiter ACE with slightly more modern hardware. https://www.jupiter-ace.co.uk/ the KiCad versions are the up to date designs which are available at https://jupiterdeuce.blogspot.com and…
76 parts13GPL-3.0 - 4 layers50 × 75 mm

AOS16 Double Buffer
AJain9199/AOS16
Table of Contents About The Project Pictures Technical Details Directory Structure To-Do Acknowledgments
69 parts1 - 4 layers130 × 64.3 mm

Tspico v2.6
timex-sinclair-projects/tspico-hardware
Status 2026-10-19: prototype 3 (v3.0-proto3, changes below). Proto1 (v3.0-proto1) was built and brought up; proto2 added its fixes (below).
93 partsCERN-OHL-S-2.0 - 4 layers100 × 100 mm

- 4 layers56 × 60 mm

PCBA KNOT
intechstudio/knot
Knot is the bridge between old-school MIDI gear like synthesizers, groove boxes, guitar pedals and neat USB MIDI devices.
111 parts58GPL-3.0 - 2 layers58 × 17.8 mm

Questions
How big is the JTAG SWD adapter PCB?
It measures 91.2 × 48.3 mm and has 2 copper layers, 1.6 mm thick.
What parts does the JTAG SWD adapter use?
103 parts, built around the 74LVC125AD, SRV05-4, 74LVC157AD and LN1134A332MR-G. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the JTAG SWD adapter KiCad files?
From the Neofoxx/JTAG-SWD-adapter repository on GitHub, at the commit this page was made from: the board is HW/V4/JTAG-SWD-adapter.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the JTAG SWD adapter design in my own project?
Its repository states no licence, so its author keeps all rights: ask Neofoxx before reusing the design.