NRF9151DK autonomous resets when simultaneously starting LTE connection and GPS on modem FW 2.0.2

I have updated a board (NRF9151DK) from modem FW 2.0.1 to 2.0.2. The board is also equipped with nrf7002-EK, and the support for the wifi driver is enabled (SB_CONFIG_WIFI_NRF70, SB_CONFIG_WIFI_NRF70_SCAN_ONLY, haven't verified if this makes a difference).

The previous version of the application works fine, in which we initialize the modem at startup, and simultaneously initiate an LTE connection and activate the internal GPS. On the new 2.0.2 firmware, this simultaneous action results in an autonomous reset, which can be fixed by e.g. adding a 100msec sleep before activating the internal gps. The same problem occurs on other devkits too (observed on 2 out of 2).

I mainly want to notify you of this difference, because I'll not be the only person suffering from this. I leave it up to you to consider if a fix is possible.

I can try out alternative solutions if necessary.

Best regards,

Sebastiaan

Parents
  • Hi

    Sorry, but Susheel is not available, and I've been tasked with looking into this ticket while he's away. So sorry that we have to take a couple of steps back as I need some time to get into this case. One thing I'm not able to find info on in this case is which SDK version you're working on here. Can you share some more information on that. I'm currently waiting for some replies internally on ideas as to why the watchdog would misbehave like this. I have not looked at the project you uploaded, but I'll get to that. Just wanted to give you a status update.

    My initial thought, and this is just me taking a stab in the dark, is that the GPS location takes longer time than what the watchdog timeout is set as, and thus the watchdog triggers a reset while you're trying to get a GPS location. Is there a specific reason the WDT is set to 5 seconds, and could you try to increase it substantially to see if that makes a difference? You say that your application works as expected if you disable the WDT. Can you confirm you're able to initialize GPS and get a GPS ping as expected without the WDT?

    Best regards,

    Simon

Reply
  • Hi

    Sorry, but Susheel is not available, and I've been tasked with looking into this ticket while he's away. So sorry that we have to take a couple of steps back as I need some time to get into this case. One thing I'm not able to find info on in this case is which SDK version you're working on here. Can you share some more information on that. I'm currently waiting for some replies internally on ideas as to why the watchdog would misbehave like this. I have not looked at the project you uploaded, but I'll get to that. Just wanted to give you a status update.

    My initial thought, and this is just me taking a stab in the dark, is that the GPS location takes longer time than what the watchdog timeout is set as, and thus the watchdog triggers a reset while you're trying to get a GPS location. Is there a specific reason the WDT is set to 5 seconds, and could you try to increase it substantially to see if that makes a difference? You say that your application works as expected if you disable the WDT. Can you confirm you're able to initialize GPS and get a GPS ping as expected without the WDT?

    Best regards,

    Simon

Children
  • Hi Simon,

    Thanks for jumping in.

    The SDK version and toolchain is 2.9.0.

    Actually, the watchdog reset occurs several seconds before a first task timeout can occur. The task timeout is set to 5 seconds, but the system resets after about 2 seconds (without calling the watchdog callback either). So there's no relationship with the duration of the tasks.

    Changing the task timeout to 10 seconds or more does not make any difference: the system still resets after about 2 seconds.

    The application can work completely fine if the watchdog is disabled, or if I put a sleep of 1 second (overkill) before the initialization of the GPS stack, which is the workaround that I'm using now.

    In my opinion, I think it's best to try to reproduce based on the code that I provided. Let me know if I should re-share the code sample.

    The issue is not urgent for me, but I have the feeling that there's something fundamentally wrong that should be understood better or it can cause more issues in the future.

Related