raspberrypi / pico-sdk

BSD 3-Clause "New" or "Revised" License
3.25k stars 838 forks source link

Pico W higher idle current consumption after receiving BLE scan results #1696

Open matsobdev opened 2 months ago

matsobdev commented 2 months ago

When there is no communication between CYW43439 and RP2040 (no CYW GPIO, nor HCI commands for Bluetooth), current consumption will drop by about 5 mA (at 3,6 V VSYS). When starting LE scan for advertisements with no advertisements present, depending scan window and interval setting it will go higher accordingly, but after approx. 3 seconds will drop by 5 mA as expected again. When advertisements will be in range and events start coming to RP2040, current consumption will boost that 5 mA. Turning off advertisements will stops events traffic, thus after 3 seconds current consumption will drop not by 5 mA, but only 1 mA. Starting and stopping scan couple seconds on, couple seconds off make it a bit harder to latch at that higher idle power consumption state, but turning advertisements on and off during scan on time will make it happen eventually. Starting scan when advertisements are present will not cause that phenomenon to happen at the first absence of advertisements, so turning advertisements off will cause current consumption to be lowered by 5 mA. But turning them back on and off, and current drop will be about 1 mA. Using whitelist and having non-matching advertisements equals to no-whitelist without advertisements present at all scenario. Matching advertisements presence with whitelist scan acts the same as no-whitelist scan with advertisements presence. Pico W scans only, advertisements coming from a remote device(s), to be clear. For example, hundreds onboard LED toggles doesn't trigger this behaviour. This is not a BTstack issue. Using only HCI commands (reset, scan parameters and scan on) without BTstack involved at build time ends up with the same behaviour. Some files to play with: bug.zip