diff -r 08c0c0d695e8 -r 96e9f64b86ed content/prologix.rst --- a/content/prologix.rst Tue Aug 28 15:07:01 2018 +0200 +++ b/content/prologix.rst Tue Aug 28 15:12:24 2018 +0200 @@ -25,7 +25,7 @@ Upgrading the buggy firmware ============================ - + My controller had the version 5.2 of the firmware, which really is buggy. For example if a device on the GPIB bus is continuously sending data and the controller is in "auto" mode (in which it automatically @@ -41,9 +41,11 @@ is the `4.2-6.95`_ (in fact, it's the version 6.95 of the firware for the version 4.2 of the USB-GPIB controller). -The content of this archive is:: +The content of this archive is: - unzip -l ~/Downloads/gpib-usb-4.2-6.95.zip +.. code-block:: bash + + unzip -l ~/Downloads/gpib-usb-4.2-6.95.zip Archive: /home/david/Downloads/gpib-usb-4.2-6.95.zip Length Date Time Name --------- ---------- ----- ---- @@ -69,21 +71,28 @@ 'backends' available on avrdude. Doing a ``string`` on the main exe in the archive, PxUpdate.exe, -shows a few interesting things, especially this:: +shows a few interesting things, especially this: + +.. code-block:: bash strings PxUpdate.exe | grep -i avr avrdude.exe -p %s -P \\.\COM%d -c avr109 -u -e -U flash:w:%s AVRBOOT + So we know the command line used by this firmware update tool, and we known it uses the AVR's bootloader as decribed in the AVR109_ application note. -But any attempt to read the content of the flash using:: +But any attempt to read the content of the flash using: + +.. code-block:: bash avrdude -p m164p -c avr109 -U flash:r:flash.hex:i -fails stating the avr does not respond:: +fails stating the avr does not respond: + +.. code-block:: bash avrdude -P /dev/ttyUSB0 -p m164p -c avr109 -v -v -U flash:r:flash2.hex:i @@ -131,20 +140,24 @@ Connecting to programmer: .avrdude: ser_recv(): programmer is not responding avrdude: butterfly_recv(): programmer is not responding - + So there is something else required to put the device under firmware upgrade state. I was wondering if there is an undocumented controller command (anything starting with ``++`` is interpreted as a controller -command), so I searched for the ``++`` string in ``PxUpdate.exe``:: +command), so I searched for the ``++`` string in ``PxUpdate.exe``: + +.. code-block:: bash strings PxUpdate.exe | grep ++ Microsoft Visual C++ Runtime Library ++rst No magic undocumented command, but a reset of the controller is -performed by this tool. Let's try this:: +performed by this tool. Let's try this: - stty -F /dev/ttyUSB0 speed 115200 cs8 -cstopb -parenb +.. code-block:: bash + + stty -F /dev/ttyUSB0 speed 115200 cs8 -cstopb -parenb echo -en '++rst\r' > /dev/ttyUSB0; avrdude -P /dev/ttyUSB0 -p m164p -c avr109 -v -v -U flash:r:flash2.hex:i avrdude: Version 6.1, compiled on Sep 11 2014 at 20:00:34 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ @@ -163,7 +176,7 @@ RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes - + parallel program mode : yes Timeout : 200 StabDelay : 100 @@ -213,12 +226,14 @@ avrdude done. Thank you. -Much better! +**Much better!** -Now I can upgrade the firmware:: +Now I can upgrade the firmware: + +.. code-block:: bash echo -en '++rst\r' > /dev/ttyUSB0; avrdude -P /dev/ttyUSB0 -p m164p -c avr109 -v -v -U flash:w:m164.hex - + Et voilĂ ! The Prologix GPIB-USB interface is upgraded to the latest available software. From what I've seen so far, it seems more stable (at least I can read data from my HP5442A and HP3456A in "fast" mode