Model cellular PSM and eDRX energy versus reachability
Plan PSM, eDRX and retry choices against a hypothetical whole-device energy and downlink-latency requirement.

Plan PSM, eDRX, retries and service-continuity checks; record assumptions and retest triggers as required by the Cellular IoT module guide.
Predict the reading, then compare it with the measurement.
Python 3 in your browser (JupyterLite)
Python · no installPlan PSM, eDRX and retry choices against a hypothetical whole-device energy and downlink-latency requirement.
Open the notebook in your browser and run each Python cell; no install or account is needed.
Three ways to run: use JupyterLite here with no install; run main.py locally from the downloadable lab folder; or open the same notebook in Google Colab.
Steps
Step 1
- Do
- In the notebook editor, run the Step 1 notebook cell. Freeze whole-device current and timer assumptions.
- You will see
- The run prints 24 reports/day, 90 mA active current, 8 mA listen current and 0.02 mA PSM current.
- Why it matters
- Power calculations need an explicit measurement boundary.

Step 1 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab) Step 2
- Do
- In the notebook editor, run the Step 2 notebook cell. Price zero, one and two retries.
- You will see
- The run prints daily energy for each retry case using repeated eight-second active events.
- Why it matters
- Coverage retries can erase apparent sleep savings.

Step 2 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab) Step 3
- Do
- In the notebook editor, run the Step 3 notebook cell. Change post-report reachability time.
- You will see
- At one retry, daily energy rises from 10.078 mAh at zero listen time to 13.270 mAh at 60 seconds.
- Why it matters
- Reachability has an energy cost in the model.

Step 3 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab) Step 4
- Do
- In the notebook editor, run the Step 4 notebook cell. Model a hypothetical eDRX cycle.
- You will see
- A 40-second eDRX cycle with two seconds of paging yields about 20 seconds mean wait.
- Why it matters
- Downlink latency must be checked alongside battery life.

Step 4 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab) Step 5
- Do
- In the notebook editor, run the Step 5 notebook cell. Compare PSM and continuous eDRX scenarios.
- You will see
- The model gives 11.142 mAh/day for PSM and 19.611 mAh/day for continuous 40-second eDRX.
- Why it matters
- An energy comparison should state its duty cycle.

Step 5 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab) Step 6
- Do
- In the notebook editor, run the Step 6 notebook cell. Record the field approval boundary.
- You will see
- The run calls for whole-device current and granted network timers before choosing a policy.
- Why it matters
- Requested timer values are not proof of granted behavior.

Step 6 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
Chapter checks
These questions refer to the chapter’s examples. Use the return links to review their answers.
A prototype requests long PSM timers and the spreadsheet shows excellent battery life, but the test report only includes requested values and a modem-only sleep-current measurement. What should the reviewer do?
Return to the chapter’s knowledge checkA fleet uses PSM for normal daily reports and eDRX during a monthly maintenance window. Which evidence best proves the under-the-hood state machine is safe?
Return to the chapter’s knowledge check