The Google Pixel 2 and Pixel 2 XL are the newest smartphones in Google's Pixel smartphone series and while the hardware is mostly an incremental improvement over the previous generation Pixel phones, the software has a couple of really nifty new features. There's the new camera technology used in the phone's Portrait Mode feature, the always listening music recognition feature called Now Playing, and an Always on Display feature. Unfortunately, none of these features will make their way to Google's previous smartphones, at least officially. We previously showed that it's possible to enable the Pixel 2's Always on Display via custom ROM, but we recently discovered that it's possible to enable Always on Display on the Nexus 6P, Pixel, and Pixel XL without root.

Picture credits: XDA Junior Member InFlames03


Always on Display can now be Enabled thanks to Android 8.1 and Substratum

Previously, we reported that it would be impossible to enable the Always on Display feature on any older Google phone. That's because Google hardcoded the function that enables Always on Display to always return false. This was the case in the source code drop for Android 8.0 Oreo, but is no longer true with the release of Android 8.1 Oreo Developer Preview 1.

As shown in the screenshots above, the function responsible for determining whether or not to enable Always on Display previously returned only "false." In the latest AmbientDisplayConfiguration code, however, it now checks for a boolean configuration value called "config_dozeAlwaysOnDisplayAvailable" which is set by Google to be true on the Pixel 2 and Pixel 2 XL, but false on every other phone they make.

To be more specific, Google uses a framework overlay installed in /vendor/overlay called framework-res_auto_generated_rro to specify the value of this configuration. Since this framework overlay is based on the OverlayManagerService (OMS), we can create our own framework overlay to force config_dozeAlwaysOnDisplayAvailable to return "true" on the Nexus 6P, Pixel, and Pixel XL.

This is possible because OMS, the theme framework built by Sony, is integrated natively starting in Android Oreo. Thanks to this, we can use the built-in commands to manage and install our own themes—all without requiring root. In doing so, developers discovered how to get the popular Substratum theme manager working on Android Oreo devices. Thus, in order to get Always on Display working, we will be using the Substratum theme manager with its Andromeda plugin in order to install our special framework overlay on the Nexus 6P, Pixel, and Pixel XL.

Lastly, there's one more point of confusion I want to address—namely, the fact that we are using what's popularly called a "theme engine" in order to enable a hidden feature. Although Substratum is commonly used to install themes, it's more accurate to call these themes "resource overlays." That's because these "themes" specify values that replace the original resources of their target app. Usually resource overlays just replace color values in the original app, but they can also target the integers, strings, or boolean values in the app's resources. Some existing Substratum overlays use this to customize the lock screen, recent apps screen, and quick settings for example.

In any case, hopefully you have a better understanding of what it is we're about to do. Follow the tutorial below to enable Always on Display from the Pixel 2 onto the first generation Google Pixel phones as well as the Nexus 6P.


How to Enable Google Pixel 2's Always on Display Feature on the Nexus 6P, Pixel, and Pixel XL

Requirements:

  • Nexus 6P, Google Pixel, or Google Pixel XL. Nexus 5X will work but is not recommended due to its lack of an OLED screen.
  • Android 8.1 Oreo Developer Preview 1. You can find the firmware files here.
  • License for Substratum's Andromeda plugin ($1.99). Without this, you won't be able to install the framework overlay we made. At least, not easily.

Tutorial

Special thanks to XDA Junior Member InFlames03 for assisting in the discovery of this feature, testing it, and finally offering a framework overlay for download. Check out his new Oreo and Fresh themes.

  1. Set up Substratum and its Andromeda plugin. You can follow this tutorial all the way until you finish part 1.
  2. Install the alwaysOn-enabler APK from AndroidFileHost or the Pixel Enabler app from the Google Play Store. The former is just a basic overlay that enables this feature while the latter will include more features in the future.
  3. Open Substratum and look for "Always On Enabler" by Sai in the theme list. Tap on it.
  4. Tap on "select to toggle all overlays."
  5. Tap on the floating paint roller button.
  6. Select "Build & Enable."
  7. Reboot.
  8. Open Settings --> Display. Expand the "Advanced" category and tap on "Ambient display."
  9. You should see an "Always on" toggle. Disable and re-enable it. Enjoy Always on Display!

Alternatively, you can watch the following video that goes through the basic steps necessary to enable Always on Display. The video was captured by XDA Senior Member eqbirvin on his Google Pixel XL running Android 8.1 Oreo. Note that we still recommend you reboot even though the video does not show any rebooting.

Caveats

The Nexus 6P, Pixel, and Pixel XL do not offer an Always on Display feature by default because their screens aren't properly tuned to enter the low power doze state that the Pixel 2's screens are. Thus, using this overlay to enable Always on Display can be considered a hack since it's not without its caveats. We haven't used this for an extended period of time to measure power drain or other potential issues, but so far here are the issues we encountered:

  • Pressing the power button to wake directly into the lock screen from the Always on Display doesn't work. You have to press the power button twice.
  • Double-tapping to wake directly into the lock screen from the Always on Display doesn't work. You have to double-tap twice (4 taps).
  • Sometimes, a grey screen may pop-up during an unlock phase.

You won't have any of the issues above if you unlock your phone from the Always on Display screen using the fingerprint scanner. If you do encounter any of the issues listed above, a simple re-lock and unlock with your fingerprint can fix the issue too.

Conclusion

We suspect that the issues listed above are related to the display not properly transitioning from the Always on Display state to the screen on state and are looking into potential fixes. It's possible these issues may never be fixed, or they may be coincidentally fixed in a future Developer Preview. Our biggest fear is that Google sees what we're doing and again hardcodes Always on Display. We hope that won't happen, but it's certainly a possibility. For now, enjoy the Google Pixel 2's Always on Display feature while you can!