OpenOCD is a very useful tool for embedded developers. OpenOCD is an open source project providing support for on-chip debugging on embedded systems. OpenOCD supports JTAG and SWD, and also allows you to run gdb-remote for debugging your system.
On OSX, there are often issues with driver and resource collision. OpenOCD requires the libFTDI package from Homebrew (or elsewhere) and does not work with the Apple supplied FTDI driver. When you plug in your device, the Apple driver will claim the interface first, and OpenOCD will fail with
Using OpenOCD interface file ftdi.cfg Open On-Chip Debugger 0.10.0-dev-gd28ab08 (2015-09-14-20:17) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html adapter speed: 3000 kHz adapter_nsrst_delay: 100 Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'. jtag_ntrst_delay: 100 cortex_m reset_config sysresetreq sh_load Error: libusb_claim_interface() failed with LIBUSB_ERROR_ACCESS Error: unable to open ftdi device with vid 0403, pid 6010, description 'Dual RS232' and serial '*' OpenOCD failed! Aborting...
Normal tutorials guide you to completely disable the Apple FTDI kext, requiring turning off file system protections and booting into safe mode to accomplish. If you ever want to use the Apple driver again, you have to undo the process manually. Let me tell you - it's a headache.
Recently I learned of a new approach to avoiding driver conflicts that makes life much easier. Simply issue these two commands before plugging in your OpenOCD-compatible device:
sudo kextunload -p -b com.apple.driver.AppleUSBFTDI sudo kextutil -b com.apple.driver.AppleUSBFTDI -p AppleUSBEFTDI-6010-1
After that, you should be able to plug in your OpenOCD-compatible device and connect successfully!
Note: These commands will take effect until the next time you reboot your system. You can also issue a
sudo kextload -b com.apple.driver.AppleUSBFTDI