9. Upgrading Firmware
The program that runs on the USB AVR Programmer (the firmware) can be upgraded with bug fixes or new features.
- Version 1.00, released 2009-06-02: This is the original firmware for the programmer. All programmers that shipped from Pololu before 2009-12-17 were shipped with this version.
- Version 1.01, released on 2009-12-17: This version contains two bug fixes related to the programmer’s TTL serial port. Programmers that shipped from Pololu between 2009-12-18 and 2012-02-29 were shipped with this version.
- Version 1.03, released on 2010-12-22: This firmware version inverts the TTL serial port’s control signals so that 0 V corresponds to 1 and 5 V corresponds to 0.
- Version 1.04, released on 2011-04-29: This firmware version fixes a bug where if the sum of the minimum measured target VDD and the maximum allowed range of the target VDD exceeds 8160 mV, the programmer will incorrectly think that the AVR is not properly powered and refuse to program it. This version also fixes a problem with the optional RTS and DTR control signal outputs on the A and B lines.
- Version 1.05, released on 2011-07-07: This firmware version adds support for AVRs with 256 KB of flash memory and increases the programming timeout period from 350 ms to 1400 ms.
- Version 1.06, released on 2011-09-16: This firmware version adds support for AVR Studio 5.0 by changing the programmer’s signature from “AVRISP_2” to “STK500_2”.
- Version 1.07, released on 2012-02-29: This firmware version adds support for AVR Studio 5.1 and later by reporting the target voltage when it is requested.
- Version 1.08, released on 2016-04-28: This firmware version fixes an issue that prevents the programmer from working on macOS 10.11 or later.
Special Modified Firmware Versions
These special modified versions of the firmware make the programmer appear as a single virtual COM port instead of a composite device with two virtual COM ports and a native USB interface. These versions of the firmware do not support the TTL serial port, the SLO-scope, or the configuration utility. These versions were provided to support Mac OS X 10.6 or earlier.
- Special Modified Version 1.01nc, released 2010-12-9: This version is based on the standard firmware version 1.01.
- Special Modified Version 1.02nc, released 2010-12-21: This version is very similar to 1.01nc but it has improved support for older versions of Mac OS X.
- Special Modified Version 1.06nc, released 2011-09-16: This version is based on the standard firmware version 1.06.
- Special Modified Version 1.07nc, released 2012-02-29: This version is based on the standard firmware version 1.07.
Determining your firmware version
You can determine the firmware version by following the steps below.
To determine the programmer’s firmware version in Windows: If you only see one entry for the programmer in your Device Manager, then you have a special modified firmware version. If you see multiple entries for the programmer, then you have one of the standard firmware versions and you can determine the exact version number by following these steps:
- Double click on the “Pololu USB AVR Programmer” entry in the “Pololu USB Devices” list.
- In the Details tab, select the “Hardware Ids” property in the dropdown box.
- The first value displayed should be something like
USB\VID_1FFB&PID_0081&REV_0101&MI_04. The number after the
REV_is your revision code. If the revision code is “0001” then you have firmware version 1.00. Otherwise, your firmware version is determined by inserting a period in the middle of the revision code. For example, a revision code of “0107” corresponds to firmware version 1.07, while a revision code of “0101” corresponds to a firmware version 1.01.
To determine the programmer’s firmware version in Linux:
If you see only one device with a name matching
/dev/ttyACM* appear when you connect the programmer to your computer, then you have a special modified firmware version. If you see two such devices appear, then you have one of the standard firmware versions and you can determine the exact version number by following these steps:
- Run the following command:
lsusb -v -d 1ffb:0081 | grep bcdDevice
- This should output a line that has a number on it. That number is the revision code. If the revision code is “0.01” then you have firmware version 1.00. Otherwise, your firmware version is the same as the revision code.
To determine the programmer’s firmware version in Mac OS X:
If you see only one device with a name matching
/dev/tty.usb* appear when you connect the programmer to your computer, then you have a special modified firmware version. If you see two such devices appear, then you have one of the standard firmware versions and you can determine the exact version number by following these steps:
- Run the following command:
ioreg -p IOUSB -n "Pololu USB AVR Programmer" | grep bcdDevice
- This should output a line that has a number on it. If the number is 1 then you have firmware version 1.00. If the number is between 257 and 511, then you have firmware version 1.x, where x is equal to the number minus 256. For example, if the number is 263, then you have firmware version 1.07. If the number is 264, then you have firmware version 1.08.
To upgrade your programmer’s firmware, follow these steps:
- If you have changed any of the programmer’s settings in the configuration utility or with
PgmCmd, record your current settings because the firmware upgrade process will reset the settings.
- Download the desired version of the firmware here:
- Get your programmer into bootloader mode. If you are using Windows and your programmer has the standard firmware, this can be done by clicking the “Start Bootloader” button in the lower left corner of the configuration utility.
If you cannot use the “Start Bootloader” button for any reason (e.g. you are using a different operating system, you have installed a special modified firmware, or your firmware has been corrupted during an upgrade attempt), then you will need to use the programmer’s bootloader pads to get it into bootloader mode. To do this, first unplug everything from your programmer. Short out the two bootloader pads highlighted below by touching them both to a wire, screwdriver, or other conductive tool. While the pads are shorted out, plug the programmer in to USB. This may take a few tries. You can stop shorting out the pads after the programmer is plugged in to USB.
The Pololu USB AVR Programmer’s bootloader pads.
- Once the programmer is in bootloader mode, it will appear to your computer as a new device called “Pololu pgm03a Bootloader”.
- Windows 10, Windows 8, Windows 7, Vista, Linux, and Mac OS X: The driver for the bootloader will automatically be installed and you can proceed to the next step.
- Windows XP: When the “Found New Hardware Wizard” is displayed, follow steps 4–6 in Section 3.a to get the driver working.
- Once the bootloader’s drivers are properly installed, the green LED should be blinking in a double heart-beat pattern, and there should be an entry for the bootloader in the “Ports (COM & LPT)” list of your computer’s Device Manager in Windows.
- Use a terminal program (such as Br@y Terminal or screen) to connect to the bootloader’s virtual serial port. In Windows, you can determine the port name of the bootloader (e.g. COM5) by looking in the Device Manager. In Linux, you can determine the port name (e.g.
/dev/ttyACM0) by running
dmesg. In Mac OS X, you can determine the port name (e.g.
/dev/tty.usbmodem00022331) by running
ls /dev/tty.usb*. You can use any baud rate.
- Type the following lower-case letters into your terminal program to send them to the bootloader:
fwbootload. After each letter is sent, the bootloader should echo back the upper-case version of that letter. After you have finished typing this sequence, you should see “FWBOOTLOAD” as the output from the bootloader in your terminal program, and the programmer’s yellow LED should be on.
- Now send lower-case “
s”. The bootloader will spend a few seconds erasing the current firmware and settings, and then it will echo back an upper-case
S. Do not disconnect the programmer from the computer after this point until the upgrade is complete.
- Now send the contents of the downloaded firmware upgrade file to the bootloader. The firmware upgrade file is a plain-text (ASCII) file, so you can open it in a text editor (such as notepad), copy the whole thing, and then paste it into your terminal program. Br@y terminal has a “Send File” button you can use.
- While the file is being sent, the bootloader will send back period characters (“….”). This process will take about 5 seconds. When the firmware upgrade is complete, the bootloader should send back a pipe character (“|”) and turn the red LED on.
- You can now unplug your programmer, plug it back into the computer, and use the new firmware.
If you run into problems during or after the firmware upgrade, then it is possible that you accidentally corrupted the firmware on your programmer. The solution to this problem is to retry the firmware upgrade procedure. Even if your programmer is not recognized at all by your computer and you see no sign of life from it, you can get it back into bootloader mode by following the instructions in step 3.