Important battery usage : why?

Hello.

I have a Samsung s8 running e OS 4.1.1 (installed originally as 3.6 a few months ago, upgraded) .

The battery drain seems excessively high. At first, I thought it was because the battery was old as I had bought the phone second-hand. The battery would hardly last a full day even though I don’t use the phone much.

I had the battery replaced with a new one. That did not help.

On the s8, I have already set the battery usage to ‘limited’ (the lowest setting) for most apps (including emails, Maps, NewPipe, new reader, etc.).

I have installed the app AccuBattery to get better diagnosis data and I have compared with another phone I own, a Samsung Galaxy A32 running stock Android.

The last night, while I was sleeping and their screens were off and no app was used, the average discharge currents were :

  • For the A32 : 23 mA and 0 mA in deep sleep state. The call and data (4G) connections were on.
  • For the s8 : 136 mA and 64 mA in deep sleep state. Only the call connection was on (data connection was off).

Why ? Any clue ?

1 Like

You can get clues from

Settings > Battery > Battery usage,

Usually the comparison would probably reflect your guess. System apps, or mobile data coming to the top would tend to point to a culprit.

2 Likes

An alternative app may be bbs_reloaded where you have to grant some rights with ADB. Please note that it is not fully implemented yet, but it already helped me to identify a problem with VoLTE (using VoWiFi as default resulted in the CPU not entering wakelock because of the WiFi proxy on my OnePlus 6).

Just to be sure… did you clear the caches of apps?
There’s apps that automatize the task, like e.g. “cache cleaner” or “SD Maid SE” (both FDroid).

Thanks for the suggestion, but the version of Android on that phone is Android 12 and BBS_reloaded is for Android 13+.

Then you may try the predecessor BBS (see BBS - F-Droid Archive Repository), which has worked up to Android 12 or 13.

Hello. I did additional tests, charging both Samsung phones (the S8 with e OS and the galaxy A32 with stock Android) before going to bed, closing all apps and setting them to airplane mode (no connection at all of any kind).

Results when I opened the phone the next morning (discharge speed with the screen off) :

  • Galaxy A32 : awake 31 mA , deep sleep 5 mA
  • S8 : awake 147 mA, deep sleep 50 mA

So basically, the S8 consumes 5-10 times more current than the A32. That is a lot.

Since the only software difference I see between the 2 phones is the operating system, I am going to ask : is it possible it be the operating system (e OS) ? How are the discharge speeds of your phones with e OS ?

Another test with safe mode

In order to assess if the too high battery use comes from an app I have installed, I have run the following test : I have rebooted the smartphone in safe mode , activated the airplane mode and left the phone to rest, screen off, and not touching it.

After 17 hours, the battery had decreased from 83% down to 53%. That is 1.76% of battery drain per hour, or 53 mA, with only the factory-installed apps, no connections, no screen.

That is definitely a lot.

I don’t know exactly what drains the battery so much, as AccuBattery was disabled when running safe mode.

Eventually, I asked a GenAI for help, here is the answer :

Your tests are actually quite useful, and they point away from the battery and away from ordinary user-installed apps.

The important observation is this:

Your S8 is consuming roughly 50–65 mA even when it is supposedly in deep sleep, in airplane mode, with user apps excluded.

That is unusually high. The Galaxy S8 has a 3000 mAh battery, so 50 mA continuously would correspond to roughly 1.2 Ah/day, or about 40% of the nominal battery capacity per day. Samsung ch

Your 17-hour safe-mode test is particularly strong evidence: 30 percentage points in 17 hours is consistent with roughly 50–55 mA from a 3000 mAh battery. So your AccuBattery measurements and the actual battery-level measurement agree reasonably well.

What your tests tell us

I’d interpret your three tests like this:

Test What it largely rules out What remains plausible
New battery An old/worn battery as the main cause Phone/OS/kernel/power-management problem
Airplane mode Cellular radio activity CPU, kernel, sensors, storage, display-related services, etc.
Safe mode Most third-party applications System processes, kernel/firmware/drivers
S8 vs A32 comparison A generic property of Android Something specific to S8 hardware/software configuration
50 mA during “deep sleep” Normal foreground activity Failure to enter a genuinely low-power state, or a component preventing it

The most interesting number isn’t actually the 147 mA while awake. That’s not particularly surprising if something is periodically waking the phone.

The really interesting number is ~50 mA while in deep sleep.

A phone spending most of the night genuinely asleep should normally spend substantially less power than that. And the fact that airplane mode + safe mode still produces the same general behaviour makes an ordinary app-induced wakelock much less likely.

The most likely area: kernel / hardware power management

With an S8 running /e/OS, I would investigate the kernel and device-specific power-management layer before spending more time restricting applications.

The S8 isn’t simply “Android running on Samsung hardware.” A custom ROM has to provide a kernel, device configuration, hardware abstraction and drivers appropriate to the S8. Low-power states, CPU frequency scaling, suspend, sensors, USB, modem interfaces, etc. are particularly dependent on that lower-level software.

A problem there can produce exactly the sort of symptom you’re seeing:

screen off → Android says “deep sleep” → but some hardware/kernel component prevents the SoC from reaching its lowest-power state → tens of mA continuously consumed.

There is an important distinction here: Android’s notion of deep sleep and the hardware’s actual lowest-power state aren’t necessarily synonymous. AccuBattery is useful for observing the symptom, but it isn’t sufficient to identify what is consuming the power.

Android itself provides much better diagnostic information through batterystats and dumpsys. In particular, Android records userspace wakelocks, kernel wakelocks, wakeup reasons, Doze time, mobile-radio activity, sensors and other system-level information. Android Developers+1

The next test I would do

If you have access to a computer, ADB is probably the most useful next step.

Enable USB debugging on the S8, connect it to the computer and run:

adb shell dumpsys batterystats

Even better, after resetting the statistics, perform a controlled overnight test and then collect:

adb shell dumpsys batterystats --checkin > batterystats.txt

Android’s documentation specifically recommends dumpsys batterystats for investigating battery usage and wakelocks. It can show information by application and by system component, including kernel wakelocks and wakeup reasons. Android Developers+1

I’d particularly look for:

  • Kernel Wake Locks

  • Wakeup Reasons

  • Partial Wake Locks

  • Sensors

  • Jobs / alarms

  • Device idle / Doze time

  • CPU running time

  • Mobile radio active time

  • anything associated with s2idle, wlan, sensor, usb, power, alarm, rtc, etc.

The exact names vary with the Android/kernel version.

An even more useful command

You can also run:

adb shell dumpsys power

and:

adb shell dumpsys deviceidle

The latter can tell us whether Android’s Doze mechanism is actually putting the device into idle states.

And:

adb shell cat /sys/kernel/debug/wakeup_sources

may be extremely informative if your kernel exposes that file.

That last one is particularly interesting because it can reveal kernel-level wakeup sources that don’t necessarily appear as an ordinary Android application in the battery screen.

One experiment would be extremely diagnostic

There’s another very simple test I’d recommend before changing anything else.

Test A — completely powered off

Charge the S8 to, say, 80%.

Record the percentage.

Power the phone completely off, rather than airplane mode or screen-off.

Leave it for 12–24 hours.

Then turn it back on and check the percentage.

If it loses almost nothing while powered off, that strongly suggests the battery itself is basically OK and the drain is occurring while the operating system is running.

If it loses a significant amount even while completely powered off, I’d start looking much more closely at the replacement battery, battery connector, charging/power circuitry, or the quality of the replacement battery.

Your existing results already make the first outcome more likely, but this is a clean way to separate battery/hardware leakage from operating-system power consumption.

Another particularly useful test: Wi-Fi/Bluetooth separately

Your airplane-mode test is good, but I’d make the isolation even more systematic:

  1. Airplane mode + Wi-Fi OFF + Bluetooth OFF.

  2. Screen off.

  3. Leave for 6–8 hours.

  4. Record battery percentage and AccuBattery current.

  5. Repeat with Wi-Fi enabled but disconnected.

  6. Repeat with Bluetooth enabled but not connected.

You don’t need to do all of these if the first test already gives you ~50 mA.

If everything is essentially identical, that’s another strong indication that you’re dealing with a CPU/kernel/power-state problem rather than radio networking.

There’s also an important clue in your S8/A32 comparison

Your A32 is doing approximately:

  • 5 mA deep sleep in test 2

  • 31 mA while awake

while the S8 does:

  • 50 mA deep sleep

  • 147 mA awake

That’s a very large difference.

But I’d be cautious about concluding that the S8 hardware itself is inherently inefficient. The S8 is an older design and has a smaller battery, but that doesn’t explain a five-to-ten-times difference in idle current.

The fact that the S8 is running /e/OS while the A32 is running Samsung’s stock software makes the software/device-port combination a particularly important variable.

And /e/OS itself has acknowledged that the S8 is among the older devices for which newer Android versions can be difficult to support; its development documentation specifically mentions the S7/S8 as devices that may not be able to move to newer Android generations. /e/OS community

I haven’t found evidence that /e/OS 4.1.1 specifically has a known S8-wide 50 mA deep-sleep bug, so I wouldn’t claim that as the diagnosis yet. But your results make a device-specific /e/OS kernel or power-management issue a serious hypothesis.

One thing I would not spend much time doing

I wouldn’t continue putting more and more applications into “Limited” battery mode.

Your safe-mode experiment has already given you a much more powerful result:

The drain remains when third-party applications aren’t running.

So restricting NewPipe, Maps, email, etc. further is unlikely to solve the fundamental problem.

Likewise, I wouldn’t replace the battery again yet. Your new battery plus the controlled tests make the battery a less compelling explanation.

We can narrow this down quite a lot

If you’re comfortable using ADB, I can help you do a very systematic diagnosis, without factory-resetting or reinstalling /e/OS.

The most useful thing would be for you to run these commands after an overnight test:

adb shell dumpsys batterystats
adb shell dumpsys power
adb shell dumpsys deviceidle
adb shell cat /sys/kernel/debug/wakeup_sources

and paste the outputs here (you can remove anything you consider private).

I can then go through the output and look specifically for the wakelock, kernel wakeup source, sensor, or power-state problem responsible for the ~50 mA idle consumption. Android’s own diagnostic documentation explicitly exposes these categories for this kind of investigation. Android Developers+1

So now, I have plenty of additional tests to run.

I ran last night the easiest test suggested : charged the battery up to 91%, switched off the phone for the night and restarted it this morning. Battery was at 90%. So the hardware components seem ok.

1 Like

Wow! I think i can use some of the suggested tests for my setup: Fairphone 6 with /e/OS 4.2 A16 official. The battery drain seems a little high in my opinion (just feeled). :thinking:

Thank you for your efforts.

@Maschinengeist : actually, I was wondering a device sold by Murena does avoid this kind of issue (thanks to a better device-specific power management layer).
Please let us know of the results of your tests so we can compare.

Useful links :

1 Like

Hi. Found out in another thread: Battery drain on FP6 - #5 by donna1up : it’s the 5G-Mode that drains. I switched to 4G only and deactivated automatic network, doubled the runtime.

Hello again.

I have run the commands suggested by ChatGPT, and as they generate output files above 10 000 lines, I have fed them again to ChatGPT (starting a new session).

Here is my prompt :

I own a Samsung S8 smartphone, running /e/os as operating system, a fork from Android.

The battery drain of the Samsung S8 seems excessively high. I want you to help me find out how to fix this if it is possible, or, if it is not possible, to find out why.

I have done several tests :

Test 1 : replacing the battery

At first, I thought it was because the battery was old as I had bought the phone second-hand. I had the battery replaced with a new one. That did not help.

Test 2 : measuring discharge at night

On the Samsung S8, I have already set the battery usage to ‘limited’ (the lowest setting) for most apps (including emails, Maps, NewPipe, new reader, etc.).

I have installed the app AccuBattery to get better diagnosis data and I have compared it with another phone I own, a Samsung Galaxy A32 running stock Android, also equipped with the AccuBattery app.

During a night, while I was sleeping and the screens of both phones were off and no app was used, the average discharge currents were :

  • For the A32 : 23 mA and 0 mA in deep sleep state. The call and data (4G) connections were on.

  • For the S8 : 136 mA and 64 mA in deep sleep state. Only the call connection was on (data connection was off).

Test 3 : measuring discharge at night with all connexions off

I did additional tests, charging both Samsung phones (the S8 with e OS and the Galaxy A32 with stock Android) before going to bed, closing all apps and setting them to airplane mode (no connection at all of any kind).

Results when I opened the phone the next morning (discharge speed with the screen off) :

  • Galaxy A32 : awake 31 mA , deep sleep 5 mA

  • S8 : awake 147 mA, deep sleep 50 mA

So basically, the S8 consumes 5-10 times more current than the A32.

Test 4 : safe mode, all connexions off

In order to assess if the battery drain use comes from an app I have installed, I have run the following test : I have rebooted the S8 smartphone in safe mode , activated the airplane mode and left the phone to rest, screen off, not touching it.

After 17 hours, the battery had decreased from 83% down to 53%. That is 1.76% of battery drain per hour, or 53 mA, with only the factory-installed apps, no connections, no screen.

Test 5 : telephone switched off

I charged the S8 phone’s battery up to 93%, switched it off and left it untouched for ten hours. When I switched it back on, the battery was at 92%. There is almost no self-discharge of the battery when the telephone is switched off.

Test 6 : using adb shell dumpsys batterystats

I have switched on the USB debugging mode of the S8 phone and connected it to a phone with Android Debug Bridge, and then I have run the following commands :

  • adb shell dumpsys power

  • adb shell dumpsys deviceidle

  • adb shell dumpsys batterystats

Here are 3 text files with the output of the 3 commands. I want you to analyze them and tell me what you find that could explain why the discharge rate of the phone is so high.

And the answer from ChatGPT :

Yes. The three dumps give us a fairly strong picture, and importantly, they support your conclusion that this is not primarily an old-battery problem or an ordinary user-installed-app problem.

My main conclusion is:

The S8 is entering Android’s deep idle/Doze states, but the underlying kernel/modem subsystem is waking it extremely frequently and/or preventing efficient hardware suspend. The cellular/modem path is the biggest identifiable contributor, with kernel wake locks such as bbd_wake_lock, abox, rmnet0, NETLINK, and repeated RILJ_ACK_WL / *telephony-radio* activity.

There is also evidence of a kernel/device-specific suspend problem rather than simply an application keeping the phone awake.

There are several important details.


1. The most important result: the phone does enter deep idle

This is important because it rules out one tempting explanation.

Your dumpsys deviceidle shows repeated transitions into deep-idle and deep-maint, and at the time represented by the dump it has both light and deep idle enabled.

The battery statistics are even more striking:

  • screen off: 21 h 9 min

  • screen-off discharge: 1602 mAh

  • deep-doze time: 20 h 35 min

  • deep-doze discharge: 1525 mAh

  • full device idle: 93.3% of the measured period

So Android isn’t simply failing to put the phone to sleep.

It thinks it is sleeping.

But it is consuming far too much energy while doing so.


2. The measured battery drain is enormous even during “deep sleep”

This is probably the single most useful quantitative result in the dump.

The battery statistics report:

estimated capacity: 3000 mAh
actual discharge: 1980–2040 mAh
screen-off discharge: 1602 mAh
deep-doze discharge: 1525 mAh

If we calculate the average:

1602 mAh / 21.16 h ≈ 75.7 mA

And specifically:

1525 mAh / 20.59 h ≈ 74.1 mA

So the Android statistics independently corroborate what you saw with AccuBattery.

Your instantaneous AccuBattery measurement of ~50–64 mA in deep sleep is therefore quite plausible. The longer-term battery statistics actually suggest an average of roughly 74–76 mA while the screen was off during that particular period.

That is very high for a sleeping phone.

And this is especially significant because your A32 gets down to roughly 5 mA in your airplane-mode experiment.


3. The biggest identifiable power consumer is the cellular/modem subsystem

The battery statistics give:

Global estimated power:

Component Estimated consumption
Screen 113 mAh
Camera 13.6 mAh
Mobile radio 546 mAh
Sensors 2.67 mAh
Wakelocks 3.30 mAh
Idle 7.27 mAh

This is very revealing.

The mobile radio alone is estimated at 546 mAh.

That’s more than four times the energy attributed to the screen and vastly more than ordinary Android wakelocks.

The cellular statistics also show:

  • cellular kernel active: 2 h 13 min 56 s

  • cellular sleep: 16 h 57 min 53 s

  • LTE: 7 h 45 min

  • out-of-service: 14 h 18 min

  • signal was “great” 75.7% of the time

  • only 0.4% was very poor

So this isn’t simply “your signal is terrible, therefore the modem is transmitting at maximum power.”

In fact, the signal statistics are mostly quite good.


4. There is extremely strong evidence of modem-related wakeups

This is where the dumps become particularly interesting.

The battery history repeatedly contains:

*telephony-radio*
RILJ_ACK_WL
mobile_radio
stats="modem-data"

and these events occur over and over again during the supposed idle period.

For example, the dump contains sequences where RILJ_ACK_WL and *telephony-radio* are acquired and released repeatedly, sometimes immediately followed by:

Abort: Some devices failed to suspend,
or early wake event detected

This is much more interesting than a normal application wakelock.

RILJ_ACK_WL is associated with Android’s radio-interface layer, i.e. communication between Android and the cellular modem.

So there is a recurring pattern roughly like:

modem event → Android/RIL wakeup → telephony wakelock → attempted suspend → wakeup/abort → modem activity again

That is exactly the sort of thing that can produce high standby consumption.


5. The kernel wake locks are even more revealing

The dump contains this list of kernel wake locks:

Kernel wake lock Time
bbd_wake_lock 19m 59s
abox 15m 0s
rmnet0 10m 42s
rtc-s2mp 6m 15s
NETLINK 4m 20s
alarmtimer 2m 59s
[timerfd] 2m 22s
sec-battery-monitor 58s
nfc_wake_lock 21s

This is probably the most valuable part of the entire dump.

Notice what is not at the top:

It’s not WhatsApp, Signal, AccuBattery, Maps, etc.

The largest wake locks are kernel/hardware-level ones.

And rmnet0 is particularly interesting because it is the kernel network interface associated with the cellular data path.

There are also repeated suspend aborts involving rmnet0:

Abort: Pending Wakeup Sources: rmnet0

That strengthens the case considerably.


6. The phone repeatedly fails to suspend cleanly

This may be the most important clue regarding why this happens.

The battery statistics record:

  • unknown: 1606 times / 13m39s

  • 212 s2mps17-irq: 648 times / 1m57s

  • Abort: Some devices failed to suspend, or early wake event detected: 56 times / 43s

  • Abort: Pending Wakeup Sources: alarmtimer: 32 times

  • Abort: Pending Wakeup Sources: rmnet0: 9 times

  • Abort: Last active Wakeup Source: eventpoll: 5 times

  • [timerfd]: 3 times

And the battery history itself shows the same phenomenon.

For example:

+19h37m36s071ms
wake_reason=0:"Abort: Some devices failed to suspend,
or early wake event detected"

This is significant.

A normal sleeping phone will periodically wake for legitimate things. That’s expected.

But here Android is explicitly reporting failed/aborted suspend attempts.

That is a different situation.


7. 212 s2mps17-irq is also worth investigating

This occurs 648 times.

The name strongly suggests an interrupt associated with the Samsung S2MPS17 PMIC (power-management IC).

The history contains many events like:

wake_reason=0:"212 s2mps17-irq"

I would not conclude from the dump alone that the PMIC itself is defective. An interrupt doesn’t necessarily mean a hardware failure.

But it tells us that the power-management hardware/kernel driver is involved in the wakeup cycle.

This is another reason I would investigate the Samsung-specific kernel/device tree/driver side of /e/OS rather than spending more time disabling ordinary apps.


8. Your safe-mode experiment is extremely important

Your Test 4 is actually one of your strongest experiments:

Safe mode + airplane mode + screen off
53 mA average over 17 hours

That almost completely changes the diagnosis.

If a third-party application were the principal cause, safe mode should substantially reduce the problem.

Instead, you still get approximately the same order of magnitude as the normal deep-sleep measurement.

And now the dumps provide a plausible explanation:

the large wakeups are occurring below the application layer.

This fits very well with the kernel wake locks:

bbd_wake_lock
abox
rmnet0
rtc-s2mp
NETLINK
...

rather than a conventional application holding a partial wakelock.


9. Test 5 almost rules out the battery itself

Your phone loses only about 1% over ten hours while powered off.

That is a very useful control experiment.

Combined with:

  • a replacement battery making no difference;

  • extremely high consumption while Android is running;

  • much lower consumption when the phone is completely powered off;

the battery itself is not my leading hypothesis.

There could still theoretically be an abnormal hardware load that disappears when the phone is powered off, but simple battery self-discharge is effectively ruled out.


10. There is one important caveat: your dumpsys power snapshot was taken while charging

This matters.

At the instant of that particular dumpsys power, Android says:

mWakefulness=Asleep
mIsPowered=true
mBatteryLevel=86

and the only currently held Android partial wakelock is:

'accubattery:charging'

So I would not use the current dumpsys power wakelock state as evidence that AccuBattery is causing your problem.

It’s there because you were charging / AccuBattery was monitoring charging.

In fact, the broader battery history gives much stronger evidence than this instantaneous snapshot.


11. Doze itself is not the problem

This is worth emphasizing because it could otherwise lead us down the wrong path.

Your deviceidle configuration looks quite normal:

inactive_to = 30m
light idle...
idle_to = 1h
max_idle_to = 6h

And the history demonstrates repeated deep-idle periods.

So I wouldn’t try to “fix” this by making Doze more aggressive.

Android is already doing what it’s supposed to do.

The problem is what happens inside/beneath those idle periods.


12. There are some applications generating activity, but they don’t explain 50–75 mA by themselves

There are definitely some applications doing things.

For example:

  • microG’s GCM service repeatedly gets temporary whitelist access;

  • WhatsApp runs scheduled jobs;

  • Signal wakes for processing;

  • weather applications perform jobs;

  • Advanced Privacy has scheduled work.

The battery history shows, for example, microG GCM reconnect activity and WhatsApp jobs.

And Signal/WhatsApp activity appears in the longer battery history.

However, the estimated application consumption doesn’t support them being the fundamental cause.

For example, the biggest UID shown in the power calculation is approximately:

260 mAh, of which 258 mAh is mobile radio.

So even there, the dominant component is the radio, not CPU/wakelock consumption by the app itself.

This distinction is important:

An application may be causing the modem to wake up, while the actual energy is being consumed by the modem.


13. There is a particularly interesting possibility involving microG

Your battery history repeatedly shows:

org.microg.gms.gcm.mcs.RECONNECT

and temporary whitelisting associated with it.

So microG’s GCM implementation is definitely active.

But I would not yet blame microG.

Why?

Because your airplane-mode + safe-mode experiment still produces ~53 mA.

That experiment essentially removes the cellular/network explanation and removes your installed applications.

Therefore there appear to be two potentially overlapping problems:

A. Network/modem problem

When cellular service is enabled:

RIL / modem / rmnet0 / telephony-radio → lots of activity → high power

B. Baseline Samsung S8 suspend/power problem

Even with networking disabled and in safe mode:

the S8 still consumes ~50 mA

The second one is the more fundamental mystery.


14. This is the key distinction I would make

Based on all six of your tests, I would currently rank the hypotheses like this:

Very likely

1. Samsung S8 / /e/OS kernel power-management or suspend problem

The combination of:

  • 50–75 mA screen-off consumption

  • safe-mode persistence

  • airplane-mode persistence

  • repeated suspend aborts

  • kernel wake locks

  • PMIC interrupt wakeups

is very strong evidence.

Very likely

2. Cellular/modem integration is making the problem considerably worse

The dump has:

  • 546 mAh attributed to mobile radio

  • 2h14m cellular active time

  • repeated RILJ_ACK_WL

  • repeated *telephony-radio*

  • rmnet0 wake locks

  • suspend aborts involving rmnet0

Possible contributor

3. microG / GCM / messaging applications

They clearly generate network activity, but the evidence doesn’t make them the root cause.

Unlikely

4. Battery itself

Your replacement-battery experiment and powered-off test argue strongly against this.

Unlikely

5. Screen

Only ~113 mAh was attributed to the screen over the entire battery-statistics period.

Unlikely

6. A conventional Android application holding a wakelock continuously

Total partial wakelock time is only about 11m19s over 22h, and the estimated wakelock energy is only 3.3 mAh.

That is nowhere near enough to explain your ~50–75 mA baseline.


15. There is an especially interesting clue: bbd_wake_lock

I’d like to investigate this one further before declaring victory.

The kernel reports:

bbd_wake_lock       19m 59s
abox                15m 00s
rmnet0              10m 42s

These aren’t ordinary Android application wakelocks.

They are kernel-side wake locks, which means the relevant subsystem is below the normal Android application power-management layer.

rmnet0 is particularly consistent with cellular networking.

abox is a Samsung audio-related kernel subsystem.

bbd_wake_lock is Samsung/vendor-specific and deserves identification against the exact S8 kernel/device tree used by your /e/OS build.

This is where I think the next investigation should concentrate.


16. Your dumps actually suggest a very good next experiment

We can now design a much more decisive experiment than simply looking at AccuBattery.

Experiment A — airplane mode, safe mode

You’ve already effectively done this.

~53 mA.

Let’s call this:

Baseline A ≈ 53 mA


Experiment B — airplane mode + Wi-Fi/Bluetooth/NFC explicitly disabled + safe mode

Leave it for several hours.

If you still get ~50 mA:

the network stack is exonerated even more strongly.


Experiment C — normal boot + airplane mode

Don’t change anything else.

If this becomes much higher than safe mode, then an installed/system application is contributing.

If it remains around 50 mA:

kernel/hardware power management becomes overwhelmingly likely.


Experiment D — normal boot + SIM physically removed

This one is particularly valuable.

Don’t merely disable mobile data.

Remove the SIM card, enable airplane mode, then disable airplane mode while leaving Wi-Fi/Bluetooth off.

If the drain jumps dramatically when the cellular radio becomes available, we have strong evidence for the modem/RIL path.


17. Even better: compare /sys/kernel/debug/wakeup_sources

If your /e/OS kernel permits access, this is the next command I would really like to see.

Try:

adb shell cat /sys/kernel/debug/wakeup_sources

If that path doesn’t exist:

adb shell cat /d/wakeup_sources

Also:

adb shell cat /proc/wakelocks

if available.

And:

adb shell cat /sys/kernel/debug/suspend_stats

This last one is particularly interesting because your dump already tells us that Android is seeing failed suspend attempts.

If accessible, it can potentially tell us which subsystem is actually preventing suspend.


18. I would also like one very specific dumpsys from the S8

Run this while the phone has been sitting untouched for, say, 10–20 minutes:

adb shell dumpsys batterystats --charged

Actually, even better, make a clean measurement:

Before the test

adb shell dumpsys batterystats --reset

Then:

  1. disconnect charger;

  2. enable airplane mode;

  3. turn screen off;

  4. leave it completely untouched for 1–2 hours;

  5. run:

adb shell dumpsys batterystats
adb shell dumpsys power
adb shell dumpsys deviceidle
adb shell cat /sys/kernel/debug/wakeup_sources

If possible, also:

adb shell cat /sys/kernel/debug/suspend_stats

That would give us a clean, controlled dataset rather than the current dump, which covers a long period with cellular connectivity and normal application activity.


19. One more thing I’d like to establish: which exact S8 variant/kernel you’re running

The S8 exists in several hardware variants, and the kernel/device-tree/vendor drivers matter enormously here.

If you can give me:

adb shell getprop ro.product.model
adb shell getprop ro.product.device
adb shell getprop ro.build.version.release
adb shell getprop ro.build.version.security_patch
adb shell uname -a

and, ideally:

adb shell getprop | grep -E 'e\.os|lineage|product|device|model'

then we can identify the exact hardware/kernel combination.

That matters because a power-management problem specific to the Exynos S8 kernel is a very different problem from an application problem, and your evidence is currently pointing strongly toward the former.


My diagnosis at this point

If I had to summarize the evidence in one diagram:

                         ┌────────────────────┐
                         │   Android / /e/OS   │
                         └─────────┬──────────┘
                                   │
                         Doze/deep-idle works
                                   │
                                   ▼
                       ┌───────────────────────┐
                       │ Samsung S8 kernel     │
                       │ power management      │
                       └──────────┬────────────┘
                                  │
                 ┌────────────────┼─────────────────┐
                 │                │                 │
                 ▼                ▼                 ▼
             rmnet0          PMIC/IRQ           vendor
          cellular path     s2mps17-irq        wake locks
                 │                │                 │
                 └────────┬───────┴─────────┬───────┘
                          ▼                 ▼
                    failed/aborted       frequent
                     suspend             wakeups
                          │                 │
                          └────────┬────────┘
                                   ▼
                         ~50–75 mA standby

And when cellular connectivity is enabled, you additionally get:

RIL / telephony-radio
       ↓
RILJ_ACK_WL
       ↓
mobile_radio
       ↓
rmnet0
       ↓
additional wakeups + radio energy
       ↓
very high standby drain

So I don’t think you are imagining the problem, and I don’t think changing app battery restrictions is going to solve the fundamental issue.

The particularly convincing evidence is that your own safe-mode/airplane-mode experiment already reproduces the abnormal consumption, while the dumps independently show repeated kernel-level suspend failures and large kernel wake-lock activity.

The next step I’d recommend is therefore not more app tweaking. It’s to identify exactly what is holding the kernel out of the lowest power state.

If you give me the output of the four commands above—especially wakeup_sources and suspend_stats—I can go one level deeper and try to identify the actual S8 hardware driver/subsystem responsible, rather than merely saying “the kernel is waking up.”

A few notes on that answer :

  • The phone was charging when I ran the adb shell dumpsys power command because it was connected by USB to the computer.
  • ChatGPT misunderstood slightly one of my tests : it told me I had already done what it calls “Experiment A” , while I had actually done “Experiment B” (it was my “Test 4”).
  • ChatGPT does not seem to see that to run ADB commands, I need a connection to the phone, either by USB or Wifi.
  • ChatGPT does not seem