SMD UNO fail to load avrdude: stk500_disable(): protocol error, expect=0x14, res

New SMD UNO from MakerSHED running on COM 8, Win2000 SP4, Celeron, 748MB. Device Manager shows all OK, Atmega328P installed.

When connected via USB, green ON led stays lit, pin 13 L led flashes 1 Hz

Uploading BLINK consistently produces the following error;

Binary sketch size: 1018 bytes (of a 32256 byte maximum)

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x41

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

During upload, L, RX and TX flash at various times. No anti-virus, conflicting USB, or other problems evident.

Using "Hold reset until upload begins..." technique produces fast triplets blinking on L during and after conclusion of upload, but with same error output. Pressing reset after upload does NOT stop fast triplets.

Suggestions? This does NOT seem to be an isolated problem. TIA to the usual experts.

Small correction. UNO has 28 pin DIP Atmel chip, NOT SMD processor. Everything ELSE is SMD.

Spent a day with same error (Uno, Vista 32). Here's what fixed it for me:

  1. Uninstalled Arduino from device manager & deleted driver. (with Arduino unplugged)
  2. Connect Arduino to USB (should see green LED on & yellow bootloader "L" on)
  3. Select driver location **** do no not check box that says search sub folders*****

The little check box is key. The previous 50 attempts with the subfolder box checked installed the FTDI USB drivers which according to the FAQ are not compatible with the Atmega8U2 drivers:
"The Uno differs from all preceding boards in that it does not use the FTDI USB-to-serial driver chip. Instead, it features the Atmega8U2 programmed as a USB-to-serial converter."
After that step all is good again :slight_smile:

ljgoldberg

I have been struggling with the same issues.
Board works fine on XP machine, cord etc works to program a Duemilanove.

I have managed to record exactly what is happening using Procmon from SystemInternals Sysinternals Suite - Sysinternals | Microsoft Learn.
It seems that for some reason the IOport is not being opened.

Email me and perhaps we can collectively get to the bottom of this at m(dot)beckett(AT)amuri(dot)net

and for the record gbyerly thanks for the suggestion, but it didn't work and it seems to using the right driver....well at least the usbser.sys rather than the FTDI ones.

Mark

As I recall, markB is using USB 1. A fairly lengthy search has not indicated conclusively whether or not USB 1 works with the Uno.

I think USB 2 devices are supposed to be backwards compatible with USB 1 hosts, but perhaps I am wrong there.

Is there any user here who can conclusively say "I have USB 1 and the Uno works" or alternatively "The Uno does not support USB 1 ... it is documented "? I can't offhand see from the ATmega8U2 specs confirmation one way or the other.

It might be a firmware issue. For example, I recently discovered that the HardwareSerial library does not work correctly when programmed at 300 baud (you get 777 baud instead). Now most people probably don't use 300 baud these days so this might have gone unnoticed (well, it has gone virtually unnoticed, right?).

Similarly with USB 1, I expect that hosts that can run the Arduino software, but only have USB 1 ports, are rather thin on the ground, and thus it might not have been tested.

Update for those still following.
PCI USB2 card has been installed on my machine, and the VIA chipset disabled in BIOS.
Whilst this has cured my slow data transfers to memory sticks, it hasn't resolved the UNO issue.

Machine is as stated before running Win 2k SP4, and downloads fine to Duemilanove.
UNO board works fine on now three XP machines, but seems to not want to download on the win2k machine.

Driver has been installed and it reports as using usbser.sys (as it states in the uno.inf file).
Java seems to be using the USBSER000 (which uses symbolic links in windows) to access the port, but it just doesn't seem to go and grab the hex file that avr has made.

Port is there when it should, and not there when it shouldn't be.

Yeah yeah, upgrade to another OS, but with so much software already loaded onto this one, I don't want to go down this road just yet. Besides its not just me its affecting, so now its turned into a matter of pride....

If someone wants to see the captures, let me know.
Mark

SUCCESS
At long last I can upload to an UNO.

The cure was to use the Freetronics Eleven.inf from Installing the USB driver file for Windows | Freetronics
This has a different VID and PID in the inf.
I also used usbser.sys from an XP machine (ver 5.1.2600.2180)(latest version is here http://www.microsoft.com/downloads/en/details.aspx?FamilyId=F2F0A7C2-3B44-4D2E-9640-E0D21818763E&displaylang=en)

It now downloads and works as it should do.

Hopefully this may work for others having issues.

Mark

Just out of curiosity, Mark, do you actually have the Eleven board? Or was that just a lucky fix for a standard Uno board? I ask because that link leads to "Eleven (100% Arduino Uno Compatible)" - so if you have the Eleven, then clearly it isn't 100% compatible, but if you don't then they have found a fix for "real" Unos that might be worth knowing about.

The Uno does not use the FTDI USB Driver. The Uno driver is in the ".../drivers" folder and not in the ".../FTDI USB Drivers" folder. The driver name is "Arduino UNO.inf"

Nick
No I don't have the Eleven board.
It uses the ATmega8u2 and 328, and is compatible.

I looked at the inf files to see what is being loaded. Both the UNO and Eleven are the same, asking for layout.inf (which has where various things are) and mdmcfq.inf which details modems and bits and what settings to use.

The only apparent difference is that the Eleven had a different VendorID and PID from the UNO.
Now whether this actually made windows forget about what it thought it knew, and treat it as a fresh device.....

(the driver has previously been deleted and reloaded inc the other version, several times before)

It would be nice if it was able to cure someones elses issues.

omniwatch
Yes I am aware the UNO doesn't use the FTDI USB Driver, and where the UNO driver lives. Thanks
The issue has been that despite using this some others have had problems with it not communicating.
This is the culmination (for me) of two postings (I have added the comment in the other one), where several people have had issues.

The normal UNO driver works fine in three other machines but they were XP.

Thanks
Mark

Very interesting, thank you.

Well maybe (someone) add to the FAQ for installing, that if you have Windows 2000, and are having problems with your Uno, to try those .inf files.

I'll be trying the recommended fixes shortly.

Possibly unrelated, but for the sake of completeness;

  • We sell an instrument that uses an FTDI chip and the USB COM port that it creates when connected.
  • THAT FTDI software has been installed on this same Win2K machine.
  • The Arduino drivers, NOT FTDI were selected when the error occurs.

Thank you Nick, MarkB, and others.

Larry G.

Larry
Someone else was having issues with windows not loading a driver.
He finally turned off the PC which forced it to update itself.

Generally the USB ports are stil powered while the machine has power (or battery), and some BIOS settings also poll the USB to see if it needs to wake the pc up.

You could always add this to the list to try....

Cheers
mark

Can't remember if this was the error I got, but it was something similar...

I just burned one ATmega fine, pulled the 5V to the board with the new chip in, swapped for another blank chip, reconnected the 5V and the next burn didn't work. Pulled the USB lead, plugged it in (so both arduino's are powered up at the same time) and it worked! Dunno if this was random, but try powering them up at the same time if you have 2 Arduino boards. Dunno why it would work or not work, but might be worth a try if you're powering them up at 2 different times?

It could have been the ISP Arduino needs to be reset between writes though (and obviously reset is disabled if using an Uno). Dunno! :roll_eyes: