Before Project Treble, it sometimes took several weeks or months after a new smartphone came out for a stable, functional custom ROM to be developed for that phone. With Project Treble, ideally, it should be possible to flash a generic system image (GSI) to a Treble-enabled device on the day of its launch and have it be mostly functional. While we don't expect it to take a lot of time for custom AOSP-based ROMs to arrive on the newly released OnePlus 6, we wanted to see how well a LineageOS Generic System Image (GSI) would run on OnePlus' first device with Treble support.

However, for the OnePlus 6, attempting to simply flash a GSI to the system partition would cause the device to boot and freeze into a black screen with a white notification LED, or to endlessly reboot. It took about a week before XDA member ProtoDeVNan0 posted a thread on how to get a GSI to boot on the OnePlus 6, however it only seemed to work for phhusson's AOSP GSI. The secret in getting the AOSP GSI to boot was flashing the stock vbmeta image via fastboot with the --disable-verity and --disable-verification flags, which should allow non-stock ROMs to boot. However, even after this process, other available GSIs like LineageOS or Resurrection Remix would result in a bootloop. Fortunately, phhusson posted updated builds of LineageOS and Resurrection Remix that boot on the OnePlus 6, with XDA member Exelios posting instructions on how to properly flash the images.

Update 6/14/18: XDA Senior Member joemossjr has released a tool to make the process of flashing a GSI way easier.

The first thing to test was all the hardware functionalities: Wi-Fi, Bluetooth, radio, GPS, compass, accelerometer, haptics, camera, and microphone. All but NFC, VoLTE, and Dash Charging appeared to be working just fine. The included apps run as expected, and the included AudioFX functions as well. Taking a glance at the Profile GPU Rendering graph, the ROM does not seem to be as smooth as stock OxygenOS, which is to be expected from a generic system image not specifically optimized for the OnePlus 6, but it is also not slow by any means. Perhaps the most noticeable issue so far is the lack of support for the notch, which cuts through the status bar and slightly into the app's action bar. Notification and system icons also get lost to the notch if they dare trespass the notch's domain. There is also a lack of padding in the status bar for the rounded corners of the OnePlus 6 display. Lack of proper notch support will probably be resolved once GSIs based on Android P become available.

In regards to Settings and LineageOS features, all the settings I tried seemed to work, with exception of LiveDisplay and changing the Style under the Display settings. System Profiles also seemed functional, but setting a Bluetooth trigger for a System Profile crashes the Settings. There also seemed to be some important missing features, such as Adaptive brightness, OnePlus gestures like double-tap-to-wake, and display color profiles. However, there are workarounds to re-enable Adaptive brightness and to toggle between the different color profiles via rooted ADB.

To toggle the other display profiles, you will need to connect your OnePlus 6 to a computer with ADB:

  1. Enable Developer options by navigating to Settings → System → About phone, scroll down and tap "Build number" repeatedly until "Developer options" is enabled.
  2. Enable Root access by navigating to Settings → System → Developer options, scroll down to "Root access" and select "ADB only".
  3. On your computer, open the terminal/command prompt, type adb root and press enter.
  4. Depending on which color profile you wish to toggle, copy and paste one of the following, then press enter:
    • For sRGB: adb shell "echo 1 > /sys/devices/platform/soc/ae00000.qcom,mdss_mdp/drm/card0/card0-DSI-1/SRGB"
    • For DCI-P3: adb shell "echo 1 > /sys/devices/platform/soc/ae00000.qcom,mdss_mdp/drm/card0/card0-DSI-1/DCI-P3"
    • For Adaptive mode: adb shell "echo 1 > /sys/devices/platform/soc/ae00000.qcom,mdss_mdp/drm/card0/card0-DSI-1/adaptive_mode"

The color profile does not persist across reboots, so you will have to do this every time you do.

In summary, the things that do not work or are missing on the OnePlus 6 running an unofficial LineageOS GSI:

  • VoLTE
  • NFC
  • Dash Charging
  • LiveDisplay / Night Light
  • LineageOS Styles
  • System Profile Bluetooth trigger
  • Adaptive Brightness (available with workaround)
  • OnePlus Gestures
  • Color Profiles (available with workaround)

Notable extra things that do work on the OnePlus 6 running an unofficial LineageOS GSI:

  • Fingerprint Scanner
  • Notification LED
  • Brightness Slider (does not work on the AOSP GSI)
  • AudioFX

On a device like the OnePlus 6, we recommend you wait for a proper AOSP-based custom ROM to be released. While it's impressive to see just how functional this GSI is, it's not as stable as an official build of LineageOS. If you really want to satisfy the urge to flash an AOSP ROM and don't mind dealing with some of the issues we mentioned above, then feel free to give it a shot. Now that official TWRP is available, you have less to worry about if things go wrong.