Arduino FIO upload problem using FTDI cable

Surely someone has out there has done this successfully. I've done a lot of searching, but cannot find a solution.

OS: OS X 10.5.8
Board: Arduino FIO 3.0 (Sparkfun)
Arduio environment: 0018
FTDI cable: brand new from Adafruit

This is my first try with the FIO. When I connect the cable, the LED blinks once per second, so the FIO is apparently getting power.

I'm trying to upload a sketch that works on my "regular" Arduinos. But, for whatever reason, I can't get the upload with the FTDI cable to work. Usually I get these messages:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00

Sometimes I just get the "not responding" message twice.

I've chosen Arduino FIO from the board menu (which appeared after I added a hardware/fio/boards.txt file to my Arduino directory). And the correct /dev/tty.usbserial-xxxxxxxx has been chosen from the port menu.

If you need more info, please ask. Any help would be much appreciated.

There is an issue with FTDI cables (but not with some of the breakout boards). The one I know of doesn't provide the DTR signal, which triggers a reset of the board and thereby starting the bootloader. Instead this cable provides RTS.

On windows there is an option "set RTS on close" that should cure this issue.

On linux you can use a wrapper script for avrdude. This might work on a mac as well. There should be a post about this somewhere here and on the adafruit forum as well.

I had the exact same problem. My solution was:

Right after you click "Upload" hit the reset button on the FIO as soon as you see "Binary sketch size: 920 bytes (of a 30720 byte maximum)". For some reason this resets it at the exact right time and it will upload.

i was having the same problem too, but i hadn't installed the fio library since you can just use the pro or pro mini 8hz, the tip from tokamak85 worked for me as well
Yea :smiley:

I want to thank you guys for the responses. When I read what madworm said about the FTDI cable I ordered a breakout board (overnight) from Sparkfun.

Getting the board was an event. FedEx had a mechanical problem with an aircraft so the "overnight" turned into 2nd day. Then, when I finally got the package (Friday the 6th), it had the wrong parts in it! But Sparkfun made good and did a Saturday (the 7th) delivery.

Needless to say, the Sparkfun FTDI Basic Breakout - 3.3V (http://www.sparkfun.com/commerce/product_info.php?products_id=9873) worked perfectly. I just wish I'd never gone down the FTDI cable path.

As far as trying to press the reset button at the proper moment, that never worked for me. I must have tried that 100 times and at varying points before/during/after the compile/upload. And that was before I read the post from tokamak85. I tried it a few dozen times more after reading that post (but before I got the Basic Breakout board) but it still never worked for me.

Thanks to all! Now on to the next problem...

I'm glad you got the breakout board working, but I'm surprised the FTDI cable was giving trouble. I just tried mine (a 5V version) and it worked fine under Mac OS X 10.6.4. I'm pretty sure that Mac OS X treats the DTR and RTS lines the same way (i.e. both are asserted when the serial port is opened and de-asserted when it's closed). Were you using the 5V or 3.3V cable?

I have the 3.3 version (FTDI Serial TTL-232 USB Cable : ID 70 : $19.95 : Adafruit Industries, Unique & fun DIY electronics and kits) from Adafruit purchased just for the FIO. (The only reason I ordered if from Adafruit was that I was getting some other items and it was convenient.) Perhaps it's defective? Any, relatively easy, way to tell?

Thanks for your interest/response!

avrdude seems to be able to use RTS for reset instead of DTR, depending on the cable/programmer combination. For example, the "dasa" programmer uses RTS for reset. AFAIR, avrdude used RTS for arduino in earlier versions, this is why reset did not work at those days and the original bootloader had a long delay so that you could reset it manually.

For a cable, it makes much more sense to provide RTS than DTR, since you can do flow-control with RTS. Most embedded systems prefer RTS over DTR. Thus, if a cable manufacturer has to choose, he has to choose RTS if he wants to have any customers at all.

Getting this Basic Breakout Board here in Germany is not that easy. I think it would be great if programming would work with an off-the-shelf cable which you can buy virtually anywhere. I pretty much like this FTDI-USB cable. This is what I was looking for for a long time. The question is, which changes does avrdude need for using RTS to do the reset. Maybe it's just an additional section in avrdude.conf?

jw3 said:
...if a cable manufacturer has to choose, he has to choose RTS if he wants to have any customers at all.

Well, the maker of my cable got one more customer! Obviously a dissatisfied one though!

I guess you could say it's my fault since I didn't do enough research. Well kind of. I will point out that neither this page http://arduino.cc/en/Main/ArduinoBoardFio nor this one http://arduino.cc/en/Main/ArduinoBoardFioProgramming mention anything about getting the "right" FTDI cable. In fact, the 2nd page has a link to Adafruit.com (where I got my cable). So I don't really see how a person could easily know that they needed a "special" FTDI cable.

So perhaps those pages should be modified to reflect the issue?

I've checked avrdude sources: avrdude asserts both, RTS and DTR for the reset. So the FTDI cable should actually work. You just need to make sure that you connect RTS from the cable to DTR on the board.