user6936: TL;DR - Can the six yellow ISP pins be used as a normal ISP?

The usual USB-TTL FTDI breakout board looks like this:

Recently, I came across a variant of the board shown below. However, what are the additional yellow header pins on this board for? They are labelled ISP.

Here is a view of the rear:

So can they really be used as a standard ISP/ICSP?

However, according to the diagram below, which labels the 6 pins in question, I am not sure that there is a valid correlation of signal lines.

That is to say, would CTS to MISO, RI to RST, DSR to SCK and DCD to MOSI work? Or is that why a special version of avrdude is required, as alluded to in FT232RL: USB to Serial 232 TTL Adapter –?and ISP? - post #6:

As a new feature there is a 6-pin ISP header available. With it, avrdude and avrftdi you can program Atmels and Arduino bootloaders. A special version of avrdude with compiled FTDI driver is neccessary.

However the provided link to that version of avrdude, with the compiled FTDI driver, is dead.
It is also said, in post #7, that these pins are actually equivalent to an X3 connector, as found on the older Arduino Dicimila/NG/Duemilanove boards.

and those can (evidently) be used like so, as a bit banged SPI,

It should be noted that the RI, CTS, DCD and DSR (labelled RSD) pins are available, along the sides of the original FTDI breakout board. So, does the breakout board with the ISP header just provide access to these same signals using a different header?
I am a little confused - have I just over thought this, and this breakout board is simply an ISP/ICSP header and an FTDI connector rolled into one board (when used with the appropriate version of avrdude)? Or is it not a usual ISP header? I can not find any specific documentation relating to this type of breakout board, as stated in post #4.
Can anyone say, definitively, what these six pins are for? If they are not a normal ISP header, could you provide a detailed way of using it? A schematic would be helpful.

user76053: Arduino IDE:
Additional programmers.txt entries to use  "FT232R as ISP"
ftdi232rasisp.name=FT232R as ISP
ftdi232rasisp.communication=usb
ftdi232rasisp.protocol=arduino-ft232r
ftdi232rasisp.program.tool=avrdude
ftdi232rasisp.program.extra_params=

avrdude.exe with FTDI bitbang support
https://github.com/mariusgreuel/avrdude

user10794: There's a thread about that on the Arduino Forum - someone had a similar question.

I found a schematic (below) which is not for that board, however the header pins are labelled the same as you found, so it is plausibly similar. 

It appears that header is used for "Synchronous Bit Bang mode" as documented here: Bit Bang Modes For The FT232R and FT245R (Application Note AN_232R-01, Document Reference No.: FT_000339)

You can in fact configure that header to be an SPI programmer, as described for example, in FT232R Bitbang Programmer.

I made up a test as I had a similar board in my parts drawer:

It had provision for a 6-pin header similar to yours. Turning the board over we can see that they were labelled exactly the same as yours:

I soldered on a header (in yellow, to be consistent) giving me this:

I added a white dot to indicate pin 1 (visible on the edge) so I plug the cable in the right way around.

When I attempted to use the board I got this message from avrdude:

avrdude: error: no libftdi or libusb support. Install libftdi1/libusb-1.0 or libftdi/libusb and run configure/make again

So, it had to be compiled from scratch! I am using Ubuntu 14.04 if you are trying to follow along. :)

Download avrdude
Go to the site http://www.nongnu.org/avrdude/
I downloaded version 6.3 source: http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz
Install libusb and libftdi
Before compiling I had to grab libusb and libftdi:
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libftdi-dev

Compile avrdude
Now we make avrdude after extracting the archive and navigating to its folder:
./configure --enable-libusb --enable-libftdi
make

Find correct configuration
Inside the avrdude.conf file which comes with avrdude I found (after some pondering) this seems to be the correct entry:
# see http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html
# Note: pins are numbered from 1!
programmer
  id    = "arduino-ft232r";
  desc  = "Arduino: FT232R connected to ISP";
  type  = "ftdi_syncbb";
  connection_type = usb;
  miso  = 3;  # CTS X3(1)
  sck   = 5;  # DSR X3(2)
  mosi  = 6;  # DCD X3(3)
  reset = 7;  # RI  X3(4)
;

The mapping of pins to numbers works like this... From the PDF about bit bang mode mentioned above we have this table, with annotations in blue by me:

The numbers refer to the bit number (i.e. in the range 0 to 7) in the "bit banged" data byte. We can see from the earlier schematic that, for example, MISO on the ICSP header is wired to CTS on the FT232RL. Thus MISO is data bit 3, which we tell avrdude in the above configuration. Similarly SCK is data bit 5, and so on.
I attempted to test like this:
./avrdude -C avrdude.conf -carduino-ft232r -pm328p  -v

Fix permissions
I got a permissions error which was fixed by creating a file in the folder /etc/udev/rules.d/ called 71-FTDI.rules. Inside this is:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE:="0666"

The numbers may vary for your board. You need to find the vendor and product ID. In Ubuntu you can do lsusb and see (amongst other things):
Bus 003 Device 061: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
                       ^^^^ ^^^^

Note the two hex numbers, which get copied into the rules file.
After doing that, tell the system to reload the rules:
sudo udevadm control --reload-rules

Then unplug and replug the FTDI board to get it to notice the new permissions.
Test board detection
Finally, the avrdude line above works and reads the chip:
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD

avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD
avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)

avrdude done.  Thank you.

I had mine plugged into an ATmega328P.

Example connected to a Diavolino

Once we have got this far you just connect the FTDI board to your target board with a straight-through cable.

Summary
The FTDI board you have (and the one I have) can be used as a ICSP programmer for the AVR chips, as described above. Thus a simple board can be both a USB to serial converter, and also an ICSP programmer.
I see similar boards selling on eBay for around $5 so that is probably quite a cheap programming option.

6936: <h3>TL;DR - Can the six yellow ISP pins be used as a normal ISP?</h3>
<hr />
<p>The usual USB-TTL FTDI breakout board looks like this:</p>
<p><a href="https://i.stack.imgur.com/21VZq.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/21VZq.jpg" alt="USB-TTL FTDI Breakout board" /></a></p>
<p>Recently, I came across a variant of the board shown below. However, what are the additional yellow header pins on this board for? They are labelled ISP.</p>
<p><a href="https://i.stack.imgur.com/fIXQV.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/fIXQV.jpg" alt="USB-TTL FTDI Breakout board with ISP" /></a></p>
<p>Here is a view of the rear:</p>
<p><a href="https://i.stack.imgur.com/sp4qM.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/sp4qM.jpg" alt="USB-TTL FTDI Breakout board with ISP rear" /></a></p>
<p>So can they really be used as a standard ISP/ICSP?</p>
<p><a href="https://i.stack.imgur.com/y6e4z.gif" rel="noreferrer"><img src="https://i.stack.imgur.com/y6e4z.gif" alt="AVR-ICSP" /></a></p>
<p>However, according to the diagram below, which labels the 6 pins in question, I am not sure that there is a valid correlation of signal lines.</p>
<p><a href="https://i.stack.imgur.com/lmG5D.png" rel="noreferrer"><img src="https://i.stack.imgur.com/lmG5D.png" alt="USB-TTL FTDI Breakout board with ISP with legend" /></a></p>
<p>That is to say, would CTS to MISO, RI to RST, DSR to SCK and DCD to MOSI work? Or is that why a special version of avrdude is required, as alluded to in <a href="http://forum.arduino.cc/index.php?topic=216889.0" rel="noreferrer">FT232RL: USB to Serial 232 TTL Adapter –?and ISP? - post #6</a>:</p>
<blockquote>
<p>As a new feature there is a 6-pin ISP header available. With it, avrdude and avrftdi you can program Atmels and Arduino bootloaders. A special version of avrdude with compiled FTDI driver is neccessary.</p>
</blockquote>
<p>However the <a href="http://helix.air.net.au/index.php/avrdude-and-ftdi-232h/" rel="noreferrer">provided link</a> to that version of avrdude, with the compiled FTDI driver, is dead.</p>
<p>It is also said, <a href="http://forum.arduino.cc/index.php?topic=216889.0" rel="noreferrer">in post #7</a>, that these pins are actually equivalent to an X3 connector, <a href="http://make.kosakalab.com/arduino/bootloader/index_en.html" rel="noreferrer">as found on the older Arduino Dicimila/NG/Duemilanove</a> boards.</p>
<p><a href="https://i.stack.imgur.com/XaIc0.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/XaIc0.jpg" alt="X3 header on Diecimila" /></a></p>
<p>and those can (evidently) be used like so, as a bit banged SPI,</p>
<p><a href="https://i.stack.imgur.com/0LYBD.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/0LYBD.jpg" alt="Connecting X3 header to ISP header on Diecimila" /></a></p>
<p>It should be noted that the RI, CTS, DCD and DSR (labelled RSD) pins are available, along the sides of the original FTDI breakout board. So, does the breakout board with the ISP header just provide access to these same signals using a different header?</p>
<p>I am a little confused - have I just over thought this, and this breakout board is simply an ISP/ICSP header <em>and</em> an FTDI connector rolled into one board (when used with the appropriate version of avrdude)? Or is it not a usual ISP header? I can not find any <em>specific</em> documentation relating to this type of breakout board, <a href="http://forum.arduino.cc/index.php?topic=216889.0" rel="noreferrer">as stated in post #4</a>.</p>
<p>Can anyone say, definitively, what these six pins are for? If they are not a normal ISP header, could you provide a detailed way of using it? A schematic would be helpful.</p>
 76053: <h2>Arduino IDE:</h2>
<p>Additional programmers.txt entries to use  &quot;FT232R as ISP&quot;</p>
<pre><code>ftdi232rasisp.name=FT232R as ISP
ftdi232rasisp.communication=usb
ftdi232rasisp.protocol=arduino-ft232r
ftdi232rasisp.program.tool=avrdude
ftdi232rasisp.program.extra_params=
</code></pre>
<p>avrdude.exe with FTDI bitbang support
<a href="https://github.com/mariusgreuel/avrdude" rel="nofollow noreferrer">https://github.com/mariusgreuel/avrdude</a></p>
 10794: <p>There's a thread about that on <a href="http://forum.arduino.cc/index.php?topic=216889.0" rel="noreferrer">the Arduino Forum</a> - someone had a similar question.</p>

<hr>

<p>I found a schematic (below) which is <em>not</em> for that board, however the header pins are labelled the same as you found, so it is plausibly similar. </p>

<p><a href="https://i.stack.imgur.com/5vsiA.png" rel="noreferrer"><img src="https://i.stack.imgur.com/5vsiA.png" alt="FTDI board schematic"></a></p>

<p>It appears that header is used for "Synchronous Bit Bang mode" as documented here: <a href="http://www.ftdichip.com/Support/Documents/AppNotes/AN_232R-01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R.pdf" rel="noreferrer">Bit Bang Modes For The FT232R and FT245R (Application Note AN_232R-01, Document Reference No.: FT_000339)</a></p>

<hr>

<p>You can in fact configure that header to be an SPI programmer, as described for example, in <a href="http://diyduino.blogspot.com.au/2012/08/ft232r-bitbang-programmer.html" rel="noreferrer">FT232R Bitbang Programmer</a>.</p>

<hr>

<p>I made up a test as I had a similar board in my parts drawer:</p>

<p><a href="https://i.stack.imgur.com/C3XQg.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/C3XQg.jpg" alt="FTDI board front"></a></p>

<p>It had provision for a 6-pin header similar to yours. Turning the board over we can see that they were labelled exactly the same as yours:</p>

<p><a href="https://i.stack.imgur.com/JqcK0.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/JqcK0.jpg" alt="FTDI board back"></a></p>

<p>I soldered on a header (in yellow, to be consistent) giving me this:</p>

<p><a href="https://i.stack.imgur.com/4HcqW.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/4HcqW.jpg" alt="FTDI board with header"></a></p>

<p>I added a white dot to indicate pin 1 (visible on the edge) so I plug the cable in the right way around.</p>

<hr>

<p>When I attempted to use the board I got this message from avrdude:</p>

<blockquote>
  <p>avrdude: error: no libftdi or libusb support. Install libftdi1/libusb-1.0 or libftdi/libusb and run configure/make again</p>
</blockquote>

<p>So, it had to be compiled from scratch! I am using Ubuntu 14.04 if you are trying to follow along. :)</p>

<hr>

<h2>Download avrdude</h2>

<p>Go to the site <a href="http://www.nongnu.org/avrdude/" rel="noreferrer">http://www.nongnu.org/avrdude/</a></p>

<p>I downloaded version 6.3 source: <a href="http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz" rel="noreferrer">http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz</a></p>

<h2>Install libusb and libftdi</h2>

<p>Before compiling I had to grab libusb and libftdi:</p>

<pre><code>sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libftdi-dev
</code></pre>

<h2>Compile avrdude</h2>

<p>Now we make avrdude after extracting the archive and navigating to its folder:</p>

<pre><code>./configure --enable-libusb --enable-libftdi
make
</code></pre>

<h2>Find correct configuration</h2>

<p>Inside the <code>avrdude.conf</code> file which comes with avrdude I found (after some pondering) this seems to be the correct entry:</p>

<pre><code># see http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html
# Note: pins are numbered from 1!
programmer
  id    = "arduino-ft232r";
  desc  = "Arduino: FT232R connected to ISP";
  type  = "ftdi_syncbb";
  connection_type = usb;
  miso  = 3;  # CTS X3(1)
  sck   = 5;  # DSR X3(2)
  mosi  = 6;  # DCD X3(3)
  reset = 7;  # RI  X3(4)
;
</code></pre>

<p>The mapping of pins to numbers works like this... From the <a href="http://www.ftdichip.com/Support/Documents/AppNotes/AN_232R-01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R.pdf" rel="noreferrer">PDF</a> about bit bang mode mentioned above we have this table, with annotations in blue by me:</p>

<p><a href="https://i.stack.imgur.com/KGKOn.png" rel="noreferrer"><img src="https://i.stack.imgur.com/KGKOn.png" alt="Bit bang mode pins"></a></p>

<p>The numbers refer to the bit number (i.e. in the range 0 to 7) in the "bit banged" data byte. We can see from the earlier schematic that, for example, MISO on the ICSP header is wired to CTS on the FT232RL. Thus MISO is data bit 3, which we tell avrdude in the above configuration. Similarly SCK is data bit 5, and so on.</p>

<p>I attempted to test like this:</p>

<pre><code>./avrdude -C avrdude.conf -carduino-ft232r -pm328p  -v
</code></pre>

<h2>Fix permissions</h2>

<p>I got a permissions error which was fixed by creating a file in the folder <code>/etc/udev/rules.d/</code> called <code>71-FTDI.rules</code>. Inside this is:</p>

<pre><code>SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE:="0666"
</code></pre>

<p>The numbers may vary for your board. You need to find the vendor and product ID. In Ubuntu you can do <code>lsusb</code> and see (amongst other things):</p>

<pre><code>Bus 003 Device 061: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
                       ^^^^ ^^^^
</code></pre>

<p>Note the two hex numbers, which get copied into the rules file.</p>

<p>After doing that, tell the system to reload the rules:</p>

<pre><code>sudo udevadm control --reload-rules
</code></pre>

<p>Then unplug and replug the FTDI board to get it to notice the new permissions.</p>

<h2>Test board detection</h2>

<p>Finally, the avrdude line above works and reads the chip:</p>

<pre><code>avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD

avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD
avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)

avrdude done.  Thank you.
</code></pre>

<p>I had mine plugged into an ATmega328P.</p>

<hr>

<h2>Example connected to a Diavolino</h2>

<p><a href="https://i.stack.imgur.com/VOm0G.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/VOm0G.jpg" alt="Programming an Atmega328P"></a></p>

<p>Once we have got this far you just connect the FTDI board to your target board with a straight-through cable.</p>

<hr>

<h2>Summary</h2>

<p>The FTDI board you have (and the one I have) can be used as a ICSP programmer for the AVR chips, as described above. Thus a simple board can be both a USB to serial converter, and also an ICSP programmer.</p>

<p>I see similar boards selling on eBay for around $5 so that is probably quite a cheap programming option.</p>
