UBports Robot Logo UBports Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    FP4 idle battery use varies a lot depending on 2G, 3G or 4G setting. Why?

    Scheduled Pinned Locked Moved Unsolved Support
    13 Posts 2 Posters 356 Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      This topic has been deleted. Only users with topic management privileges can see it.
      • lduboeufL Offline
        lduboeuf @janmv
        last edited by lduboeuf

        @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.

        lduboeufL 1 Reply Last reply Reply Quote 0
        • lduboeufL Offline
          lduboeuf @lduboeuf
          last edited by

          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.

          1 Reply Last reply Reply Quote 0
          • J Offline
            janmv
            last edited by

            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.

            J 1 Reply Last reply Reply Quote 0
            • J Offline
              janmv @janmv
              last edited by

              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?

              lduboeufL 2 Replies Last reply Reply Quote 1
              • lduboeufL Offline
                lduboeuf @janmv
                last edited by

                @janmv i don't know well that part, but that is the layer between Android and Ofono.

                1 Reply Last reply Reply Quote 0
                • lduboeufL Offline
                  lduboeuf @janmv
                  last edited by lduboeuf

                  @janmv i've ask the team. Apparently FastDormancy is handled natively under ofono

                  lduboeufL 1 Reply Last reply Reply Quote 0
                  • lduboeufL Offline
                    lduboeuf @lduboeuf
                    last edited by

                    said in FP4 idle battery use varies a lot depending on 2G, 3G or 4G setting. Why?:

                    @janmv i've ask the team. Apparently FastDormancy is handled natively under ofono

                    the componebt itself is called ofono-binder-plugin

                    1 Reply Last reply Reply Quote 0
                    • J Offline
                      janmv
                      last edited by

                      Thanks. I'll check there if I can find why FastDormancy does not seem to be implemented.

                      1 Reply Last reply Reply Quote 0
                      • J Offline
                        janmv
                        last edited by

                        It appears that the RIL-modem-software has no implementation of setting fast dormancy.

                        The FP4 has five plugins installed in folder /usr/lib/aarch64-linux-gnu/ofono-sailfish/plugins:

                        -rw-r--r-- 1 root root  19176 Aug 23  2023 apndbplugin.so
                        -rw-r--r-- 1 root root 367264 Oct  7  2024 binderplugin.so
                        -rw-r--r-- 1 root root  70592 Sep 25  2024 mtkbinderpluginext.so
                        -rw-r--r-- 1 root root   6096 Nov 19  2023 rilbinderplugin.so
                        -rw-r--r-- 1 root root 320424 Aug 23  2023 rilplugin.so
                        

                        The packaging information in gitlab/ubports/development/core/packaging says that sources of binderplugin, rilbinderplugin and rilplugin are available at mer-hybris at github. (I suppose the other two plugins are not related to setting fast dormancy.)

                        An ofono plugin initializes driver methods when it is registered. Radio settings are initialized in this struct (defined in sailfishos/ofono/.../ofono/include/radio-settings.h):

                        struct ofono_radio_settings_driver {
                           (...)
                           void (*query_fast_dormancy)(...)
                           void (*set_fast_dormancy)(...)
                           (...)
                        }
                        

                        In the mer-hybris binderplugin this structure is initialized (ofono-binder-plugin/src/binder_radio_settings.c line 234):

                        binder_radio_settings_init() {
                           ofono_radio_settings_driver_register(&binder_radio_settings_driver);
                        }
                        

                        but binder_radio_settings_driver does not provide fast dormancy methods (line 224). It only sets:

                        static const struct ofono_radio_settings_driver binder_radio_settings_driver = {
                        	.name                 = BINDER_DRIVER,
                        	.probe                = binder_radio_settings_probe,
                        	.remove               = binder_radio_settings_remove,
                        	.query_rat_mode       = binder_radio_settings_query_rat_mode,
                        	.set_rat_mode         = binder_radio_settings_set_rat_mode,
                        	.query_available_rats = binder_radio_settings_query_available_rats
                        };
                        

                        As a result, radio_set_property_handler() in ofono/src/radio-settings.c (line 658) returns "Not implemented":

                        if (rs->driver->set_fast_dormancy == NULL)
                        	return __ofono_error_not_implemented(msg);
                        

                        There are other repositories on github with the same code, but none of them provide fast dormancy methods.

                        Now what could be next? Of course I could be overlooking things. Is my conclusion right (RIL modem software does not implement fast dormancy)? If so, is it worth fixing? I'd say yes, as the difference in battery usage is large and 2G/3G are being phased out. And if it is worth fixing, then where? The ofono-binder-plugin repository is active. Would this be the place to ask? @lduboeuf can I have your advice once more?

                        lduboeufL 1 Reply Last reply Reply Quote 1
                        • lduboeufL Offline
                          lduboeuf @janmv
                          last edited by

                          @janmv
                          sorry, i don't know the full story.
                          Some say that that modern drivers implement it directly, so not needed on upper stack.

                          Maybe could be something to ask for next Q&A or directly in repository has you said.

                          1 Reply Last reply Reply Quote 0
                          • J Offline
                            janmv
                            last edited by

                            @lduboeuf I'll formulate a question for next Q&A-session. There is probably more to know and to consider than just a driver which could be implemented more completely.
                            I can still bring up the issue in the ofono-binder-plugin repository later.
                            Thanks!

                            lduboeufL 1 Reply Last reply Reply Quote 1
                            • lduboeufL Offline
                              lduboeuf @janmv
                              last edited by

                              @janmv said in FP4 idle battery use varies a lot depending on 2G, 3G or 4G setting. Why?:

                              @lduboeuf I'll formulate a question for next Q&A-session. There is probably more to know and to consider than just a driver which could be implemented more completely.
                              I can still bring up the issue in the ofono-binder-plugin repository later.
                              Thanks!

                              thanks for working on it 🙂

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post