LTE Link Control can't recover from LTE_LC_MODEM_EVT_BATTERY_LOW ?

Hi,

OS: Windows 10
Editor: VS Code 1.74.0
nrfjprog version: 10.18.1 external
JLinkARM.dll version: 7.80c
nRF Connect SDK version: 2.2.0
nRF9160 modem firmware version: 1.3.3

I noticed that when the battery is low and the application raises +CGEV: ME BATTERY LOW and %MDMEV: ME BATTERY LOW, the LTE LC receives the LTE_LC_MODEM_EVT_BATTERY_LOW, the application can't connect to LTE after that. 

[00:12:49.443,817] <dbg> application: modem_on: No LTE connection, go offline and then connect.
[00:12:49.453,430] <inf> application: Sending the modem to offline mode.
[00:12:49.467,559] <dbg> application: modem_offline: lte_lc_func_mode: 4
[00:12:49.475,158] <dbg> application: modem_offline: Modem is already offline.
[00:12:49.483,245] <inf> application: Starting to connect to LTE network.
[00:12:49.490,905] <dbg> lte_lc_helpers: event_handler_list_append_handler: Handler already registered. Nothing to do
[00:12:49.515,930] <err> lte_lc: Could not send AT command, error: 65536
[00:12:49.523,529] <err> application: Error: lte_lc_connect_async() failed, err: -14
[00:12:49.532,470] <err> application: Error: LTE link could not be established, or maintained.

lte_lc_connect_async() calls connect_lte() which calls lte_lc_system_mode_set() which returns error Could not send AT command, error: 65536. As much I have tested this, it happens every time after the battery low event has been received and it can revocer from this only when rebooting the device. I have set AT%XPOFWARN=1,33 and set the supply voltage to about 2.5-2.6V to make it fail easier.

If I set AT+CFUN=1 over UART, the device connects to LTE successfully. That makes me wonder if there is a bug on the LTE Link Control or on the Modem library AT commands interface.

Regards,
Tero

Parents
  • What's the outcome of this ticket? I miss that.

    Does the device needs a reboot after the "LTE_LC_MODEM_EVT_BATTERY_LOW"?

    Or only a "CFUN=1"?

    Was there a bug in an old NCS or mfw?

    What is required to recover a mfw-1.3.7/ncs-2.9.2 from a LTE_LC_MODEM_EVT_BATTERY_LOW?

    (I tried to check other tickets, but I wasn't able to find a clear answer.)

  • Some more information from my investigation using a nRF9160-DK (v1.1.0), mfw 1.3.7, NCS 3.1.0 and a PPK II to easily change the nRF9160 voltage:

    Switching the PPK II to supply with 3000 mV causes in my case already the "LTE_LC_MODEM_EVT_BATTERY_LOW" (AT%XVBAT reports in my case values around 2970 mV).

    Switching back to 3500 mV then requires a call to "lte_lc_normal" (or "AT+CFUN=1). A reboot wasn't needed in my case.

    Rebooting (or starting) when the battery is already low caused in my case a "AT+CFUN=41" to block "forever", skipping to read the SIM ahead and calling "lte_lc_connect_async" reports then the "LTE_LC_MODEM_EVT_BATTERY_LOW", and when the battery voltage is back again, a "lte_lc_normal" starts the network search and afterwards the modem operates as usual.

    I don't know, if there are more "blocking AT cmds when the battery is low", but that was the hard point to find in my case. 

  • One more:

    To receive the "LTE_LC_MODEM_EVT_BATTERY_LOW" you will need to enable the modem notifications with "lte_lc_modem_events_enable()" ahead of calling "lte_lc_connect_async". If you leave that to NCS (lte_net_if.c), it will be too late ;-).

Reply Children
No Data
Related