A-GPS + RAI

Hi!

In my application, I am receiving A-GPS data from nRF Cloud. After the data is received there is a considerable amount of time where the GNSS module is blocked because of the RRC Connected-to-idle timer. I am looking at implementing RAI to close the connection earlier. As per my understanding, this could in the worst case scenario save up to 20 seconds.

I have not found any examples where this is done. In the nrf_modem_gnss, all the connectivity is abstracted away and implementing RAI from nrf_socket library combined with the nrf_modem_gnss seems like a very complex job.

Do you have any tips as how to implement this power saving feature? Are there any good examples of it being done?

Thank you all for any help!

Kind regards,

Torje

  • Hello Torje, 

    Do you have any tips as how to implement this power saving feature? Are there any good examples of it being done?

    The basics of the RAI feature functionality can be found in the documentation of the %RAI AT command.

    Additionally, the LTE Link Controller has a function that will request to enable its usage.

    It can also be configured as modem socket options. The nRF9160: Modem Shell sample supports RAI and that might give you an idea of how it can be implemented. Now, the functionality is spread to different files, but link.c and sock.c should be a good starting point. 


    That being said, please be advised that I strongly not recommend the usage of RAI with TCP. You are basically asking for trouble by doing so. Referring to a post of my colleague Didrik Rokhaug, explaining some details in another customer case.

    What this means is that the application has to indicate to the modem via a flag that RAI shall be used. But the application cannot control the transmission sequences done by the modem, neither can the modem at any time since it depends a lot on the network and its signal quality/coverage. This can lead to a lot of switching between RRC connected & RRC idle destroying the original intention, namely releasing earlier and thus saving power or releasing resources for other operations like in your case, GNSS. 

    I probably would do the following: 

    • Check if GNSS priority mode could solve the issue you are facing instead. 
    • Talk to the network provider regarding RRC connected to idle time. 

    I hope this will help you. 

    Regards, 

    Markus 

  • Hi Markus,

    And thank you for replying. I will thread carefully around implementing RAI. 

    Do you know if Nordic R&D has given thoughts to solving the RRC Idle Timer challenges when using nRF Cloud, and if handling the issues you mention can be solved by the modem in a future update? It seems to me that its potentially a quite impactful power saving feature. And Nordic would know the sequence of its most used Cloud requests, like collecting Cell or A/P-GPS data etc. If I could configure it to go to RCC Idle after A-GPS data is received, I would every time. And my guess is that this applies to many. 

    Thank you again!

    Kind regards,

    Torje

  • Torje said:
    And thank you for replying. I will thread carefully around implementing RAI. 

    My pleasure, Torje :-) 

    Torje said:
    Do you know if Nordic R&D has given thoughts to solving the RRC Idle Timer challenges when using nRF Cloud, and if handling the issues you mention can be solved by the modem in a future update? It seems to me that its potentially a quite impactful power saving feature. And Nordic would know the sequence of its most used Cloud requests, like collecting Cell or A/P-GPS data etc. If I could configure it to go to RCC Idle after A-GPS data is received, I would every time. And my guess is that this applies to many. 

    Frankly, I don’t know. And I’m not sure if we in Nordic can do that much here neither. As already mentioned, the timer is configured by the carrier and not negotiable from the UEs side. You should probably talk to the carrier itself and feedback them with this issue. 

    Regards, 

    Markus 

Related