Does Fairphone support "Idle Mode"?

, ,

Modern phones support “idle mode”, meaning that the phone can run off the charger instead of the battery (just like a laptop). It’s also called “charging bypass” or “standby mode”, because in idle mode, the battery is not used at all.

In combination with limiting the charge percentage (to 80 percent by default on the FP5) using idle mode would tremendously increase battery longevity, especially when you plugin the phone often. With durability in mind, for the Fairphone this would be something that is important to implement.

Using a tool such as ACC (Advanced Charging Controller) you can check if the phone supports idle mode. (Look at the battery current getting close to zero when plugged in and not set to charging or at 100%.)

Unfortunately, the FP5 does not seem to support idle mode according to ACC. Assuming that the hardware is capable, are there any plans to implement true idle mode on the FP5? And what about the FP1, FP2, FP3 and FP4? Do they support it?

2 Likes

The FP5 is the first phone since FP2 coming with any software restricting charging somehow. FP1 amd FP2 are no longer supported.

FYI about the FP4

The implementation/plans is something you would have to ask at support, we the other user here in the forum cant answer this.

1 Like

I was just wondering if the FP1 and 2 support idle mode, whether or not they are maintained.

Thanks for that link. It has interesting information. I must say it get complicated quickly, as knowledge of the kernel is required for this. When I have time I will try to look more into it.

That said, although I cannot get idle mode to work on the FP5, it is possible to stop charging using ACC at any charge percentage (instead of the default 80% when the setting is on in FP OS).

If we remain unsuccessful, there is also “emulated idle mode”, which achieves the same, but is not a hard switch to feed the phone with the charger, but sets the voltage level to a constant amount, corresponding to the desired charge percentage. The battery is then also not charging nor discharging and should read zero current over the battery. It is neat if this would work, although it requires being able to set the charging voltage level. I didn’t try yet to do this.

Any experiences or comments about this are of course welcome!

Hi, the “Battery Charge Limit” app has stopped working with FP3 and LOS recently, so I tried AAC
it works to some extent, I had set 92% charge, but it charged up to 94%, which is strange
About the idle mode: it looks like the phone is charging for a few seconds, then not charging for a few seconds and then charging again…
I tried the version of F-Droid ( version 1.0.35 (39), 2021-09-02) do you have a newer one?

Battery Charge Limit I could not get to work at all. I tried ACC, the newest release version. It works (kind of) with Fairphone 5, but idle mode does not. Also it has some quirks having to do with rebooting I believe.

You can also try the “ACC Settings” application for easy access to ACC, although it’s not very good for understanding what’s happening, because there’s no CLI feedback.

A first step to get this to work is to take a deep dive into the charging mechanics. The ACC documentation seems a good starting point. Also, without any custom software idle mode works fine when charged to 100%. So at least there’s that. (This is with /e/OS based off the ACC Settings screen showing no current going to/from the battery.)

I did a few experiments with my USB meter (ampere meter):
Charge up to 92%
Ok, it gets a little overcharged to 93 or 94 percent but the charging process then ends
Idle mode at 95% percent:
Not really, the current consumption jumps around between 10 and 500 mA, charging LED is regularly on and off.
It is probably trying to maintain the charge level, but I wouldn’t call it idle mode

Charging up to 100%:
Charging stops at 100%, no further power is drawn via USB, so there is no sign of idle mode at all.

For me that means:
AAC replaces Battery Charge Limit, fortunately I don’t need Idle Mode at all

Not sure what kind of device you used in your first paragraph and how you can see how far you charge or that you overcharge. Or what LED you mean. Is this also at 100%?

Your second paragraph makes more sense. Strange that you see what you see. Indeed, when no current is drawn at 100% idle mode is not working. However, on my FP5 with /e/OS, in the ACC Settings app I clearly see that there is no current over the battery at 100%. Unless the phone reports that wrong, which is unlikely, I think that idle mode is definitely working at 100%. The kernel or whatever functionality is responsible implements that quite well.

Not sue what you mean with your last sentence why you would not need it. Requiring Idle mode is what this is all about.

Hi,
this is a USB meter, it shows e.g. the current flowing into the cell phone via USB

The FP3 has a small LED which indicates whether it is charging or whether there are new messages.

Regarding your actual question (Does Fairphone support “Idle Mode”?)
I have an FP3, and the idle mode does not work, sorry I can’t contribute more.

I get what you mean now, thanks for clarifying. So it seems the FP3 does not support it and the FP5 does.

Now I just have to figure out how to limit the charge to 80% or so on /e/OS.

FP5 here as well, but currently running iodéOS. Rooted with Magisk as usual.

I installed acc these days, but it does not stop the charging at the set pause_capacity.
(Set it via the AccA-App, but I also see it in the settings acc -s … current test value is 95%)

I use the Magisk Module. First used the latest release from github (October 16th 2023). Then I installed one posted in the TG channel ( acc_v2024.1.19-dev_202401190_2033.zip ) and I got the same behavior.
I discovered that there daemon crashes, when the pause_capacity (upper % limit to charging) is reached. I also got another dev build there but no change.

Notification states (when the pause_capacity limit is reached):

> Shell
> 🔋ACC
> "⚠️Daemon stopped with exit code 7!"

→ Exit code 7 means: “Failed to disable charging” (can be seen in acc -h)

So I had some exchange in the TG channel and the final diagnosis (from VR-25 - the acc dev) was:

VR25, [23.01.24 16:33]
As per your kernel’s charge_control_limit_max value, the max is 4. You can go from 0-4. However, tests suggest that max value only limits current to about 500 mA, instead of dropping it to zero (as with other devices). There’s something wrong there (in the kernel). Your test with a max of 9 also did not do what we expect. So, you’re out of luck, for now.

See if you can find a custom kernel.

I did not really inform myself about idle mode tbh. I wanted simply set a charge limit for now.

First dump question: Is the Kernel of the different available OS the same? Or do the Custom ROMs also modifiy the Kernel? :thinking: (I’m on iodéOS, @Quigley is on /e/OS right?)

@Quigley : What is the result for you when you run acc -t in a terminal (root) on the phone?
acc -t
Do all the “switch charging off”-attempts (here 8 test will run) fail for you as well? (the number in brackets does not go over 4 for you as well? switch: off (4) )

Is there any evidence / source you can quote that the FP5 supports idle mode?

Yes, like I said in my post above, I observed the battery current go to 0mA. This was at 100 % charge.

1 Like

Yes, same result. 8 tests are run. Number 4 tests the charge controller switch. It is unsuccessful. Indeed it provides the argument 4 to the switch repeatedly and it keeps charging. Interesting about your conversation with the ACC dev. Not sure if I follow VR25’s conclusion about the max of 9, but if something is wrong with the kernel we should investigate and inform Fairphone . I’m on /e/OS indeed, but both /e/ and Iodé probably end up using upstream kernel changes from FP OS.

I also got the exit code 7 a few times.

The testing command gives one working switch by the way, the current limiter switch:

8/8: usb/input_current_limit 900000 0
  switch: off (0)       current: -338mA (Discharging)
  switch: off (0)       current: -358mA (Discharging)
  switch: on (900000)   current: 254mA (Charging)
  Switch works ✅
- battIdleMode=false

So maybe idle mode is possible after all by using emulated idle mode by current limiting. That also could be used to stop charging, but I’m not sure how to implement that.

So to conclude for FP5 on /e/:

  • Idle mode works using the kernel only (no ACC) at 100% charge;
  • Battery charging control does not work using ACC;
  • Current control may work using ACC, which may also emulate idle mode and charge limiting somehow.
1 Like

That’s interesting so for you one switch works.
For me all 8 fail.

You can set this switch as acc’s method via acc -ss then select the 8 and enter.

Can you report back here if this works?

(not sure if this works in the last stable build)
There is a newer acc rc build from the telegram channel. Telegram: Contact @acc_group
It shows you, which switch is currently set when you start a acc -t run. Cannot attach it here. :man_shrugging:t2:

Also I tend to say that this means the /e/OS and iodéOS Kernels are different. :thinking:

acc_v2024.1.28-rc_202401280.zip

Try acc -t again, then the following 3.
acc -t usb/input_current_limit 900000 10000
acc -t usb/input_current_limit 900000 350000
acc -t usb/input_current_limit 900000 330000

It’s also possible to add switches to a file and run acc -t /path/to/file to test them all.

Message above by @VR25 is for you @Quigley (I reported in the tg channel that one switch works for you)

I wanted to take a look at this, but “The transfer you requested has been deleted.”

@VR25

Zips are not allowed to be attached here in the Forum.
So the idea was to link a upload which exist only for a limited time. :man_shrugging:t2:

Telegram: Contact @acc_group this is the latest RC build , but I think you need telegram to download it. :thinking:
@Quigley

https://file.io/YeQWrgKok0Vn