low power modes with zephyr and HCI

Hello,
I am looking into using zephyr with a host controller configuration on separate chips, where the controller is an nrf52832 chip.
I was wondering how would the power control work in that case.
are there any specific commands to turn off the ble module or does it automatically go to sleep in case of inactivity?

Thanks

  • Hi

    I'm not sure I understand what you mean here. You would use the nRF52832 as the BLE module in this configuration, right? You will need to call a sleep function in order to go to the lowest power modes indeed. You can see for example the nRF5x system off demo that shows you how to go to system OFF on an nRF5x series device. In short the k_sleep() function is what is used to put the device to sleep.

    Best regards,

    Simon

  • thank you for your answer.

    what I meant is run the ble host on the nrf52 (this sample from zephyr), then run the application on a separate processor most likely an stm32.
    and connect both over HCI.
    in such a configuration I was wondering if the linked sample above takes care of the low power control or is there any additional steps that needs to be taken on the application side to turn off the bluetooth chip.

  • Hi

    I see, thank you for explaining. The HCI power control is for changing the TX power dynamically, and not the actual power consumption of an HCI device. I think you need to set the nRF52832 to a low power mode somehow when it's done with BLE communication.

    You can check out the Bluetooth HCI low power UART sample that is based on the HCI UART sample you linked to, but using the Low power UART driver for HCI UART communication. This should result in lower power consumption as you can shut down the HF clock when the UART is in an idle state. When using the Low power UART driver, I guess you could tell the NRF52 to go to sleep whenever the UART goes idle, and wake up on activity on the UART line for example.

    Best regards,

    Simon

  •   Do you have any results or new findings regarding this topic? I've the same task and I'm wondering, if it is even possible to create a low power controller. Technically for my understanding e.g. a non advertising controller should draw the same current than a non advertising peripheral. Or am I missing something?

    Regards,
    Oliver

  • sadly I got pulled into another project and I haven't made any progress on this issue.

    it is not just stopping the advertisement, you also need to put the processor in sleep mode when not in use.
    and depending on what you want to achieve you have multiple options that's why I was wondering if there is a way to select the low power mode the NRF chip goes to.
    Simon's suggestion is a good starting point, there might be some additional information in that sample project.
    otherwise I would look into creating custom HCI commands.

Related