# Upgrade Device (INT6000/INT6300/INT6400)

The Upgrade Device operation downloads firmware and/or PIB from a remote host to an Atheros device for permanent storage and immediate execution. The device determines where and how it will store the information based on the availability of onboard flash memory. If the device has dedicated flash memory then it will store the firmware and PIB there and reset itself; otherwise, it will hand the firmware and PIB to the local host for storage and the local host will reset the device. The reset ensures that new firmware and PIB take immediate effect once they are saved. This operation requires custom software on the remote host and Atheros firmware on the device.

## Upgrade Device (INT6000/INT6300/INT6400)

            REMOTE-HOST                        INT6300/INT6400
            [01] |-------- VS_WR_MOD.REQ ------------>| [01]
            [01] |<------- VS_WR_MOD.CNF -------------| [01]
            [01] |----------------------------------->| [01]
            [01] |<-----------------------------------| [01]
                 |                                    |
            [02] |-------- VS_WR_MOD.REQ ------------>| [02]
            [02] |<------- VS_WR_MOD.CNF -------------| [02]
            [02] |----------------------------------->| [02]
            [02] |<-----------------------------------| [02]
                 |                                    |
            [03] |-------- VS_MOD_NVM.REQ ----------->| [04]
            [05] |<------- VS_MOD_NVM.CNF ------------| [04]
                 |                                    | [06]

1. Optionally, the remote host writes firmware to the device by sending a series of `VS_WR_MOD.REQ` messages and waiting for a `VS_WR_MOD.CNF` message after each one. The message `MODULEID` field is set to `0x01` for this operation.

2. Optionally, the remote host writes the PIB to the device by sending `VS_WR_MOD.REQ` messages and waiting for a `VS_WR_MOD.CNF` message after each one. The `MODULEID` is set to `0x02` for this operation.

3. The remote host commits the firmware and/or PIB to persistent storage by sending a `VS_MOD_NVM.REQ` message and waiting for a `VS_MOD_NVM.CNF` message.

4. The device received the `VS_MOD_NVM.REQ` and sends a `VS_MOD_NVM.CNF` message to the remote host.

5. The remote host receives the `VS_MOD_NVM.CNF` and proceeds with other activity. The remote host does not know or care that the device may not have dedicated flash memory available.

6. The device determines where and how to store the information. If dedicated flash memory is available, the device writes the downloaded firmware and PIB to flash memory and performs a software reset that results in a normal Boot from Flash operation. If no dedicated flash memory is available, the device initiates an Update Local Host operation.

The device does not notify the remote host when the upgrade operation completes. It is therefore incumbent on the remote host to determine ultimate success or failure by polling the device, possiby using a `VS_SW_VER.REQ` message, until a response is received. The complete upgrade operation can take from `20` seconds to `45` seconds depending on device configuration.