Difference between revisions of "Sync Box Firmware Upgrade using dfu-programmer"

From MCEWiki
Line 1: Line 1:
This describes how to upgrade [[Sync Box Firmware]] using the free dfu-programmer on linux.  This only applies to the microprocessor; often it is also necessary to upgrade the CPLD.
+
This describes how to upgrade [[Sync Box Firmware]] using the free <tt>dfu-programmer</tt> on linux.  This only applies to the microprocessor; often it is also necessary to upgrade the CPLD.
  
The https://dfu-programmer.github.io/ software can be installed in Ubuntu like this:
+
The dfu-programmer software can be installed in Ubuntu like this:
 
  sudo apt-get install dfu-programmer
 
  sudo apt-get install dfu-programmer
  
Make sure your version supports the sync box device:
+
Make sure your version supports the sync box device (<tt>at89c5131</tt>):
 
   
 
   
  act@wilson:~$ dfu-programmer --version
+
  $ dfu-programmer --version
 
  dfu-programmer 0.6.1
 
  dfu-programmer 0.6.1
  act@wilson:~$ dfu-programmer --targets
+
  $ dfu-programmer --targets
 
  targets:
 
  targets:
 
     at89c51snd1c      at89c51snd2c      at89c5130          '''at89c5131'''
 
     at89c51snd1c      at89c51snd2c      at89c5130          '''at89c5131'''
Line 14: Line 14:
 
     ...
 
     ...
  
Connect the sync box to the computer over USB.  From [http://www.phas.ubc.ca/~mce/mcedocs/hardware/tech_description/SyncBox_UserGuide_S589_502.pdf the manual]: "To reprogram BLJB or to get the bootloader to restart so that you can download new code, the
+
Connect the sync box to the computer over USB.  '''Don't do what [http://www.phas.ubc.ca/~mce/mcedocs/hardware/tech_description/SyncBox_UserGuide_S589_502.pdf the manual] says:''' it's wrong!  Instead to enable programming, do the following:
PSEN and RESET switches must be held down while the USB connector is inserted. Reset is
+
# Start with the sync box powered off and disconnected from USB
then released followed by PSEN. "
+
# Depress ''both'' the RESET switch and the ''PS_EN'' switch
 +
# Power on the sync box
 +
# Release the RESET switch
 +
# Release the PS_EN switch
 +
# Plug in the USB cable
  
 
When the device is properly detected it will show up in <tt>lsusb</tt> as something like:
 
When the device is properly detected it will show up in <tt>lsusb</tt> as something like:
  act@wilson:~$ lsusb
+
  $ lsusb
 
  Bus 002 Device 049: ID 03eb:2ffd Atmel Corp. at89c5130/c5131 DFU bootloader
 
  Bus 002 Device 049: ID 03eb:2ffd Atmel Corp. at89c5130/c5131 DFU bootloader
  
 
To prove things are working, dump the contents of the device into a file:
 
To prove things are working, dump the contents of the device into a file:
  
  act@wilson:~$ sudo dfu-programmer at89c5131:2,49 dump > part_dump.bin
+
  $ sudo dfu-programmer at89c5131:''<USB_BUS>'',''<USB_DEVNUM>'' dump > part_dump.bin
  
Note that we read the address '''2,49''' from the lsusb output. The contents of part_dump.bin can then be inspected with <tt>hexdump -C</tt> to confirm it's the sync box code and not some other nonsense.
+
where ''<USB_BUS>'' is the bus number from <tt>lsusb</tt> and ''<USB_DEVNUM>'' is the device number from <tt>lsusb</tt>. For the example <tt>lsusb</tt> output above, this would give us:
 +
 
 +
$ sudo dfu-programmer at89c5131:2,49 dump > part_dump.bin
 +
 
 +
The contents of part_dump.bin can then be inspected with <tt>hexdump -C</tt> to confirm it's the sync box code and not some other nonsense.
  
 
Then to program the device the syntax is:
 
Then to program the device the syntax is:
  act@wilson:~$ sudo dfu-programmer at89c5131:2,49 flash sync_box_v22_26sept2014.hex
+
  act@wilson:~$ sudo dfu-programmer at89c5131:''<USB_BUS>'',''<USB_DEVNUM>'' flash sync_box_v22_26sept2014.hex
 +
 
 +
== External links ==
 +
* [https://dfu-programmer.github.io/ dfu-programmer on github]
  
 
[[Category:Sync Box Firmware]]
 
[[Category:Sync Box Firmware]]

Revision as of 16:56, 4 November 2016

This describes how to upgrade Sync Box Firmware using the free dfu-programmer on linux. This only applies to the microprocessor; often it is also necessary to upgrade the CPLD.

The dfu-programmer software can be installed in Ubuntu like this:

sudo apt-get install dfu-programmer

Make sure your version supports the sync box device (at89c5131):

$ dfu-programmer --version
dfu-programmer 0.6.1
$ dfu-programmer --targets
targets:
   at89c51snd1c       at89c51snd2c       at89c5130          at89c5131
   at89c5132          at90usb1287        at90usb1286        at90usb1287-4k
   ...

Connect the sync box to the computer over USB. Don't do what the manual says: it's wrong! Instead to enable programming, do the following:

  1. Start with the sync box powered off and disconnected from USB
  2. Depress both the RESET switch and the PS_EN switch
  3. Power on the sync box
  4. Release the RESET switch
  5. Release the PS_EN switch
  6. Plug in the USB cable

When the device is properly detected it will show up in lsusb as something like:

$ lsusb
Bus 002 Device 049: ID 03eb:2ffd Atmel Corp. at89c5130/c5131 DFU bootloader

To prove things are working, dump the contents of the device into a file:

$ sudo dfu-programmer at89c5131:<USB_BUS>,<USB_DEVNUM> dump > part_dump.bin

where <USB_BUS> is the bus number from lsusb and <USB_DEVNUM> is the device number from lsusb. For the example lsusb output above, this would give us:

$ sudo dfu-programmer at89c5131:2,49 dump > part_dump.bin

The contents of part_dump.bin can then be inspected with hexdump -C to confirm it's the sync box code and not some other nonsense.

Then to program the device the syntax is:

act@wilson:~$ sudo dfu-programmer at89c5131:<USB_BUS>,<USB_DEVNUM> flash sync_box_v22_26sept2014.hex

External links