Can't get Adafruit FT232H to work for debuging ESP32

The FT232H is a single channel version of the 2232H, I modified minimodule config to reflect the PID of 6014, I used zadig to install WinUSB driver, however I am getting:

Error: libusb_get_string_descriptor_ascii() failed with LIBUSB_ERROR_IO
Error: no device found
Error: unable to open ftdi device with vid 0403, pid 6014, description ‘USB Serial Converter’, serial '’ at bus location ''strong text

Any idea on how to get this to work would be GREATLY appreciated.

I am using windows 10.

I removed the ftdi_device_desc line and it seems to find it fine now, however if I try to debug it just compiles and sits there saying pre-debug, which brings up a debug toolbar with only the STOP button active.

  1. Set the pid back to default.
    For FT232H It should be VID_0403&PID_6001 as i remember…

  2. Go to
    c:\Users\[your user]\.platformio\packages\tool-openocd-esp32\share\openocd\scripts\interface\ftdi\esp32_devkitj_v1.cfg

  3. Replace
    ftdi_vid_pid 0x0403 0x6010
    ftdi_vid_pid 0x0403 0x6001

  4. Give it a try :smiley:

Eventually, if it don’t work as expected, try to replace
ftdi_layout_init 0x0008 0x000b
ftdi_layout_init 0x0c08 0x0f1b

The 6001 is the 232R, which is Serial only, the 6014 is the 232H which has the MPPSE engine (only 1 channel). I tried changing debug_tool = minimodule in platformio.ini to debug_tool = esp32_devkitj_v1 however that just gives the error:
Error: Unknown debug tool esp32_devkitj_v1. Please use one of esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa or custom

I kept it as minimodule even with your changes but that did nothing, looking at all the files that are used I don’t see devkitj_v1 being referenced by minimodule at all.

The ideea is to edit the cfg file and change the PID from 6010 to your device pin (6014)
You can also try to set the project target board as

platform = espressif32
board = esp-wrover-kit

then edit the esp-wrover-kit.json file at this line:

“hwids”: [

replace the 6010 with 6014 and give it a try.

Yes I have modified the PID value as stated in my first post, the device is found and communicated with, the problem is it doesn’t work. No errors are given, I hit F5 and it compiles and just sits there (Doesn
t upload, just compiles as if I hit compile alone), debug controls appear with just the STOP button clickable, which clicking on that just makes the debug controls disappear.

Follow this steps:

I get the same error on macOS Catalina. Having the FTDI VCP driver installed. Any idea how I can solve this?

openocd -f interface/ftdi/adafruit.cfg
Open On-Chip Debugger  v0.10.0-esp32-20191114 (2019-11-14-14:19)
Licensed under GNU GPL v2
For bug reports, read
adapter speed: 20000 kHz
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Error: libusb_get_string_descriptor_ascii() failed with LIBUSB_ERROR_IO
Error: no device found
Error: unable to open ftdi device with vid 0403, pid 6014, description 'Adafruit FT232H Breakout', serial '*' at bus location '*'

Here the config.

cat interface/ftdi/adafruit.cfg
interface ftdi
ftdi_vid_pid 0x0403 0x6014
ftdi_layout_init 0x0008 0x400b
adapter_khz 20000
transport select jtag

ftdi_device_desc "Adafruit FT232H Breakout"

If you have installed any drivers, uninstall them. These drivers create a serial port for the FT232H. However, for JTAG debugging ful access to the FTDI chip is required. And no driver is needed for that…

Furthermore, Apple’s FTDI driver might get in the way as well (also creating a serial port). So temporarily unload them. To do so, search for FTDI driver directories and then call kextunload for each of them. You can simply execute the below commands. Some will fail because there is no driver in the specified location for:

sudo kextunload /System/Library/DriverExtensions/DriverKit.AppleUSBFTDI.dext
sudo kextunload /System/Library/Extensions/AppleUSBFTDI.kext
sudo kextunload /Library/Extensions/FTDIUSBSerialDriver.kext

I know this is an old thread, but this is how I got things to work, in case people find it useful:

  • Make sure you’re not using the JTAG pins on your microcontroller for anything else. I was blinking the onboard LED (pin 13), and using pin 33 as one of the control signals for a display. I had to upload a sketch with that functionality commented out (via normal usb/uart) before JTAG would work for uploading/debugging.
  • in my platformio.ini file, I had to add the following lines to switch from USB/Serial uploading to JTAG

upload_protocol = minimodule
debug_tool = minimodule
debug_speed = 12000

  • The minimodule.cfg was modified to be similar to the ft232h-module-swd.cfg file nearby:

adapter driver ftdi
#ftdi device_desc “Adafruit FT232H”
ftdi vid_pid 0x0403 0x6014

#the 0x003b may be the most important part. bit pattern 0000 0000 0011 1011, sets
#D5,D4,D3,__,D1,D0 as outputs, and sets D2 and the rest to inputs
ftdi layout_init 0x0030 0x003b

#specifies /nSRST (optional module reset pin) to D4
ftdi layout_signal nSRST -data 0x0010 -oe 0x0010
#specifies /nTRST (optional target reset pin) to D5
ftdi layout_signal nSRST -data 0x0020 -oe 0x0020

  • Extra Tip: when you’re using Zadig to replace the driver, you can edit the display name before hitting “Replace Driver”. I set it to “Adafruit FT232H” so it was more recognizable than “USB Serial Converter”. Unfortunately, you still have to comment out the minimodule.cfg line mentioning the name.