conn_mgr and LTE-M PSM

Hi, 

I really like the new Zephyr conn_mgr, it is really easy to use, almost UNIX like. I am wondering what is now the best way to control PSM. Will CONFIG_LTE_LINK_CONTROL and lte_lc_connect_async interfere with the conn_mgr? Should I only use one of the options or can they exist next to each other? 

will CONN_MGR_IF_NO_AUTO_CONNECT and then connection using lte_lc work reliable?

I am searching for the "right" way to do. 

Thanks!

  • Hello,

    I will have to look more into conn_mgr, but I am not sure if our LTE code is well-integrated with that feature.

    To be safe I would recommend using our LTE link control library.

    Best regards,

    Michal

  • I can't get it to work on  SDK 2.5.0, it should be really straight forward, right? I took the example from the library page

    I get 

    I am just looking for an example with SDK 2.5.0 and PSM. Most samples like the AWS IOT example switched to the conn_mgr implementation. 

  • Looks like conn_mgr and LTE Link control can (or even needs to) work next to each other. I can image someone else is also struggling wit it so this is how I got it to work, it is actually quite easy.

    Add this to prj.conf:

    Then copy and edit the LTE_Handler from the example just above the main function. I changed to LOG_INF instead of printk and added te PSM part.

    Then in main add this before connecting to the network.

    And add this after connection is established.

    If PSM request went alright you will see this in the serial log:

    And you can clearly see the 16s active time using the PPK, After 16 the power consumption will go down. I have't optimized it in this case. 

    Complete AWS example main.c

  • That's a nice writeup!

    Thank you for sharing that, it may be helpful to other people as well.

    Best regards,

    Michal

  • Thank you for the write-up. Just a heads up I had the same issue, the -14 (-EFAULT) err code is due to AT command failing in nrf_modem_lib.c. This can be resolved via a call to nrf_modem_lib_init(), before calling lte_lc_init_and_connect_async(), this way the example works with out PSM or conn_mgr. 

1 2