ClockTamerFirmwareUpdate

Democratising Wireless Innovation
Jump to navigation Jump to search

ClockTamer 1.30

  1. Download dfu-programmer (available both for Linux and Windows)
  2. On windows you also need to install libusb drivers (included with dfu-programmer)
  3. Download the latest firmware Tamer.hex and Tamer.eep
  4. Enter firmware update mode.
    1. Power off ClockTamer - disconnect power cord AND mini-USB cable.
    2. Short-circuit `nSS` pin of `GND` (full connector pinout is available [ClockTamerProtocolSPI#ClockTamer_pinout here]). You can short these pins on the bottom side header using any wire or office clip.
    3. Connect ClockTamer to a computer with mini-USB cable. LED should be flashing immediately.
    4. Remove short-circuit from `nSS` to `GND`.
  5. Update flash (e.g. on windows)
dfu-programmer.exe atmega32u2 flash --debug=100 --suppress-bootloader-mem c:\tools\clock-tamer\board\FW\Tamer.hex
  1. Update eeprom (e.g. on windows)
dfu-programmer.exe atmega32u2 flash-eeprom --debug=100 c:\tools\clock-tamer\board\FW\Tamer.eep

NOTE: Since there's no option to read firmware back from device on ClockTamer these commands fail. But it should fail only on validating operation, like this:

<nowiki>

c:\tools\dfu-programmer-win-0.6.0>dfu-programmer.exe atmega32u2 flash --debug=100 --suppress-bootloader-mem c:\tools\clock-tamer\board\FW\Tamer.hex

    target: atmega32u2
   chip_id: 0x2ff0
 vendor_id: 0x03eb
   command: flash
     quiet: false
     debug: 100

device_type: AVR


command specific below ------

  validate: true
  hex file: c:\tools\clock-tamer\board\FW\Tamer.hex

commands.c:327: write 14488/28672 bytes atmel.c:1010: atmel_flash( 0022FEAC, 01A40048, 0, 28672, 128, false ) atmel.c:847: atmel_select_page( 0022FEAC, 0 ) atmel.c:1085: valid block length: 11836, (0 - 11836) atmel.c:1222: atmel_flash_block( 0022FEAC, 01A40048, 0, 1024, false ) atmel.c:1179: atmel_flash_populate_header( 0022F8B0, 0, 1024, false ) atmel.c:1246: 1024 bytes to MCU 000000 atmel.c:1132: atmel_flash_populate_footer( 0022F8B0, 0022FCD0, 65535, 65535, 65535 ) atmel.c:1256: message length: 1072 atmel.c:1105: Next first: 1024 atmel.c:1107: valid block length: 10812 atmel.c:1222: atmel_flash_block( 0022FEAC, 01A40848, 1024, 1024, false ) atmel.c:1179: atmel_flash_populate_header( 0022F8B0, 1024, 1024, false ) atmel.c:1246: 1024 bytes to MCU 000400 atmel.c:1132: atmel_flash_populate_footer( 0022F8B0, 0022FCD0, 65535, 65535, 65535 ) atmel.c:1256: message length: 1072 atmel.c:1105: Next first: 2048 atmel.c:1107: valid block length: 9788 atmel.c:1222: atmel_flash_block( 0022FEAC, 01A41048, 2048, 1024, false ) atmel.c:1179: atmel_flash_populate_header( 0022F8B0, 2048, 1024, false ) atmel.c:1246: 1024 bytes to MCU 000800 atmel.c:1132: atmel_flash_populate_footer( 0022F8B0, 0022FCD0, 65535, 65535, 65535 ) atmel.c:1256: message length: 1072 atmel.c:1105: Next first: 3072 .... atmel.c:1246: 572 bytes to MCU 002c00 atmel.c:1132: atmel_flash_populate_footer( 0022F8B0, 0022FB0C, 65535, 65535, 65535 ) atmel.c:1256: message length: 620 atmel.c:1105: Next first: 11836 atmel.c:1107: valid block length: 0 atmel.c:1109: sent: 11836, first: 11836 last: 11836 Validating... atmel.c:579: atmel_read_flash( 0022FEAC, 0x00000000, 0x00007000, 002C4210, 28672, false ) atmel.c:847: atmel_select_page( 0022FEAC, 0 ) atmel.c:510: __atmel_read_page( 0022FEAC, 0, 28672, 002C4210, false ) atmel.c:537: result: -5 Unknown error. Try enabling debug. commands.c:346: Error while validating. Error while validating.<nowiki>