---
title: "From API to Practice: Full Analysis of Raspberry Pi Pico Low‑Power Software Control Usage and Caveat"
url: "https://maker.wiznet.io/ruilixin6/projects/from-api-to-practice-full-analysis-of-raspberry-pi-pico-lowpower-software-control-usage-and-caveat/"
markdown_url: "https://maker.wiznet.io/ruilixin6/projects/from-api-to-practice-full-analysis-of-raspberry-pi-pico-lowpower-software-control-usage-and-caveat/md"
type: "UCC: User Created Content"
author: "FreakStudio"
author_url: "https://maker.wiznet.io/ruilixin6/"
original_author: "Freakstudio"
original_url: "https://f1829ryac0m.feishu.cn/drive/folder/Fh5Eftd3WlbEIIdHGdtcSsIgn7c?from=fq"
published: "2026-08-24"
language: "en"
likes: 0
views: 78
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# From API to Practice: Full Analysis of Raspberry Pi Pico Low‑Power Software Control Usage and Caveat

> Comprehensive explanation of MicroPython low‑power API, practical usage and common pitfalls for Raspberry Pi Pico RP2040.

Original author: Freakstudio (source: https://f1829ryac0m.feishu.cn/drive/folder/Fh5Eftd3WlbEIIdHGdtcSsIgn7c?from=fq)

## Article

【Preliminary Note】The original hardware example in this article was written based on the RP2040. The actual hardware used in this hands-on demonstration features the W55RP20 as the main controller chip. The circuit logic and UF2 flashing operation principles are universally applicable, with only the main controller model differing. The original chip model mentioned in the circuit descriptions below is provided for reference purposes only.

![](https://maker.wiznet.io/upload/ckeditor5/383111824%5F1787570049%2Epng)

1. Low‑power mode configuration methods in machine module

The MicroPython `machine` module provides multiple methods for low‑power modes and wake‑up mechanisms as shown in the tables below:

![1.png](http://openwrite.cn/uploads/21597/64037/df676ad0-8810-4e4a-b472-25a58d9cd171.png)

![2.png](http://openwrite.cn/uploads/21597/64037/5042ac90-1504-4f42-9c74-275def1d1c53.png)

Some platforms provide RTC (Real‑Time Clock) for scheduled wake‑up. For example, in deep‑sleep mode you can configure the RTC timer to wake the device after a specified duration. Method documentation is available here：<https://docs.micropython.org/en/latest/library/machine.RTC.html>

![3.PNG](http://openwrite.cn/uploads/21597/64037/6c2cdbb4-12dc-4a3f-96b1-44e3f7bef4c5.png)

Open the terminal and run command `dir(machine)`. The output is shown below:

![4.PNG](http://openwrite.cn/uploads/21597/64037/e88ac097-6154-40b2-92b3-15a8f5cad76a.png)

On Raspberry Pi Pico, `machine.wake_reason()` is not available. For `machine.reset_cause()`, only return values `WDT_RESET` and `PWRON_RESET` are supported.

![5.PNG](http://openwrite.cn/uploads/21597/64037/35d2b1de-2753-41c3-b5ed-6a13b22adfbf.png)

1. Known issues when entering low‑power modes with MicroPython on Raspberry Pi Pico

Note that the implementations of `machine.deepsleep([time_ms])` and `machine.lightsleep([time_ms])` have defects in MicroPython v1.23.0. Correct wake‑up cannot be guaranteed, and sleep duration is limited to less than 127 seconds. Refer to the links below for details：

https://github.com/ghubcoder/PicoSleepDemo/issues/2

https://github.com/orgs/micropython/discussions/9969

![7.png](http://openwrite.cn/uploads/21597/64037/d51555a2-988f-40ce-beed-ac901a54efeb.png)

In short, after deep‑sleep / dormant mode, the UART peripheral on Pico may show unexpected behaviour, such as restrictions on transmitted or received characters. REPL reconnection may fail, and communication with the host computer breaks after sleep‑and‑reinitialization.

Possible workarounds are documented at：https://ghubcoder.github.io/posts/deep-sleeping-the-pico-micropython/]

![7.png](http://openwrite.cn/uploads/21597/64037/7c55e5cd-975b-4a5f-957e-34d206d7d9b0.png)

The general solution is to compile a custom MicroPython firmware integrating the Pico SDK and pico‑extras libraries, and use custom modules for deep‑sleep and wake‑up to avoid above‑mentioned bugs.

For beginners, low‑power scenarios are not very common. Most power consumption of the system comes from external sensors and driver circuits. Therefore it is recommended to use `machine.idle()` whenever low‑power behaviour is required.

Another important limitation: on Raspberry Pi Pico, timers under MicroPython run as software timers and cannot wake‑up the CPU. This means software timers cannot generate hardware interrupts to bring the chip out of low‑power modes. In addition, the on‑chip RTC peripheral of RP2040 has no interrupt capability and cannot wake‑up the CPU.

![9.png](http://openwrite.cn/uploads/21597/64037/b49b7743-70a4-424d-adc7-dd7bb6de0f1e.png)

When Raspberry Pi Pico enters low‑power modes, **only external interrupts can wake the system**.

---

Source: https://maker.wiznet.io/ruilixin6/projects/from-api-to-practice-full-analysis-of-raspberry-pi-pico-lowpower-software-control-usage-and-caveat/
