FP4 idle battery use varies a lot depending on 2G, 3G or 4G setting. Why?
-
One of the topics on my UT-on-Fairphone4-wishlist is to understand what I can do to use the phone's battery optimally. In the past half year I have seen large differences in battery use when the phone is off, so screen off and no active apps (nothing shows if you swipe from the right). The phone used to need a recharge every 3 or 4 days, but currently it is just 1 day, while my daily usage pattern is roughly the same.
I probably changed settings, not knowing this would be the effect. I have now been checking more structurally. What I find is that setting Mobile Connection type to "2G only" or "2G/3G" instead of "2G/3G/4G" causes the full difference. I could have known, as the first options says 'saves battery'. The effect is like what I read in an old post (topic 6211), but that is a different phone (Xiaomi mi A2), and in my case it does not matter whether I turn data on or off. (I have a phone-only SIM-card, no reason to turn data on. Still I checked.)
From the system settings sources (Sim.qml) I see that the options are used to set a property 'technologyPreference' of an OfonoRadioSettings QML component, where '2G only' is 'gsm', '2G/3G' is 'umts', and '2G/3G/4G' is 'lte. In the ofono documentation I also find a Dbus radio-settings API (radio-settings-api.txt), where there is a FastDormancy property which is described as 'a major power-saving feature for mobile devices'. It seems as if this parameter is never explicitly being set in UT: searching the UBports core respositories does not result in hits. But this looks as a possible source of the differences.
I checked if the the modem might be limited, but from what I find on the internet, the FP4 is built on the Qualcomm Snapdragon 750G processor, which includes a modem called X52. This modem does not seem to pose a hardware limitation.
I also find a modem-manager package which might allow me to experiment with the modem. I tried to install it and run it in Libertine container, but from within the container, I do not have access to the Dbus.
So there are my questions: * What is the phone doing in the "2G/3G/4G"-setting that it does not do in the other two settings? * If it is related to the FastDormancy-setting, where is this setting use? Where should I look? Is there a way to experiment with that? * How to get modem-manager (mmcli) to run?
(I'm sorry for not posting links, apparently not enough reputation to do that.)
Thanks!
-
@janmv There has been an attempt to set FastDormancy, but land to nowhere, maybe you could ask there ?.
@flohack can maybe tell what is missing ?https://gitlab.com/ubports/development/core/repowerd/-/merge_requests/58
I agree LTE even without data On drains a lot battery ( Pixel3a), i feel lucky to still have 2G available here, otherwise the phone would be unusable as a daily driver.
-
hmm by looking quickly ibto it, it appears modem or maybe the component in between modem and ofono doesn't provide the "FastDormancy" feature. Repowerd seems to call properly the method so not an issue tn that repo.
-
Thanks for this reaction. Looking at the repowerd source explains why I did not find more hits for "FastDormancy": most of the time, it is "fast_dormancy", with an underscore
. I'll check if this brings me any further.
-
Some progress to mention:
- As far as I can tell from the sources, setting FastDormancy should work, but I'm not sure I am looking at the right sources (gitlab ubports development core ofono-ubports)
For a check:
phablet@ubuntu-phablet:/usr/sbin$ ./ofonod --version 1.29
and
phablet@ubuntu-phablet:/usr/lib/systemd/system$ dpkg -l | grep ofono ... ii ofono-sailfish 1.29+git8-0ubports1~20240527210340.1~66073d0+ubports20.04 arm64 Mobile telephony stack (daemon) ...
- If I run testscript set-fast-dormancy (location mentioned above, from subdirectory test), it responds
phablet@ubuntu-phablet:~/.local/bin$ set-fast-dormancy 1 Setting fast dormancy for modem /ril_0... Traceback (most recent call last): File "/home/phablet/.local/bin/set-fast-dormancy", line 26, in <module> radiosettings.SetProperty("FastDormancy", dbus.Boolean(enable)); File "/usr/lib/python3/dist-packages/dbus/proxies.py", line 72, in __call__ return self._proxy_method(*args, **keywords) File "/usr/lib/python3/dist-packages/dbus/proxies.py", line 141, in __call__ return self._connection.call_blocking(self._named_service, File "/usr/lib/python3/dist-packages/dbus/connection.py", line 652, in call_blocking reply_message = self.send_message_with_reply_and_block( dbus.exceptions.DBusException: org.ofono.Error.NotImplemented: Implementation not provided
- Testscript get-tech-preference returns:
phablet@ubuntu-phablet:~/.local/bin$ get-tech-preference Technology preference: umts
and this value changes correctly if I switch to 2G or to 2G/3G/4G
- I added two lines to this script slightly to return all radiosettings:
for p in properties: print(p)
It shows:
phablet@ubuntu-phablet:~/.local/bin$ get-radiosettings TechnologyPreference AvailableTechnologies
So it seems that my current ofono implementation does not have a FastDormancy setting. @lduboeuf You suggest the reason might be the component in between the modem and ofono. What component is that?
- As far as I can tell from the sources, setting FastDormancy should work, but I'm not sure I am looking at the right sources (gitlab ubports development core ofono-ubports)