I was struggling for some time to make my Mac communicate via bulk endpoints with an Arduino. It is part of a larger project of an USB-controlled Lab PSU that I am currently in prototype stage. Part of these problems solved when I finally realized that you cannot use Arduino serial ports to mimic USB endpoints because there is no firmware loaded in the μController that configures the device in such way that it can be discovered and used as USB device.
Luckily, in my scrap parts box I had an USB breakout board (part BOB-00718) that I once bought from SparkFun. This comes populated with a FT232RL chip from FTDI and connects to serial comm ports on Arduino (Tx and Rx). It basically an USB–to–UART converter and is advertised as such on FTDI products page. It is not the scope of this post to elaborate on FTDI product offering, but it might be worth noting that these chips are actually considered to be USB Slave Converters and not USB controllers. Which means that there is some penalty in functionality expected from a real USB controller which FT232 does not provide. But, again, this would be the subject of a different post.
First thing I needed to do is to find a way to reprogram the FTDI chip. For practical reasons, I needed to understand all endpoint communication process and device and interface discovery prior to this. Working with USB interfaces under OSX was a bit tricky because the available documentation from Apple is a bit misleading<articol aici>. The next logical step was to re-program the FTDI chip. Because I ran into some problems, this post is an overview of the recommended toolchain.
There are several programmers. Currently recommended and supported is FT_PROG, version 18.104.22.168. FT_PROG is a free EEPROM programming used for modifying EEPROM contents that store the FTDI device descriptors to customize designs. Can be downloaded here and detailed documentation can be found here.