New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ble taking too much power (IDFGH-769) #947
Comments
I have the same issue. Even running the demo heats the chips a lot. |
@joicetm BLE power consumption improvements (i.e. modem sleep mode) are not planned for 3.0. 80-90mA is the best that can be achieved in the current version. |
Do you know what is the release target for the modem sleep mode ? Where can we find the project roadmap and estimate dates? |
This is an important issue for me. I would be using the ESP32 in my project right now if I could run the ble_spp_server demo using less than 10mA. |
@MS-elug @mobilinkd The BLE modem sleep will be release at the next version(v3.1), thank you for your concern about ESP32. |
That's great news, @Yulong-espressif ! Are you able to characterize the current consumption with this enhancement? |
Hi, I am using ESP-WROOM-32 with Arduino IDE. I want to know is there any way to reduce power consumption of BLE peripheral? I made a test on power consumption during BLE advertising which was consuming 112mA current when CPU set at 80Mhz. I want to reduce the current consumption to at least 1mA but BLE should keep on advertise. Please help me in this regards. |
@Yulong-espressif can you tell us a release date for BLE modem sleep (version 3.1)? Moreover I would be interested in the current consumption in BLE modem sleep mode. We are planning to develop a low power product, therefore the current consumption is the most critical part of the project. |
@Yulong-espressif Is BLE wakeup going to be in the next version? |
@sargun Yes, will be release in the version 3.1 |
Actually, both BR/EDR and BLE power save will be released in release/v3.1. |
Thanks for the update, TianHao-Espressif . |
Features has been implemented few days ago. I tried it and it works. With the exactly same features (time interval=50ms, 15B per packet, notify enabled) power consumption passed from 102mA to 35-40mA. Data exchange is not fluid ad before, but don't know the cause. |
@frax84 , the BLE/BR/EDR sleep current and related performance is in test. And what "not fluid" present. Could you provide your test case? |
@TianHao-Espressif Hi Tiao! Actually was not a complain but was just informing the others in this post. By the way, your explanation is very interesting. This is my use case:
With the term "no fluid" i mean that while before (was using BLE with BTDM mode) data were coming evenly time-spaced ("1-2-3-4-5-6-7-8-9-10") now they tend to come less evenly spaced (i.e. "1-2---34--5-6-7--8---9-10"). I have not test data to show but what i'm saying is clearly visible with eye (while with previous settings it was ok) I have two questions.
Thank you EDIT: edited some typos and added more infos about my use case |
Hi All, I have been optimising our ESP32 application for low power at the moment. The lowest consumption with BLE enabled (BT-classic disabled) is around 28-32mA when advertising with a 200ms interval Im just wondering if i am at the limit of what the ESP32 can currently do. I understand that as this chip supports BLE and WiFi the power consumption during transmit and Reception will be higher than a BLE only chip. However since BLE operates on the connection interval paradigm, if there is a 40ms connection interval or a 200ms advertising interval, surely the radio could be disabled between connection intervals saving power during these periods? This would likely result in a much lower average current. Thanks in advance for your response. |
@lucashutchinson Did you try to change TX power? By default it is setup pretty high (+3dBm). Remember that you can decrease TX power for advertising only if you want. |
hi all: |
Hi @chegewara @Weijian-Espressif Yes I have tried changing the TX power between N12 and P9, no real difference was noticed. however i am going to do a few more tests. I have enable bluetooth modem sleep options, and have tried both ORIG and EVED modes. I have also called the functions: Do you have any internal test results of low power bluetooth that can be shared? Thanks for your responses! |
@lucashutchinson . 30mA is in accord with our internal test result for BLE advertising in current stage. In order to further optimize the bluetooth power consumption, we are trying to resolve the issue in the combination use of bluetooth modem sleep and Dynamic Frequency Scaling(DFS) as well as Automatic light sleep. which can hopefully be completed in a month. |
@lucashutchinson Could you help share if any updates for this issue? Thanks. |
1 similar comment
@lucashutchinson Could you help share if any updates for this issue? Thanks. |
There are no updates that I have had from espressif. |
Hi, a commit on optimization of Bluetooth power consumption was merged into ESP-IDF recently. The merge commit is(git describe --tag): v4.0-dev-684-gb859584. An external 32.768kHz crystal is required to take advantage of this feature. Here is the description for this commit and a brief manual. Feature: Bluetooth modem sleep with external 32.768kHz xtal under light sleepOverviewBluetooth modem sleep could work under DFS but could not work under light sleep in previous implementation, which is largely due to the sleep clock source. Sleep clock must provide enough accuracy for BLE to maintain time during sleep.
This patch resolves the issue that Bluetooth modem sleep is not allowed to work with light sleep with external 32kHz crystal. In this case a menuconfig option is provided to set the BLE SCA used to estimate RX window widening during connection events. User guideTo use bluetooth modem sleep with light sleep, please follow the below instructions. ESP-IDF menuconfig options:
Note: Tickless idle needs to be enabled to allow automatic light sleep. FreeRTOS will enter light sleep if no tasks need to run
Note that the "additional current" option is a workaround for a hardware issue on ESP32 that the crystal can fail in oscillating.
Enable light sleep by calling power management API in application:
Test resultBelow are some power consumption statistics on typical BLE use scenario:
|
Hi @mywang-espressif Could you confirm some values? From what i see in some cases with
VS
Min and max values are lower, but average current draw is higher with 80MHz. Anyway thanks for new feature and comprehensive update about it. PS only what is missing is comparison with current draw without light sleep enabled. |
After applying the modem sleep mode for BLE under light sleep, some of the chips keep reset and not working. |
Hi @clleeIngenio , Could you please provide the following information?
Thanks |
hi i am using esp32-c3 devkitC for BLE mesh application, initially it is consuming 90milli amps current ,even after adding external 32khz crystal for RTC Clock and modem sleep the current consumption is same ,is there anything i am doing wrong, kindly help me with this Thank you. |
Hi @Paramesh19 , Please take a look at this user guide. If the problem still exists, please provide the log and sdkconfig. Thanks |
@xiongweichao I have done the same configurations which you mentioned above for BLE Mesh on-off server example the consumption was same,(Without external crystal-83mAmps,With external crystal 83m Amps ) No change in the current consumption, I am attaching the SDK Config file and log file Kindly help me with this, Thank you.... sdkconfig.txt |
Hi @Paramesh19 , You may need to add this code to your project.
Thanks |
Hai, |
Hi @Paramesh19 , Since the SCAN_INTERVAL is too small, it cannot enter sleep mode. Thanks |
@xiongweichao Hi, i think i am not using scanning parameter in my main code ,even though i have increased it to (0x70)(initially 0x20)but no improvement, how much should i put to enter into sleep mode.... |
Hi @Paramesh19 , This is the result of my test (scan interval = 0x70). Please try using this sdkconfig. sdkconfig.txt By the way, this is just for testing, I don't recommend you modify the scan interval in your project. For BLE MESH issues, you can create a new issue. Thanks |
@xiongweichao Sorry for disturbing you ,but i am really stressed with this, I need to know which tool or hardware you are using to measure current ,(In which tool you are getting these logs).... |
Seems like a Saleae |
OTII arc is the best |
Hi!
Clock - main 40MHz. Role - peripheral device. Problem: advertising stops after 20 - 60 minutes. All other tasks work and high current consumption. The following checks do not indicate a cause:
If you make a function call with another task:
monitor does not display result of ESP_LOGI() If connect (smartphones or pc) or disable light sleep:
it works. How to find the reason for stopping advertising? |
Hi @dashkova ,
Thanks |
Hi!
BLE only.
In debug mode:
|
Hi @dashkova , Sorry, I didn't reproduce this issue. May I ask you are using power_save example? I think you can add some debug information here. Thanks |
Hi! If you add:
SPI is not used, but the advertising is interrupted. |
Yes, this is the basis of my code. |
Hi @dashkova , I used the following code to test and did not reproduce the problem. May I ask if you have other modifications? #define MOSI_IO_NUM 11
#define SCLK_IO_NUM 12
spi_device_handle_t spi_handle;
void SPI_Init(void)
{
spi_device_interface_config_t devcfg = {
.clock_speed_hz = 6600000,
.mode = 0,
.queue_size = 7,
};
spi_bus_config_t buscfg = {
.mosi_io_num = MOSI_IO_NUM,
.sclk_io_num = SCLK_IO_NUM,
.max_transfer_sz = 40,
};
spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_DISABLED);
spi_bus_add_device(SPI2_HOST, &devcfg, &spi_handle);
}
void app_main(void)
{
/* ...... */;
SPI_Init();
} Thanks |
Hi!
I added: #define ADVENTURE_INTERVAL_MIN 3000
#define ADVENTURE_INTERVAL_MAX 3100
struct ble_gap_adv_params adv_params;
/*
Other code
*/
adv_params.itvl_min = ADVENTURE_INTERVAL_MIN;
adv_params.itvl_max = ADVENTURE_INTERVAL_MAX; If the intervals are lower (ex. 2500, 2600), then it works. |
@dashkova If you disable modem sleep, will this problem still exist? |
if disable light sleep, it works. esp_pm_config_t pm_config = {
.max_freq_mhz = 160,
.min_freq_mhz = 40,
.light_sleep_enable = false
}; 24 hours and more - no problem. |
Hello, is it possible to have the ESP32-S3 powered on (in this state it draws ~40 mA), with Wi-Fi off, but BLE on advertising or waiting for a connection in this low power state? I do not mind using the internal XTAL, as the ESP32-S3 is already on. Currently an average power consumption of 100 mA is recorded when sending advertisement packets every 65 ms. How much more power (above the 40 mA base) would be consumed if the ESP32-S3 would listen out for a BLE advertisement in this lower power BLE state? |
Hi,
I wish to know when can i expect the low power modes in ble? would this feature be added in the next release v3.0?
currently i observe that with single core and 80 Mhz, the device consumes around 80-90 mA.[minimum i was able to achieve]
is it the best we can achieve ? or is there any way to improve the power consumption with current idf version?
The text was updated successfully, but these errors were encountered: