License

Seaglider operating software ("Software") has been developed by researchers at the University of Washington and made available through the University of Washington ("UW") for your use. UW and the Developers allow you, non-exclusively and at no cost, to run the Software on the following conditions:
  1. Any risk associated with using the Software is with you and any affiliated institutions or organizations. Software is experimental in nature and is made available as a courtesy "AS IS," without obligation by UW or the University of Washington to provide accompanying services or support.
  2. UW AND THE UNIVERSITY OF WASHINGTON, AND THE DEVELOPERS, EXPRESSLY DISCLAIM ANY AND ALL WARRANTIES REGARDING THE SOFTWARE, WHETHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES PERTAINING TO NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL UW OR THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR VEHICLE; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

General

We always recommend thorough and systematic testing with any new version of software before flying it operationally. Even versions marked "stable" below may have seen very limited in water testing or testing only under a very limited range of conditions and environments. Firmware below may not have the same feature set or sensor support as your existing firmware. Firmware below may produce different outputs than your existing firmware. Such differences could impact glider configuration, operations, and shoreside processing.

The firmware below only supports 1000m SG and SGX vehicle configurations.

We recommend making backup copies of your existing firmware and non-volatile configuration memory (parameters, etc.) on the glider before making any updates.

Downloads

Rev B operating firmware for SG and SGX

Rev E operating firmware for SG and SGX

See notes in update instructions about order of update operations when you also have a scicon.

Versions for motherboards provided by or updated by IOP to have latest supervisor and motor firmware

Versions for motherboards with original KHH supervisor and motor firmware

Note that we have limited ability to test these versions. changelog for r7061 to r7087
changelog for r6790 to r7061

Rev E bootloader firmware

scicon firmware - for scicon in Rev E gliders only

See notes in update instructions about order of operations when updating glider and scicon firmware for the first time. This update is only for scicon connected to Rev E.

scicon bootloader firmware

Garmin FW update package (fixes GPS epoch rollover bug)

Applies to any glider with a Garmin GPS-15 family GPS that is producing an incorrect year due to incorrectly handling the GPS epoch rollover. The tarball includes a Rev B glider binary that has the necessary support to enable the update to be done with the GPS unit installed in the glider. Rev E users might need to install an updated binary for Rev E (above).

Rev E update instructions

(RevE_FW_update.txt)
This procedure assumes that you can put files on the glider
microSD card. This can be done either with physical access
to the motherboard, removing the card, copying files and
re-installing the card or via serial transfer with pdos 
xr and yr commands. 

The latest scicon and glider firmware use ymodem to exchange files.
Older systems use xmodem. If you are updating from old style to new
style firmware, you should do the scicon firmware first or you might
get into a case where the glider is speaking ymodem and the scicon
is speaking xmodem. If you have a scicon connected to your Rev E
glider you must follow steps 1 and 2 to update scicon before
you update glider FW.

1. Install the new scicon bootloader (if you have a scicon)

    a. Copy the files "gnicl.bin" and "iap_F4_gnicl.bin"
       onto the scicon uSD card.  You can take the uSD card
       out of scicon or use hw/loggers/sc/put name=gnicl.bin, etc.
       to transfer files from glider uSD to scicon uSD.
    b. Reinstall the uSD card into scicon (it if was removed)
    c. Boot the glider (if the card was removed)
    d. Go to direct comms with scicon
    
       hw/loggers/sc/direct

    e. at the scicon > prompt do

       > flash boot iap_F4_gnicl.bin

    f. exit to the bootloader, 

       > quit

       then hit enter as soon as you see '#' to 
       go to bootloader mode. If you miss it, don't
       worry, wait for the scicon to boot and try again.

    g. Select 'A' to make a backup copy of the current firmware. 
    h. Boot back to scicon (option '2') 
    i. confirm that you have a backup copy

       > dir backup*.bin

    j. make a backup of the backup
    
       > cp backup_a.bin oldsc.bin

2. Install new scicon firmware (if you have a scicon)

    a. Still at the scicon prompt, cp "gnicl.bin" to "boot.bin"

       > cp gnicl.bin boot.bin

    b. reboot, and check the version

       > quit

       wait for reboot (should see message about flashing boot.bin)

       > ver

3. Update the glider bootloader. 

We update the bootloader first because the latest bootloader allows
us to save a copy of the current firmware before we overwrite it. The
latest glider firmware also supports this, but then we'd have to install
the new glider firmware over the old glider firmware and then we couldn't
back up the old firmware. So new bootloader first just so we can
save a copy of the existing firmware in case we want to roll back
for any reason. 

    a. put the files "iap_F4_glider.bin" and "glider.bin"
       onto the glider uSD card
    b. reinstall the glider uSD card (if it was removed)
    c. boot the glider (if it was off to remove the card)
    d. from the glider menu, flash the bootloader

        !flash boot iap_F4_glider.bin

    e. reboot the glider and enter bootloader mode, 

        !pdos /f

        As the glider reboots you will see a '#' at which
        point you have about 1 second to hit enter and 
        go to bootloader mode. If you miss it, don't
        worry, wait for the glider to boot and try again.

    f. Select 'A' to make a backup copy of the current 
       firmware. 
    g. Boot back to the glider (option '2') 
    h. confirm that you have a backup copy

        !dir backup*.bin

    i. make a backup of the backup
    
        !cp backup_a.bin oldfw.bin

    j. while you are making backups, backup the parameters

        param/save
        !cp sgNNNprm.txt parms.bkup

        (where NNN is your glider ID number)

4. update the glider firmware

The bootloader can load new firmware over the serial port or
from a file on disk called "boot.bin". Because we already
have the firmware in a file on the disk (from 2a above)
all we need to do is copy or rename that file to "boot.bin"
and cause a reboot so that the bootloader runs.

    a. get baseline values for FW version, supervisor status and motor version,
       and port and peripheral assignments

        !ver long
        hw/super/status
        !motor ver
        param/config/show

       Make note of all of these results or store a screen capture.

    a. copy the glider FW file into position to be flashed

        !cp glider.bin boot.bin

    b. reboot the glider

        !pdos /f

    c. verify that the version is updated

        !ver long

    d. check that you can communicate with the supervisor and motor controller

        hw/super/status
        !motor ver

    e. (optional but recommended) restore parameters from backup storage
       and cleanup the order of parameters in memory

        param/reset
        param/load

    f. check your sensor and peripheral configuration. 

        param/config/show

       If anything does not match the baseline result from step (a), use
       the options from param/config to correctly assign sensors, peripherals
       and ports. 

5. Check parameters

The usage for some parameters may have changed.  Check the following
and consult th parameter reference manual (https://seaglider.pub/parms). 

Changed parameters

    $COMM_SEQ - default was 0, now 7
    $NOCOMM_ACTION - consider turning off bit 5 (32, flow control off)

New parameters

    $XPDR_INT 
    $XPDR_REP
    $C_PITCH_AUTO_GAIN
    $C_PITCH_AUTO_MAX
    $PITCH_GAIN_AUTO_GAIN
    $PITCH_GAIN_AUTO_MAX
    $C_VBD_AUTO_GAIN
    $C_VBD_AUTO_MAX

Rev B update instructions

Before installing new firmware, backup parameters using param/save from
the main menu. This will allow you to more easily revert to the original
firmware if desired. 

Place glider.run onto the CF card. With the glider booted to the main menu
exit to PicoDOS> and run "glider" to try the new firmware. If tests are
ok, exit to PicoDOS> and copy the exising main.run to a backup file. Then
copy glider.run to main.run. Reboot and the new firmware should start. 
To revert, copy the backup back to main.run, reboot and restore the
original parameters.