Monday, September 19, 2016

Huawei P9 Lite: It's Alive!

The device arrived on Saturday as expected. I was still working out issues with the releasetools for my CM build when it came. So I didn't get the build done before it arrived but I did finish it later in the day. My P9 Lite came with a case and a screen protector. If I had known that I wouldn't have ordered a case and screen protector separately. I watched a couple of reviews of the device and one of them mentioned that the screen is not Gorilla glass but some sort of regular tempered glass. So I wanted something to protect the screen from scratches. I managed to get the screen protector on there with no bubbles so "BONUS".

Yesterday, I set about completing my initial tasks. Getting the bootloader unlock code was a bit of a pain. In the spot where it asked me for the model, I had to put it in exactly as it was in "About Phone" all caps "HUAWEI VNS-21" and not "Huawei VNS-21" as the tutorial on XDA suggested. After getting the code I quickly unlocked the bootloader and flashed TWRP, did a backup and used dd to backup all partition except, recovery ( it's TWRP i just flashed it so why back it up ), and the /data partition; it's too large to fit on itself. For those that do not know that data partition houses the internal storage...

I flashed my build of CM13 and of course it didn't boot; visually it did not get passed the "bootloader unlocked screen" but adb is was running and I was able to get access. The only problem is that it did not have a shell, which indicates that the system partition was not being mounted, because adbd uses the shell @ /system/bin/sh and alternatively @ /sbin/sh. So, I moddified the init.rc to not remount the "/" tmpfs ro and pushed busybox to /sbin/sh and wahlah adb access.

As TheMarrionette@XDA had told me, the hwcomposer was an issue but I was able to bypass it and force CM to use opengl. However, for some reason I'm not sure of, doing that caused serveral critical services to not start; Namely: zygote, zygote_secondary, installd and netd. Through adb, I was able to start them manually and BAM!

We have lift off!

That being said, almost nothing works ATM. The build will not even boot by itself but this is a significant step forward and I have good idea of how to fix these "initial" issues. It is only a matter of time before we'll have a rough tester build. I honestly did not expect to get this far this fast!

Once I can get CM to boot on its own. I need to get some simple things working.

  1. If the device goes to sleep it will not wake up.
    1. I don't think this is serious. I think it's just the key configuration for the power button.
  2. The on screen navigation bar does not show up.
    1. Again, just a config somewhere.
    2. There used to be a build.prop entry that would turn it on.
  3. I pieced some of this together and I need to work on getting the build system to reproduce some of the "hacks" I've done.