DFU-PROGRAMMER(1)                                            DFU-PROGRAMMER(1)

       dfu-programmer - USB firmware upgrading for Atmel microcontrollers

       dfu-programmer target[:usb-bus,usb-addr] command [options] [parameters]
       dfu-programmer --help
       dfu-programmer --targets
       dfu-programmer --version

       dfu-programmer is a multi-platform command line Device Firmware Upgrade
       (DFU) based programmer for the flash memory on Atmel AVR, AVR32, XMEGA
       and 8051 based microcontrollers which ship with a USB boot loader.  It
       supports In System Programming (ISP) for developers and potentially
       product updates in the field.  Those boot loaders are patterned after
       the standard USB DFU 1.0 class specification, but depend on extensions
       defined by Atmel to the extent that standard DFU drivers will not work.

       To use it, first connect the device to be programmed and ensure that it
       comes up in DFU mode.  The microcontrollers come up in that mode as
       shipped by Atmel; or they may reenter that mode after a special
       hardware reset.  Then invoke this program to issue one or more DFU
       commands.  You will normally need to start by issuing the "erase"
       command; the default security policies prevent extracting firmware, to
       prevent reverse engineering of what is usually proprietary code.

       These chip names are used as the command line "target" parameter.

       8051 based controllers:
              at89c51snd1c, at89c51snd2c, at89c5130, at89c5131, at89c5132

       AVR based controllers:
              at90usb1287, at90usb1286, at90usb1287-4k, at90usb1286-4k,
              at90usb647, at90usb646, at90usb162, at90usb82, atmega32u6,
              atmega32u4, atmega32u2, atmega16u4, atmega16u2, atmega8u2

       AVR32 based controllers:
              at32uc3a0128, at32uc3a1128, at32uc3a0256, at32uc3a1256,
              at32uc3a0512, at32uc3a1512, at32uc3a0512es, at32uc3a1512es,
              at32uc3a364, at32uc3a364s, at32uc3a3128, at32uc3a3128s,
              at32uc3a3256, at32uc3a3256s, at32uc3a4256s, at32uc3b064,
              at32uc3b164, at32uc3b0128, at32uc3b1128, at32uc3b0256,
              at32uc3b1256, at32uc3b0256es, at32uc3b1256es, at32uc3b0512,
              at32uc3b1512, at32uc3c064, at32uc3c0128, at32uc3c0256,
              at32uc3c0512, at32uc3c164, at32uc3c1128, at32uc3c1256,
              at32uc3c1512, at32uc3c264, at32uc3c2128, at32uc3c2256,

       XMEGA based controllers:
              atxmega64a1u, atxmega128a1u, atxmega64a3u, atxmega128a3u,
              atxmega192a3u, atxmega256a3u, atxmega16a4u, atxmega32a4u,
              atxmega64a4u, atxmega128a4u, atxmega256a3bu, atxmega64b1,
              atxmega128b1, atxmega64b3, atxmega128b3, atxmega64c3,
              atxmega128c3, atxmega256c3, atxmega384c3, atxmega16c4,

       There are no mechanisms to implement gang programming.  By default, the
       first device that matches the id codes for the given target is
       selected. Many targets share the same id codes.  Accordingly, you will
       usually avoid connecting more than one device of a given family (AVR,
       XMEGA, AVR32 or 8051) at a time.

       The target may be qualified with the USB bus and address number of the
       device you wish to program. This allows programming multiple devices of
       the same family at the same time.

       All of these commands support the "global options".  Unless you
       override it, commands which write to the microcontroller will perform a
       validation step that rereads the data which was written, compares it to
       the expected result, and reports any errors.

       Note that unlike Atmel's BatchISP program, dfu-programmer will only
       perform a single operation at a time. Erasing and programming require
       separate commands.

       configure register [--suppress-validation] data
              Bootloaders for 8051 based controllers support writing certain
              configuration bytes.

       dump [--force] [--bin] [(flash)|--user|--eeprom]
              Reads the program memory in flash and output non-blank pages in
              ihex format to stdout.  Use --force to output the entire memory
              and --bin for binary output.  User page and eeprom are selected
              using --user and --eeprom.

       erase [--force]
              Erases all the flash memory.  For AT90 and ATmega type devices a
              chip erase must be performed before other commands become
              available.  Erase first checks if the memory is blank unless
              --force flag is set.

       flash [--force] [(flash)|--user|--eeprom] [--suppress-validation]
              [--suppress-bootloader-mem] [--serial=hexbytes:offset] file or
              Writes flash memory.  The input file (or stdin) must use the
              "ihex" file format convention for a memory image.
              --suppress-bootloader-mem ignores any data written to the
              bootloader memory space when flashing the device.  This option
              is particularly useful for the AVR32 chips.  The --force flag
              tells the program to ignore whether memory inside the program
              region is blank.  User page and eeprom are selected using --user
              and --eeprom.  The user space flash on AVR32 chips lies outside
              of the normal range of flash blocks and is designed to contain
              configuration parameters.  Bootloader configuration uses the
              last 4 to 8 bytes of the user page.  If this data is corrupted,
              the device will restart into the bootloader until valid data is
              used (see atmel doc7745 or doc32166).  --force is always
              required here.

       --serial provides a way to inject a serial number or other unique
       sequence of bytes into the memory image programmed into the device.
       This allows using a single .ihex file to program multiple devices, and
       still give each device its own unique serial number. For example,
       --serial=ABCDEF01:0x6000 would program the byte at 0x6000 with the hex
       value AB, the byte at 0x6001 with the value CD, and so on. There must
       be an even number of hex digits, but the sequence can be any length.
       The offset is assumed to be given in hex if it starts with a "0x"
       prefix, octal if it begins with a "0", otherwise is it assumed to be

              Sets the security bit on AVR32 chips.  This prevents the content
              being read back from the chip, except in the same session in
              which it was programmed.  When the security fuse is set, almost
              nothing will work without first executing the erase command.
              The only way to clear the security fuse once set is to use a
              JTAG chip erase, which will also erase the bootloader.

       get register
              Displays various product identifier bytes.

       launch [--no-reset]
              Launch the application by resetting the device. The --no-reset
              flag can be used to launch the device without a reset (jump to
              the start address of the program).

   Global Options
       --quiet - minimizes the output

       --debug level - enables verbose output at the specified level

   Configure Registers
       The standard bootloader for 8051 based chips supports writing data
       bytes which are not relevant for the AVR based chips.

       BSB - boot status byte
       SBV - software boot vector
       SSB - software security byte
       EB  - extra byte
       HSB - hardware security byte

   Get Register
       bootloader-version - currently flashed bootloader version
       ID1 - device boot identification 1
       ID2 - device boot identification 2
       manufacturer - the hardware manufacturer code
       family - the product family code
       product-name - the product name
       product-revision - the product revision
       HSB - same as the configure_register version
       BSB - same as the configure_register version
       SBV - same as the configure_register version
       SSB - same as the configure_register version
       EB  - same as the configure_register version

       None known.

       The at90usb series chips do not make available any read/write protect
       flags so the dump or flash command may fail with a less than helpful
       error message.

       To remove any write or read protection from any chips, a full chip
       erasure is required.  For AVR32 chips an erase operation over USB will
       remove protection until the device is rebooted. To remove the
       protection more permanently requires a JTAG erase (which will also
       erase the bootloader).

       You may need to be a member of the uucp group in order to have access
       to the device without needing to be root.

       Weston Schmidt <weston_schmidt@alumni.purdue.edu>


       Copyright (C) 2005-2014 Weston Schmidt

       This program is free software; you can redistribute it and/or modify it
       under the terms of the GNU General Public License as published by the
       Free Software Foundation; either version 2 of the License, or (at your
       option) any later version.

       This program is distributed in the hope that it will be useful, but
       WITHOUT ANY WARRANTY; without even the implied warranty of
       General Public License for more details.

       You should have received a copy of the GNU General Public License along
       with this program; if not, write to the Free Software Foundation, Inc.,
       51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA

DFU-PROGRAMMER                   May 28, 2014                DFU-PROGRAMMER(1)