Connected Mode DRX
How C-DRX Schedules Sleep While the Radio Bearer Stays Up
When a UE is in RRC_CONNECTED it has live radio bearers and could be scheduled by the base station at any subframe, which normally forces it to decode the PDCCH every transmission time interval. That constant monitoring keeps the receiver chain, the local oscillator, and the baseband demodulator powered, draining the battery even when no user data is flowing. Connected mode DRX breaks that requirement: the network configures a DRX cycle, and the UE only listens during a short on-duration at the front of each cycle. Outside that window the device is permitted to gate its clocks and collapse RF power rails, then re-synchronize before the next on-duration.
The behavior is governed by a small set of MAC timers signaled in the RRC reconfiguration. The drx-onDurationTimer sets how long the UE listens at the start of each cycle. If a grant is received, the drx-InactivityTimer starts and the UE keeps monitoring; every new grant restarts it, so an active burst naturally extends the awake period. When the inactivity timer expires the UE optionally moves through a short DRX cycle for a configured number of cycles before settling into the longer cycle, giving the scheduler a grace period in case traffic resumes.
Because the radio context is retained, the cost of C-DRX is bounded latency rather than the multi-second re-attach penalty of leaving connected mode entirely. A downlink packet that arrives just after the UE sleeps must wait at most one DRX cycle before the next on-duration, which is why latency-sensitive bearers such as VoLTE pair C-DRX with very short cycles or suspend it during active talk spurts.
C-DRX Timers and Duty Cycle
D ≈ TonDuration / TDRXcycle
Average Receiver Power:
Pavg ≈ D × Pactive + (1 − D) × Psleep
Worst-Case Added Downlink Latency:
Lmax ≈ TDRXcycle − TonDuration
Where TonDuration = on-duration window, TDRXcycle = long DRX cycle period, Pactive = receiver-on power, Psleep = gated sleep power. Example: Ton = 10 ms, Tcycle = 320 ms → D ≈ 3.1%, so the receiver is idle for ≈ 97% of the cycle.
DRX Modes and Parameter Ranges
| Mode / Timer | Typical Range | RRC State | Purpose | Effect on Latency |
|---|---|---|---|---|
| Idle mode DRX | 320 to 2560 ms paging cycle | RRC_IDLE | Wake at paging occasions only | High (up to paging cycle) |
| C-DRX long cycle | 40 to 320 ms | RRC_CONNECTED | Deep sleep during quiet periods | Moderate (≤ 1 cycle) |
| C-DRX short cycle | 2 to 64 ms | RRC_CONNECTED | Bridge after inactivity timer | Low |
| drx-onDurationTimer | 1 to 200 ms | RRC_CONNECTED | Mandatory listen window per cycle | None (always awake) |
| drx-InactivityTimer | 10 to 200 ms | RRC_CONNECTED | Stay awake after each grant | None (extends wake) |
Frequently Asked Questions
What is the difference between connected mode DRX and idle mode DRX?
Idle mode DRX runs in RRC_IDLE, where the UE only wakes at paging occasions on a 320 ms to 2560 ms paging cycle. C-DRX runs in RRC_CONNECTED, where a radio context exists and data may be scheduled at any time, so cycles are shorter: 40 to 320 ms long and 2 to 64 ms short. Idle DRX maximizes sleep because traffic is unexpected; C-DRX trades some sleep for the responsiveness an active session needs.
How do the on-duration timer and inactivity timer interact in C-DRX?
Each cycle the UE wakes and runs drx-onDurationTimer to monitor the PDCCH. With no grant it sleeps again until the next cycle. If a grant arrives it starts drx-InactivityTimer (10 to 200 ms typical) and keeps listening; every new grant restarts that timer, so busy sessions stay awake. Only when the inactivity timer expires does the UE return to DRX sleep, optionally through short DRX before the long cycle.
How much battery does connected mode DRX actually save?
It scales with duty cycle, on-duration divided by cycle length. A 10 ms on-duration on a 320 ms long cycle keeps the receiver active about 3% of idle time, gating RF and baseband for roughly 97% of the period. Real deployments cut modem power 40 to 60% during bursty traffic. The cost is up to one DRX cycle of added downlink latency, which is why VoLTE uses short cycles or suspends DRX during speech.