Alternative method

This is a linear single-buffered method for updating the modem firmware. Some older versions of the modem firmware require this method.

The modem firmware package has several HEX files. The firmware is divided into several files named firmware.update.image.segments.[n].hex that contain separate segments of the firmware.
To successfully update the modem, you must program the firmware segments in correct order.
  1. Take the lowest numbered firmware.update.image.segments.[n].hex file.
  2. Split the contents of the HEX file into contiguous sections that are page aligned and 8 KB large.
    Note: The block size must be 8 KB so that the address is always a multiple of 8 KB. Otherwise, the call returns a success message but does not program anything.
  3. Write the following:
    1. The starting address of the section to 0x20000010.
    2. The length of the section to 0x20000014.
    3. The data of the section to 0x20000018.
    4. Write 0x3 to 0x2000000C.
  4. Write 1 to 0x4002A004 to start the IPC transaction.
  5. Poll IPC.MODEM_CTRL_EVENT.
    0x2000000C writes (0x3) and reads (0x7) responses from the modem. If the response is 0xA5xxxxxx, it is an acknowledgement of the command. If the response is 0x5Axxxxxx, it is an error where the last six digits is the error code.
  6. Write 0 to the event registers (0x4002A100, 0x4002A108, and 0x4002A110) to acknowledge the event.
  7. Repeat steps 2 to 6 until all sections have been programmed.
  8. Repeat steps 2 to 7 using the next firmware.update.image.segments.[n].hex file until all files have been programmed.