Bluetooth on nRF5340

Hi Support team,

I'm using an LTE modem and enabled the net-stack and mqtt on the net-core of nRF5340, now 53% FLASH and 77% RAM are used.

I need to use Bluetooth for the system configuration when the system on config mode.

My questions are:
1 There is not much resource on my net-core, could you tell me how big is the Bluetooth stack? Is it possible for me to put the Bluetooth application on the application-core?
2. There are a lot of samples for Bluetooth in Zephyr and NCS, could you help suggest a sample of the minimal application of Bluetooth to match my requirement?

Thank you very much.

Best regards,
Yanpeng Wu

Parents
  • Hello,

    As described in the Protocols and use cases section of the SDK documentation, the typical configuration is to have the Bluetooth controller (hci_rpmsg) reside on the network core, and the Bluetooth host and application on the application core. The memory footprint of the controller depends on the configuration. E.g. how many connections it needs to support, GAP roles, etc. You also need to include a bootloader if you need support for FW updates. 

    I'm using an LTE modem and enabled the net-stack and mqtt on the net-core of nRF5340, now 53% FLASH and 77% RAM are used.

    Have you considered implementing this on the application core instead? 

    Best regards,

    Vidar

  • Hi Vidar,

    Thank you for your reply. I tried to compile the sample Bluetooth: HCI RPMsg and can see that 69% Flash and 74% RAM are used.

    Just as you suggested, maybe the better solution is to move the LTE modem and net stack from the net-core to the app-core. Could you help give some guidance for the below questions?

    1. Now I use UART connecting to the LTE modem on net-core. I don't know if is there any obstacle to moving this from net-core to app-core? I mean the feasibility of this solution. Maybe your experiences can help me understand this point better:).
    2. I see the nRF5340 net-core diagram, there is a 'RADIO' on it. Is it connected to the bluetooth controller hardware? Or can I understand that the bluetooth controller hardware is fixed on net-core?

    Thank you very much.


    Best regards,
    Yanpeng Wu

  • I don't believe that moving the Bluetooth host to the network core will simplify the application logic needed to dynamically power the network core on and off. The application will still be responsible for enabling and disabling the stack using the same APIs.

    I will investigate this further and let you know if it can be supported with the current implementation.

  • Update: support for disabling the network core through bt_disable() was added in SDK v2.6.0.

  • Hi Vidar,

    Thanks for the update. Is the API bt_disable() used to close and release HCI resources on netCore in the architecture of 'Split Controller and Host'?

    In my case, the BLE is only used to do the system configuration. The system is not in configuration mode most time. I'm thinking put the 'Full Bluetooth LE stack' on the netCore, and using API nrf_reset_network_force_off() (the API description, and the netCore Force-OFF mode) to power off the net-core totally from appCore when in operating mode. When need to do the system configuration, also use  nrf_reset_network_force_off() to power on the netCore and connect with BLE. 

    Does this method make sense? Looking forward to your comments.

    Best regards,
    Yanpeng Wu

  • Hi Yanpeng,

    Support for running the whole BT stack on the netcore is currently experimental and therefore not recommended for production. The bt_disable() function will force off the network core. And bt_enable will force it on again. 

    Best regards,

    Vidar 

  • Hi Vidar,

    Thank you for the confirmation, I will try the mature solution 'Split Controller and Host'. Thank you very much.

    Best regards,
    Yanpeng Wu

Reply Children
Related