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

Windows 10/11 x64 · OpenOCD with the ftdi (MPSSE) driver, libusb-1.0.dll 1.0.29 and all 88 interface\ftdi\*.cfg files · no installer, unzip and run

Download xpack-openocd-0.12.0-7-win32-x64.zip

File: xpack-openocd-0.12.0-7-win32-x64.zip · 3.08 MB (3,225,998 bytes) · released 5 Oct 2025 · SHA-256 6bfd3c97135aafef8affc9af1acf34fd0e2b9ca26044506f6abd7f95b7630052 (matches the .sha published with the release) · GPL-2.0-or-later · unmodified mirror of xpack-dev-tools/openocd-xpack v0.12.0-7. The binary reports 0.12.0+dev-02228-ge5888bda3, i.e. upstream commit e5888bda3 of 30 Sep 2025.

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)

  1. 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.
  2. Run Zadig, then Options → List All Devices. Without that, the FTDI interfaces are hidden.
  3. Pick “Dual RS232-HS (Interface 0)”, USB ID 0403 6010, current driver FTDIBUS. Set the target to WinUSB and click Replace Driver.
  4. Leave “Dual RS232-HS (Interface 1)” on FTDIBUS. Espressif’s FT2232H JTAG guide says the same: Interface 1 is the UART used for flashing.
  5. Test: bin\openocd.exe -f interface/ftdi/<your-adapter>.cfg -c "adapter speed 1000" -f target/<chip>.cfg.
Diagram: FT2232H 0403:6010 interface 0 channel A gets WinUSB for OpenOCD, interface 1 channel B keeps FTDIBUS as COM port, and the libusb errors for each wrong setup
Which interface gets which driver, and what libusb returns when it is wrong. Diagram by TechBenchLab from the sources listed below.

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

Related guides

Sources