Arduino Pro Mini 3.3v and FTDI 3.3v upload errors

SOLVED (skip down to the solution toward the bottom if you are in a hurry)

I originally asked for help in this post:viewtopic.php?f=32&t=27105 but thought I should post my own solution since I was having a slightly different problem and what worked for those individuals did not work for me.

Symptoms:

When trying to upload a sketch, any sketch, to an Arduino Pro Mini 3.3v using an FTDI Breakout Board 3.3v I received the following errors from the IDE:

avrdude: stk500_getsync(): not in sync: resp 0x00

avrdude: stk500_disable(): protocol error, expect 0x14, resp 0x51

When connected to the FTDI board which was in turn connected to the computer via USB I would get eight blinks from the LED by pin 10 and the red LED would remain illuminated. I clicked upload on the IDE the Arduino Pro Mini would reset, LED by pin 10 would blink a couple times, then TX red LED on FTDI board would flash three times. The result would always be these errors.

Let me first describe what I was using and what I tried:

Hardware and Software:

  • - Arduino Pro Mini 3.3v w/ATmega328 (I actually have two of these and BOTH were failing)
  • - FTDI Breakout Board 3.3v
  • - Arduino Uno (not part of the original problem but used in the solution. I never had any issues uploading sketches to the Uno at any time)
  • - Appropriate USB cables
  • - Arduino IDE v0022
  • - FTDI VCP Drivers v2.08.14
  • - Windows 7 64-bit
  • If you are like me then unfortunately you have spent about three weeks and countless hours sifting through forum posts on Sparkfun.com and Arduino.cc trying every possible solution to resolve this error. I tried all of the solutions listed below and many others, NONE resolved the problem:

  • - checking and rechecking, soldering and resoldering headers on the Arduino Pro Mini to ensure there isn't a faulty connection (according to most other posts this resolved most instances of these errors)
  • - buying new USB cables
  • - replacing the FTDI board (Since i never had issues uploading sketches to my Uno and both
  • - considering replacing the Arduino Pro Mini
  • - wired the FTDI to the Arduino without using the programming headers
  • - checked, rechecked, and triple checked port and board setting in the Aduino IDE
  • - tried different reset timing and sequences
  • - uninistalled and reinstalled all drivers and IDE
  • - changed port settings, numbers, baud rate, etc
  • - turned off my firewall
  • I quickly started to believe the problem was with my FTDI board, PC, or settings so I used the tests below to elliminate those variables.

    FTDI loopback test:

  • - You can verify proper operation of the FTDI board by putting a jumper on the TX and RX pins
  • - then connecting the FTDI via USB to you computer.
  • - Then run the Arduino IDE and open the Serial Monitor.
  • - Enter a character in the input textbox and click "send". If the FTDI board is working and drivers and settings are correct you should see your input echoed in the textbox below.
  • Program another Arduino using the FTDI board:

    So I happen to have an Arduino Uno handy and this really saved my behind. Since I never had any issues uploading sketches to the Uno at any point during this headache Sparkfun tech support suggested I attempt to upload a sketch to the Uno using my FTDI board. I was hesitant at first thinking the Uno required 5v and the FTDI board that I had only supplied 3.3v. To my surprise, it worked!

  • - You only really need to connect the RX, TX, VCC, and GND for the communication to work and this is how I did it:

    FTDI ----Arduino Uno

    RX-------TX (pin 1)

    TX-------RX (pin 0)

    3v3------3.3V

    GND-----GND

  • - connect the FTDI via USB to my computer
  • - open the Arduino IDE and selected the correct COM port and Board (Uno in this case).
  • - This next step is important because I did not connect the RESET between the FTDI and Uno. When I clicked on upload i watched the FTDI board intently, when the TX LED (the red one and may be rather dim) flashed the first time I pressed the RESET button on the Uno.
  • - If all goes well you should successfully upload the sketch to the Uno.
  • Both of the above tests proved my FTDI hardware, drivers, and settings were correct. That pretty much left me with the possibility of two faulty Arduino Pro Minis. Since the LED activity on the Arduino Pro Minis appeared to indicate the hardware was functioning correctly I turned toward troubleshooting the bootloader.

    SOLUTION Reinstall the Arduino Pro Mini Bootloader using my Arduino Uno as an ISP Programmer!

    To resolve the errors I burned the bootloader to the Arduino Pro Minis using my functioning Arduino Uno as an ISP. For the most part I followed the instructions here: http://www.sparkfun.com/tutorials/247 adhering to Option 1 but using the Arduino IDE to burn the bootloader. Here is what I did step by step:

    1. Connect the Arduino Uno via USB to the PC

    2. Open the Arduino IDE

    3. Select the correct COM port and board (Arduino Uno)

    4. Open the ArduinoISP sketch (File>Examples>ArduinoISP)

    5. Upload the sketch. once complete your Arduino Uno is now programmed to be an ISP programmer. This is great because I really didn’t want to buy a seperate programmer.

    6. Power the Uno off and wire the Uno to the Arduino Pro Mini in the following fashion:

    Uno---------------Pro Mini

    3.3v-----------------------VCC

    GND------------------------GND

    Digital Pin 11(MOSI)----pin 11 (MOSI)

    Digital Pin 12(MISO)----pin 12 (MISO)

    Digital Pin 13(SCK)-----pin 13 (SCK)

    Digital Pin 10----------RST

    1. Power on the Uno

    2. Select the correct COM port

    3. IMPORTANT: Select board Arduino Pro Mini 3.3v w/ATmega328 as the board we are uploading to

    10.from the Tools menu, select Burn Bootloader > w/Aduino as ISP

    This was a magical moment for me. All kinds of LEDS were blinking and flashing. After a few seconds the IDE said: Done burning bootloader, thank you. If this is also your result you have successfully reinstalled the bootloader on you Arduino Pro Mini. Next, connect the FTDI board to the Arduino Pro Mini and attempt to upload a sketch. I was so excited that this worked I let my wife sucker me into going to the arts and crafts store so she could buy some new sewing thread. Don’t fall for this. Every sketch I have uploaded to my Arduino Pro Minis has been successful form this point on. The end.

    Thanx!

    You saved me at least two of those three weeks :roll:

    I bought 5 pro-minis 3,3v/8mhz at german reseller Watterott, the first i used worked perfectly, the next two refused upload with this error. After using an uno and writing new standard-bootloaders via arduino-ide everthing is perfect. This seems to be a general error in some (newer?) pro-minis.

    I am having the same problems with my 3.3v Pro Mini’s.

    I’ve tried doing the Aduino as ISP method with a Duemilanove but keep getting the error:

    avrdude: stk500_getsync(): not in sync: resp=0x15

    Any ideas what the problem could be? Do I need an UNO?

    Thanks!

    Interesting. Do you have a theory as to why reloading the bootloader fixed the problem?

    whompalompa:
    I am having the same problems with my 3.3v Pro Mini’s.

    I’ve tried doing the Aduino as ISP method with a Duemilanove but keep getting the error:

    avrdude: stk500_getsync(): not in sync: resp=0x15

    Any ideas what the problem could be? Do I need an UNO?

    Thanks!

    How far are you able to get in the process? Do you get these errors when uploading regular sketches to the duemilanove?

    JChristensen:
    Interesting. Do you have a theory as to why reloading the bootloader fixed the problem?

    I’m certainly no expert on the bootloader so I don’t really know what was wrong. However, I do remember reading somewhere in the sea of posts on this topic that some bootloader versions where not waiting long enough after power on or reset to determine if data was coming in on the serial input. Since it wasn’t waiting long enough, communication could not be established to upload sketches which caused our errors. Like I said, I don’t know for sure if this was the issue but it gave me the idea to try reinstalling the bootloader.

    whompalompa:
    Any ideas what the problem could be? Do I need an UNO?

    I dont think so, but maybe you need a specific version of the arduino sdk and the included arduino-isp.pde, I am using arduino-22.

    rubinoae,

    Thanks so much for posting your solution. I am just in the process of moving a project from a Uno breadboard to its final (i hope) form on a 3.3v pro mini and I encountered this problem. Fortunately, I didn’t have to follow (and probably couldn’t have followed) your difficult troubleshooting path. I just followed your quite clear instructions and PRESTO! Also, I learned something about methodical troubleshooting.

    That’s what I love about boards like this and the Arduino universe: lot’s of helpful folks out there.

    Thanks, again! :smiley:

    Jon

    rubinoae:

    whompalompa:
    I am having the same problems with my 3.3v Pro Mini’s.

    I’ve tried doing the Aduino as ISP method with a Duemilanove but keep getting the error:

    avrdude: stk500_getsync(): not in sync: resp=0x15

    Any ideas what the problem could be? Do I need an UNO?

    Thanks!

    How far are you able to get in the process? Do you get these errors when uploading regular sketches to the duemilanove?

    I have a Duemilanove and get the same error. It did upload successfully to the Duemilanove, but when I select “Burn Bootloader” I get the avrdude: stk500_getsync(): not in sync: resp=0x15 error. Thoughts, anyone?

    SwissFreek:

    rubinoae:

    whompalompa:
    I am having the same problems with my 3.3v Pro Mini’s.

    I’ve tried doing the Aduino as ISP method with a Duemilanove but keep getting the error:

    avrdude: stk500_getsync(): not in sync: resp=0x15

    Any ideas what the problem could be? Do I need an UNO?

    Thanks!

    How far are you able to get in the process? Do you get these errors when uploading regular sketches to the duemilanove?

    I have a Duemilanove and get the same error. It did upload successfully to the Duemilanove, but when I select “Burn Bootloader” I get the avrdude: stk500_getsync(): not in sync: resp=0x15 error. Thoughts, anyone?

    Before you select burn bootloader are you changing the target board from duemilanove to pro mini? I thought this step was a bit counter intuitive but you are burning the bootloader to the pro mini, not the diemilanove.

    rubinoae:
    Before you select burn bootloader are you changing the target board from duemilanove to pro mini? I thought this step was a bit counter intuitive but you are burning the bootloader to the pro mini, not the diemilanove.

    I did. I’ll give it another try tomorrow. I hope I can get it to work, it’d be a shame not to be able to use my mini for this project. It goes onto a protoboard so nicely…

    SwissFreek:

    rubinoae:
    Before you select burn bootloader are you changing the target board from duemilanove to pro mini? I thought this step was a bit counter intuitive but you are burning the bootloader to the pro mini, not the diemilanove.

    I did. I’ll give it another try tomorrow. I hope I can get it to work, it’d be a shame not to be able to use my mini for this project. It goes onto a protoboard so nicely…

    Can you take a picture of your wiring so we can see how you have it set up?

    rubinoae:
    Can you take a picture of your wiring so we can see how you have it set up?

    Sort of hard to see that it’s all wired properly, but here are some pics:

    http://i752.photobucket.com/albums/xx16 … 115823.jpg

    http://i752.photobucket.com/albums/xx16 … 115850.jpg

    SwissFreek,

    Your wiring is correct. In order to use the Duemilanove board as a bootloader, you’ll need to disable the auto-reset. If you place a 120 Ohm resistor between 5V and reset pins of your Duemilanove board, it will allow you to use your board as a bootloader. This procedure, along with some alternatives is described here:

    http://www.arduino.cc/playground/Main/D … Connection

    After doing this, you should be able to follow rubinoae’s instructions to install the proper bootloader on your 3.3V Pro Mini.

    I hope this helps.

    Regards,

    Jeff

    Jeff_Carlson:
    SwissFreek,

    Your wiring is correct. In order to use the Duemilanove board as a bootloader, you’ll need to disable the auto-reset. If you place a 120 Ohm resistor between 5V and reset pins of your Duemilanove board, it will allow you to use your board as a bootloader. This procedure, along with some alternatives is described here:

    http://www.arduino.cc/playground/Main/D … Connection

    After doing this, you should be able to follow rubinoae’s instructions to install the proper bootloader on your 3.3V Pro Mini.

    I hope this helps.

    Regards,

    Jeff

    Awesome, thanks! Guess that’s what I get for not RTFM…

    I just picked up two Pro Mini 3.3’s and I’m getting errors as well when trying to upload through my FTDI board. My error is a little different:

    avrdude: stk500_recv(): programmer is not responding
    

    I’ve seen this on my Duemilanove if, for example, I have the wrong board selected to upload to. Now, on several other posts people talked about a certain LED blinking sequence when the board was first powered on–i didn’t have anything on mine, just a quick single blink of the green LED on power up (same as on reset). Maybe this is a clue?

    I figured I would try the bootloader method but no dice. :frowning: I set up my Uno and followed instructions to the letter. Here’s the error I’m getting:

    avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14
    
    avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
    avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10
    avrdude: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.
    
    avrdude: stk500_disable(): unknown response=0x12
    

    The mini blinks a couple of times but that’s about it. So if the bootloader can’t event be set, what else can I do? Is it possible I really do have two bad boards? I’ve been playing with Arduinos for more than a year now so I’m pretty confident this isn’t just a noob mistake. It’s my first time using a Mini Pro, however. Anyone have any advice?

    Unfortunately we had a batch of the 3.3V Pro Minis get the 5V bootloader in April 2011. This prevents the computer from seeing the chip making it impossible to upload code. Installing the correct bootloader should solve the problem. If you have any questions on how to install the bootloader or don’t have the means to do so (or have any other question) send us an email at techsupport sparkfun com. Sorry about the problem.

    Finally got my resistor pack from Sparkfun today (no fault of theirs, I accidentally sent it to my parents’, go me). This solution works as advertised. Thanks for the help guys!

    Cannikin,

    If you have the correct board chosen, then I would do as rubinoae suggests in his first post and check the functionality of the FTDI board. Simply place a jumper across the Rx and Tx lines, and see if you observe an echo in the serial monitor of what you type.

    Alternatively, you can wire your Duemilanove to your FTDI board and try to upload a sketch by the following connections:

    FTDI → Duemilanove:

    Gnd → Gnd

    CTS → Gnd

    3.3V → 3.3V

    Tx → Rx

    Rx → Tx

    DTR → Reset

    I believe this is the correct wiring, but you should probably wait for someone else to double check that as I do not have not have one in front of me at the moment. It may be necessary to forgo the DTR-> Reset connection and instead manually reset during upload, but I am unsure of that.

    Also, It might be a good idea to double check that you have received the 3.3V version of the FTDI board and not the 5V version.

    If your Duemilanove works with its own FTDI chip, then this should rule out any driver issues you could be having, but it might wise to reinstall the drivers just in case.

    Finally, I would suggest you check your wiring and solder connections.

    I hope you can get it working, as I know these problems are a pain to track down. If you’ve confirmed that your FTDI board is working and are still unable to install the bootloader with your Duemilanove, then I would suggest sending the chip back to SparkFun as they are very good about replacing such things.

    Jeff

    Sparkfun sent me a couple of new boards and everything was fine–they programmed on the first try, no problem! Thanks Sparkfun and Michelle!