Is there anyway I can set a minimum brightness level? Also, will the Adaptive Brightness feature be fixed any time soon? It says manually moving the slider will help it learn your preferences, but our lie detector test has determined that was a lie.

    13 days later

    frickinchickin

    Unfortunately, the only way that I know of to change the minimum brightness is by modifying a config file then building your own version of the OS (this value, btw).

    I tried to search for other ways, but there are no setting or device config values that can be changed that will affect min/max screen brightness, or at least as far as I can tell.

    frickinchickin It says manually moving the slider will help it learn your preferences, but our lie detector test has determined that was a lie.

    Where does it say that? The stock OS might do that, but I don't know if AOSP does. Either way, I'd agree that the AOSP brightness whatever algorithm isn't great. My phone's screen is also too dark sometimes.

      unwat Where does it say that? The stock OS might do that, but I don't know if AOSP does. Either way, I'd agree that the AOSP brightness whatever algorithm isn't great. My phone's screen is also too dark sometimes.

      In GrapheneOS If you tap on Adaptive Brightness in the settings menu it reads 'Your screen brightness will automatically adjust to your environment and activities. You can move the slider manually to help adaptive brightness learn your preferences.'

        Surreal5954

        Found it. I've never actually opened the menu item there so I don't think I've every actually seen it.

        I poked around Google's AOSP code. I am thinking that the stock OS has proprietary adaptive brightness code that's not in AOSP. Searching around the internet, I read stuff about the phone using "AI" or "machine learning" to "learn" a user's preferences. That's not the case in AOSP. The AOSP implementation does technically live up to the "learn" a user's preferences claim, but it's not too fancy and is very limited.

        Kind of what it boils down to is they set up a spline curve, which they call a "short term model". There's a default that's created, then when the user changes the brightness by dragging the slider, a point is added to the model's curve, then the curve is recalculated and smoothed. It doesn't seem to store old points, it just uses the defaults + the new user added point. The phone uses that model until the brightness is changed by the user again, or if the model is invalidated for some reason.

        19 days later

        Pixel adaptive brightness is not the same as the AOSP implementation. AOSP is much less intelligent. It does work properly, it just isn't as good as you're used to on the stock Pixel Os. It could be improved but we aren't going to add any significant complexity to it, only minor tweaks to configuration values at most. It could be improved in AOSP.

          strcat . AOSP is much less intelligent. It does work properly

          It has never worked properly in my experience.
          As others have noted it always resets to about 20% and is a very annoying part of GOS.

          it just isn't any good.

            ve3jlg You're welcome to use manual brightness. The auto brightness implementation is the standard one included in AOSP. Pixel adaptive brightness is better.

            a year later

            If using the pixel8 phone in a dark room the screen is so dark that it's unreadable. Wish that the minimal screen brightness in post 3 were higher in grapheneOS builds. Forced to use manual brightness.

            5 months later

            If this is not going to be worked on, could there at least be informational text where the adaptive brightness option is to alert the user that this is not using Pixel Adaptive Brightness but is using the AOSP implementation?

            11 days later

            For folks who build GrapheneOS from source, I've extended gmscompat to allow Pixel OS' adaptive brightness implementation to work: https://github.com/chenxiaolong/grapheneos-patches#adaptive-brightness

            (Note: The implementation is not perfect because the ACCESS_AMBIENT_LIGHT_STATS, BRIGHTNESS_SLIDER_USAGE, and CONFIGURE_DISPLAY_BRIGHTNESS privileged permissions are granted when Device Health Services is installed, instead of sitting behind a permission toggle.)

            Pixel OS' adaptive brightness doesn't actually override AOSP's auto brightness implementation. It asks Android for the list of recent brightness change events and uses that to train the offline ML model. The ML model spits out a brightness curve that is set as a configuration parameter for AOSP's normal auto-brightness algorithm.

            Device Health Services is actually decently well compartmentalized. The patches disable all other functionality (adaptive battery, etc.) and completely remove all permissions that aren't necessary for adaptive brightness.

              chenxiaolong Great work, thanks!
              Coming from stock OS the auto brightness in GOS is bothering me every evening since it for some reason won't learn that in darkness I want the screen to automatically be on the lowest brightness setting. It always starts at like 15-20% brightness instead of 0 though, no matter how often I manually turn it back to 0.

              It's also nice to learn how the Google stock auto brightness works, very interesting that it just trains the AOSP brightness! Also I never would have thought hat this feature is included in the Device Health Services app.

              (Offtopic: @chenxiaolong Which other features besides adaptive battery does that app include? Maybe some could be beneficial for GOS as well without harming security or privacy)

                Snibby No problem!

                I didn't do too much reverse engineering into the other parts of Device Health Services. It does a lot of monitoring of battery health statistics, power usage, thermals, and app usage, but it all seems to be for the adaptive battery feature. I don't think there are any features in there besides adaptive brightness and adaptive battery.