OpenOCD’s ftdi driver does not use FTDI’s Windows driver at all: it talks to the chip through libusb, so the channel it drives must be bound to WinUSB, not FTDIBUS. On an FT2232H that means one Zadig change on Interface 0 (channel A) and nothing on Interface 1, which keeps working as a COM port.
The error text itself changed in 2023, which is why half the threads you find do not match what your OpenOCD prints. Both forms are below, with the line that comes just before them, because that line tells you which mistake you made.
⬇ OpenOCD for Windows (xPack build, 64-bit) and Zadig
Download xpack-openocd-0.12.0-7-win32-x64.zip
Zadig: official site zadig.akeo.ie. Zadig 2.9 is still the current release (libwdi v1.5.1, 13 Jun 2024); our mirror Zadig-2.9.zip (5,321,281 bytes, SHA-256 a1a653be3be514116eea78fb024bf44cc1927907e54daed29277142c3b60dd5f) is described in the Zadig guide.
The two versions of the error
| OpenOCD build | What it prints | Source |
|---|---|---|
| 0.12.0 release (14 Jan 2023) and older, most IDE-bundled copies | Error: unable to open ftdi device with vid 0403, pid 6010, description '*', serial '*' at bus location '*' (printed once per vid/pid pair in the config, so two pairs = two errors) |
mpsse.c before commit 7529 |
| Builds after 18 Mar 2023, including the xPack zip above | Error: unable to open ftdi device with description '*', serial '*' at bus location '*' (no VID/PID any more) |
Commit a8bc4e75, “prevent misleading error msg when more vid/pids configured” |
Read the line above it. In mpsse.c, OpenOCD only logs libusb_open() failed with … when a device with a matching VID:PID was found. No such line means nothing with that VID:PID is on the bus. That is the case in LilyGO issue #114, where the board simply has no FTDI chip.
Install, step by step (Windows 11)
- Plug the adapter in. With FTDI’s driver loaded, Device Manager shows two “USB Serial Converter A/B” entries, as in the SiFive HiFive1 thread.
- Run Zadig, then Options → List All Devices. Without that, the FTDI interfaces are hidden.
- Pick “Dual RS232-HS (Interface 0)”, USB ID
0403 6010, current driverFTDIBUS. Set the target to WinUSB and click Replace Driver. - Leave “Dual RS232-HS (Interface 1)” on FTDIBUS. Espressif’s FT2232H JTAG guide says the same: Interface 1 is the UART used for flashing.
- Test:
bin\openocd.exe -f interface/ftdi/<your-adapter>.cfg -c "adapter speed 1000" -f target/<chip>.cfg.

The data: which interface your adapter actually uses
We went through all 88 files in tcl/interface/ftdi/ at commit e5888bda3, the same set shipped in the zip. 85 have an ftdi vid_pid line; 3 are SWD add-ons with none. “Interface 0” is not always right: OpenOCD’s manual says the ftdi channel default is 0 “but there are exceptions”, and the exceptions are real adapters.
| Chip (bcdDevice) | VID:PID | USB interfaces | OpenOCD configs (first pair) | What to give WinUSB in Zadig |
|---|---|---|---|---|
| FT2232C/D (0x0500), FT2232H (0x0700) | 0403:6010 | 2 (A, B) | 35: 30 with channel 0, 5 with ftdi channel 1 (tigard, snps_sdp, lisa-l, opendous_ftdi, redbee-usb) |
Interface 0, or Interface 1 for those five |
| FT4232H (0x0800) | 0403:6011 | 4 (A–D) | 1 (imx8mp-evk, channel 0) plus a commented option in minimodule-swd | The interface matching ftdi channel |
| FT232H (0x0900) | 0403:6014 | 1 | 8 (um232h, c232hm, ft232h-module-swd…) | The whole device; its COM port goes away |
| FT232R / FT-X | 0403:6001 / 6015 | 1 | 0 | Nothing helps. No MPSSE, and mpsse.c rejects them with “unsupported FTDI chip type” |
| Custom VID/PID (Olimex 15BA, Amontec 0403:CFF8, TI XDS100…) | various | usually 2 | 41 | Read the ftdi channel line of that .cfg |
The line before the main error, decoded from libusb.h and libusb’s Windows backend (windows_winusb.c):
| Line before the error | libusb meaning | What it means here |
|---|---|---|
libusb_open() failed with LIBUSB_ERROR_NOT_FOUND (−5) |
Entity not found | Composite chip (FT2232H/FT4232H) and none of its interfaces is on WinUSB. composite_open() starts at NOT_FOUND and only opens WinUSB-class interfaces. This is the SparkFun case below. |
… LIBUSB_ERROR_NOT_SUPPORTED (−12) |
Not supported on this platform | A non-composite device (FT232H) is still on FTDIBUS, which has no libusb backend. |
libusb_claim_interface() failed with … |
(any code) | WinUSB is on an interface, but not on the one in ftdi channel. |
… LIBUSB_ERROR_ACCESS (−3) |
Access denied (insufficient permissions) | Mostly a Linux problem: install contrib/60-openocd.rules, which lists 0403:6010, 6011 and 6014. |
| No libusb line at all | n/a | No device with that VID:PID is connected. Check the cable and whether the board has an FTDI chip. |
Common problems
- NOT_FOUND on 0403:6010, then the same error for pid a6d0. The SparkFun thread shows exactly this with an XDS100v2. The fix was replacing the driver with Zadig.
- Zadig worked, now the COM port is gone. You replaced Interface 1, or used an FT232H, which has only one interface. Uninstall that entry in Device Manager with the driver removal box ticked, replug, and redo step 3.
- Tigard / Synopsys SDP still fail after Zadig. Their configs use channel 1, so WinUSB goes on Interface 1.
- ESP32 board without a JTAG chip. A plain USB-UART bridge cannot do JTAG (issue #114). Use an external probe, or the chip’s built-in USB-JTAG on S3/C3.
Related guides
- FTDI FT232 driver for Windows (the FTDIBUS/VCP side)
- CMSIS-DAP, DAPLink and WCH-LinkE on Windows 11
- J-Link driver and J-Flash Lite
- Zadig: WinUSB, libusb-win32 and libusbK explained
- FTDI on macOS and Linux
Sources
- OpenOCD: src/jtag/drivers/mpsse.c (error text, chip types by bcdDevice), tcl/interface/ftdi/ (88 configs), commit a8bc4e75 (message change, 18 Mar 2023), contrib/60-openocd.rules, manual: ftdi channel / ftdi vid_pid
- libusb: libusb.h (error codes), os/windows_winusb.c (
composite_open, unsupported driver → NOT_SUPPORTED) - Linux kernel: ftdi_sio_ids.h (6001, 6010, 6011, 6014, 6015)
- Espressif: Configure FT2232H JTAG interface (Zadig, Interface 0 vs 1)
- xPack: openocd-xpack releases; Zadig: libwdi releases
- Threads: SparkFun, OpenOCD cannot find programmer; SiFive forum, HiFive1 on Windows; LilyGO T-SIM7600X #114
