Board: nRF54LM20A DK NCS version: v3.2.1 Sample base: nrf/samples/zephyr/subsys/usb/cdc_acm
Background
I am evaluating power consumption on the nRF54LM20A DK before integrating both USB (CDC ACM) and Bluetooth LE into a production product. I noticed an unexpected increase in sleep current when CONFIG_BT=y is added, even though the Bluetooth stack is never initialized or used in the application code.
Test Setup
I started from the standard cdc_acm sample, modified main() as shown below, and added the following to prj.conf:
CONFIG_PM_DEVICE=y
CONFIG_PM_DEVICE_RUNTIME=y
main.c (simplified):
int main(void) {
int ret;
if (!device_is_ready(uart_dev)) {
LOG_ERR("CDC ACM device not ready");
return 0;
}
ret = enable_usb_device_next();
if (ret != 0) {
LOG_ERR("Failed to enable USB device support");
return 0;
} return 0;
}All other code and configuration are identical to the stock sample.
Measurement Procedure
-
Flash firmware, then measure current before inserting USB — result: ~4 µA
-
Insert USB VBUS, then remove it — result: current rises to ~270 µA
-
Only a full reboot restores the current to ~4 µA
Reproducing the Problem
When I add only the following line to prj.conf (keeping everything else the same), the issue appears:
CONFIG_BT=yWithout CONFIG_BT=y, the current correctly returns to ~4 µA after VBUS is removed.
The Bluetooth stack is never initialized (no bt_enable() call) and no BLE functionality is used in the test code.
Questions
-
Is this a known interaction between the USB device stack and the Bluetooth subsystem on the nRF54LM20A when
CONFIG_BT=yis set, even without the stack being actively used? -
Does enabling
CONFIG_BT=yimplicitly activate peripherals or clocks that are not released properly after USB VBUS removal? -
Is there a recommended way to cleanly handle VBUS removal and ensure all relevant peripherals (including those pulled in by
CONFIG_BT=y) return to their low-power state without a full reboot?
Any guidance or pointers to relevant documentation or samples would be greatly appreciated. Thank you.