Firmware upgrade for RC76xx series

Hi,

I am using a Linux PC. I need to understand more about firmware upgrade.
Is it possible to upgrade the modem firmware with AT commands?
Or is it possible with QMICLI commands alone? There are commands for setting preference, but is there a way to give the path of the .spk file to the modem to download from? For example, lets say I have downloaded the .spk file in /tmp/firmware/sierraFW.spk, how to provide this path to QMICLI tool?
I do not want to use qmi-firmware-update, if it is possible to use only QMICLI, to reduce build size.

Thanks in advance for the help.

You can use the MBPL sdk
You can see this discussion thread:

I could enter into boot and hold mode with qmicli:dms commands
–dms-set-firmware-preference=…
–dms-set-operating-mode=offline
–dms-set-operating-mode=reset

At this point, as expected I can see only one ttyUSB. Looking for a simple integratable solution for downloading the firmware to the modem. I know that qmi-firmware-update tool does all of this, but if there are APIs like the QMI APIs, that I can pick and integrate into my application fitting to my needs, it would be the best. Most of the options are fixed and the only thing that really changes is the firmware file (.spk).

It shoud be able to integrate to c program

Ok. But for some reason I choose to wait on the firmware update and want to get back to online mode, after the following, it seems impossible.

–dms-set-firmware-preference=…
–dms-set-operating-mode=offline
–dms-set-operating-mode=reset

After this, it does open only one ttyUSB. But I restart again, it shows up all the three ttyUSB, except that it doesn’t allow me to go back to ‘online’ mode. It stays in ‘low-power’ and throws ‘InvalidTransition’ error when I try to set mode to ‘online’. I had to reflash FW to get it back. Is this expected behaviour? It is not possible to get back to ‘online’ mode smoothly?

What is the response of followings after upgrade?

At!entercnd=“A710”
At!impref?

at!entercnd=“A710”
at!entercnd=“A710”
OK
at!impref?
at!impref?
!IMPREF:
preferred fw version: 00.08.07.00
preferred carrier name: GENERIC
preferred config name: GENERIC_001.081_000
preferred subpri index: 000
current fw version: 00.08.07.00
current carrier name: GENERIC
current config name: GENERIC_001.081_000
current subpri index: 000

OK

How about at!gstatus?

Can you bring it back to online by at+cfun=1

Ok, just to reiterate, there are the steps:

  1. Set preference, go to offline and then reset with QMI->DMS
  2. After modem reboot, as expected I can see that we have only on ttyUSB exposed. So I cannot run any AT commands.
  3. Dont go for firmware update by just powercycle again and I can see the three ttyUSBs back
  4. Now I can give AT commands. When you asked the response for AT commands, did you mean at this point? Because the previous response I posted was when, I already retrieved the status by updating the firmware. But now I reproduced the issue again with the first three steps and this is what I see:
    at!entercnd=“A710”
    at!entercnd=“A710”
    OK
    at!impref?
    at!impref?
    !IMPREF:
    preferred fw version: 00.08.07.00
    preferred carrier name: Generic
    preferred config name: Generic_001.081_000
    preferred subpri index: 000
    current fw version: 00.08.07.00
    current carrier name: GENERIC
    current config name: GENERIC_001.081_000
    current subpri index: 000

carrier name mismatch
config name mismatch

OK
at!gstatus?
at!gstatus?
!GSTATUS:
Current Time: 527 Temperature: 35
Modem Mitigate Level: 0 ModemProc Mitigate Level: 0
Reset Counter: 1 Mode: LOW POWER MODE

OK
at+cfun?
at+cfun?
+CFUN: 0

OK
at+cfun=1
at+cfun=1
+CME ERROR: operation not supported

The only way at the moment to get back to online seems to be to actually update the firmware. I am not sure if I am missing something or this is the expected behavior?

why the AT!IMPREF is different this time?

Yes, because when you asked me the response for it, I already retrieved the status back to online to proceed with my work (had to do actual firmware update). But then I realized you meant the response at the point where it was not possible to get back to ‘online’ (without actual firmware update), is that right? So I reproduced the issue and gave the AT commands again. I didn’t delete the previous post as it could be a good reference for ‘expected’ vs ‘actual’ and also your question said ‘after upgrade’.

So my question in short is, if anyone misses the actual firmware update after getting into boothold mode, it should be possible to get back to normal mode (without firmware update), right? If this scenario is not accounted for, then it could be a problem.

have you tried to use the official exe first?
It seems the file you has problem which makes the mismatch

Yes, downloaded the latest .spk from Sierra source. The same file works ok if I go for upgrade with qmi-firmware-update, but if I set the modem to boot&hold and then reboot the modem without actual firmware update, it causes the issue. Does it mean that when we put the modem to at!boothold, we cannot get out of it without a firmware update? I would expect that when I put the modem to at!boothold, and for some reason I choose not to go for firmware upgrade, I should be able to do powercycle and get back to normal mode? If this is the expected behavior and only my modem is not responding that way, then something must be wrong with my modem. I am trying to understand if this is the case. If anyone can confirm that with RC76xx, it is possible to enter boot&hold and come back to normal after reset, without actual firmware update, it will be great help.

do you mean the following?

  1. AT!IMPREF? is returning normal and modem is online mode
  2. AT!BOOTHOLD
  3. power cycle without FW update
  4. AT!IMPREF? is returning mismatch and modem is in low power mode

This is not quite making sense

ok, I tried with exclusive AT commands, and it seems ok. But if I try the same, putting modem to boot&hold with QMICLI:DMS commands, I cannot get back to normal mode with a powercycle.

not quite understand what you are doing…
do you mean the following?

  1. AT!IMPREF? is returning normal and modem is online mode
  2. AT!BOOTHOLD
  3. QMICLI:DMS commands (for what? Fw update?)
  4. power cycle
  5. AT!IMPREF? is returning mismatch and modem is in low power mode

I don’t use AT commands unless needed to check something. I checked AT!IMPREF?, when you asked me to. So my steps are:

  1. check status with
    –dms-get-operating-mode
  2. set modem to boot&hold with
    –dms-set-firmware-preference=…
    –dms-set-operating-mode=offline
    –dms-set-operating-mode=reset
  3. I can see that there is only ttyUSB port as expected. But I just power cycle again without any firmware update

Now, I cannot get back to online. Powercycle only exposes the three ttyUSBs back but can’t set it back to online. Now, if I do a firmware update with qmi-firmware-update, everything is back to normal. Hope it is clear?

Normally i don’t use qmicli, you better use AT command to check the status

For example

  1. AT!IMPREF? is returning normal and modem is online mode
  2. AT!BOOTHOLD
  3. power cycle without FW update
  4. Check if AT!IMPREF? is returning mismatch and modem is in low power mode

If no problem is found, that means one of your step is making the wrong state.
(probably dms-set-firmware-preference???)