I found many fairly big/bulky AVR-ISP programmers in the "middle" of cables (USB cable->programmer->cable->[adaptor->]6-pin connector) but I wanted something compact for occasional use I could carry around and only needed a standard micro USB cable so I made the AVRFT234 utilising the FTDI FT234X.

It can be used with recent versions of Avrdude (6.3) to program AVR IC and bootloaders for many AVR based Arduino and clone boards using the standard 6 pin SPI pinout header.

Pin 1 (MISO) of the AVRFT234 is indicated on the PCB with a triangle.

To add support to Avrdude for the AVRFT234 add the following configuration snippet to your avrdude.conf file. Under Linux the system level configuration file is frequently located at /usr/local/etc/avrdude.conf if installed from source.

programmer
  id = "avrft234";
  desc = "AVRFT234 an FT234XD based programmer";
  type = "ftdi_syncbb";
  connection_type = usb;
  usbvid = 0x403;
  usbpid = 0x6015;
  reset = 3;
  sck = 0;
  mosi = 1;
  miso = 2;
;

When using the programmer you need to specify the options to set the programmer (-c) to use and bitclock (-B).

  • "-c avrft234" matches the "id" in the above programmer definition.
  • "-B 200" Sets bitclock
avrdude -c avrft234 -B 200

By default the AVRFT234 does not provide power to the circuit being programmed.

If you need power to be supplied you can use the solder jumper on the side of the board to select either 3.3v or 5v. Please note the 3.3v can supply a maximum of 50mA (the 5v supply connects directly to the USB VBUS so this will normally be able to supply a lot more).

If you build your own AVRFT234 you will need to program the FT234X before first use. I use ftx_prog with the following options to setup the pins as GPIO and the product name to match what's used in avrdude.conf.

./ftx_prog --cbus 0 GPIO --cbus 1 GPIO --cbus 2 GPIO --cbus 3 GPIO \
 --cbus 4 GPIO --cbus 5 Keep_Awake --manufacturer "8086 Consultancy" \
 --product "AVRFT234"

With newer versions of avrdude you need to provide the serial number of the device on the avrdude command line (on Linux this can be found in the output of dmesg after plugging in or in /var/log/message or /var/log/kern.log etc. depending on your distribution.

Below is an example command line using the AVRFT234 with avrdude (replace SERIAL_NUMBER with the serial number AVRFT234).

avrdude -P usb:SERIAL_NUMBER -c avrft234 -B 200 -p atmega328p -U lfuse:w:0xff:m \
 -U flash:w:firmware.hex -U hfuse:w:0xd0:m -U efuse:w:0xfd:m