[MeMO Pad 7 Original Android Development] lambdadroid:
Here's a new test build as I'm working on finalizing LineageOS 16.0. This time, there are quite major changes with regards to installation.

I would like to start with an explanation of the reasons for these changes. This is going to be a lengthy post! If you don't care, feel free to skip to the changelog. :)

In contrast to pretty much every other Android device port, this ROM has been built on a recent kernel and more or less exclusively on open-source components. Further background and technical advantages of this approach are documented on GitHub.

There are two main categories of proprietary files ("blobs") in Android device ports:

Firmware is used by some hardware components (e.g. WiFi/BT/Audio) and is loaded during the boot process. In general, it is independent of the operating system since it does not run on the hardware, not the (main) CPU.

User-space components are specific to Android. These are usually binaries or configuration files that make the hardware work on Android or add additional functionality.

I won't go much into why proprietary components are bad. Shortly said, their code is not available, so they are extremely hard to maintain, to debug, and technically they cannot even be redistributed without explicit permission.

Many Android device ports have a significant amount of proprietary files ("blobs") from both categories. Many can not even boot without the proprietary files.

Previous builds of this ROM have only had 3 proprietary user-space components:

Hardware-accelerated (video) codecs: This is the only one I consider essential for using this ROM. Fortunately, it has been finally open-sourced earlier this year and is no longer proprietary.

Widevine DRM is used to secure certain streaming apps like Netflix

Houdini is used to run ARM apps on x86 devices

Widevine/Houdini is not needed unless you use apps that require them. The device is perfectly usable without them. With the hardware-accelerated codecs out of the way we now have the opportunity to have a device with 100% open-source user-space components.

As such, I consider Widevine/Houdini to be optional "addons", just like you also flash Google Apps (usually through Open GApps) separately. I have created flashable ZIP packages for them so you can choose to install them if needed.

At this point, it seems unlikely that I will ever be able to get rid of the "firmware" category in this ROM. It is needed for WiFi/BT/Audio to work and is extremely difficult to reverse-engineer. On the other hand, it is also much less likely to break, since they are independent of the operating system.

There is one more aspect I need to mention: redistribution of the proprietary components. Without a license, they cannot be legally redistributed. I still redistribute firmware as part of the ROM with the assumption that it is licensed for this device, since it comes straight from the stock ROM of this device.

Houdini/Widevine however, are borrowed from the Android container included in ChromeOS builds. It's common practice to take binaries from (newer) devices, and integrate them into ports for older devices, and then redistribute them as part of the ROM. Pretty much every ROM does it this way. But now that those two are separate, I no longer feel comfortable to redistribute those binaries directly. Instead, I have created simple build scripts that download publicly available ChromeOS recovery builds, extract them, and put them into a flashable ZIP.

I do not provide pre-built packages of the Widevine/Houdini ZIP packages.

If someone else does not care: You can provide links to pre-builts packages here for those that cannot build it themselves. I just don't want to provide them myself. The ZIP packages should always have the same hash-sum when built, so I provide the expected hash-sums below to check integrity of builds from other people.

Changelog:

me176c-boot(strap) 0.3.0 is required for this release. The old ("Intel") bootloader does no longer work as-is with this release.

The following proprietary components are no longer included by default and must be flashed manually if needed:

Widevine DRM (used in certain streaming apps like Netflix)

Houdini (used to run ARM apps on x86)

CPU microcode update

Added: Signature Spoofing

Unlike on LineageOS 14.1, I've decided to edit the patches slightly to make signature spoofing disabled by default. A system property must be set to enable signature spoofing. My reason for this is that there may be users of this ROM that are unaware of the implications of signature spoofing, and may grant this permission unknowingly. More information available on GitHub

I have prepared a flashable ZIP that can be flashed once to enable signature spoofing permanently.

Added: WireGuard

TWRP: Updated to TWRP 3.3.0

TWRP: Enabled MTP

We're getting closer and closer to a release, so please report any problems you find with these builds. Preferably as issues on GitHub: https://github.com/me176c-dev/android_device_asus_K013/issues

I tend to forget about issues that are not listed there.

Installation Instructions:

These are the new (work in progress) installation instructions that will be used in the new LineageOS 16.0 thread when it is released. Feedback is welcome.

Make sure you are running Android Lollipop (5.0).

You need an unlocked bootloader. LineageOS 16.0 requires me176c-bootstrap 0.3.0, included in me176c-boot 0.3.0. (The old "Intel" bootloader is no longer supported.)

Install TWRP [Note: Here you should install the latest test build from below.]

Make a full backup of the ASUS system. You may want to go back to it.

Do a full factory reset. Wipe data and cache partitions.

Install the main system using the flashable ZIP below.

If needed, install additional addons not included with the main system (see below).

Addons:

There are various packages you can flash for additional functionality. Most of them are proprietary. All addons persist during LineageOS updates, so you do not need to flash them again after updating.

Google Apps (Google Play Services, Play Store, ...): Use Open GApps (x86, Android 9.0)

Widevine DRM (used in certain streaming apps like Netflix): Flash widevine-x86-chromeos-11647.104.1_nocturne.zip* [see below]

Houdini (used to run ARM apps on x86, may help if an app shows up as incompatible): Flash houdini-x86-chromeos-11647.104.1_nocturne.zip* [see below]

CPU Microcode (may or may not improve stability and/or security): Flash me176c-boot-android-microcode-installer.zip - works only with me176c-boot.

Microcode update file needs to be downloaded separately. Follow the instructions in the README included in the ZIP.

Signature Spoofing (for use with microG): Flash me176c-signature-spoofing.zip to enable signature spoofing. Grant permission with caution only.

Note: The builds below are intended for testing only. They are insecure, and likely unstable. You need to do a full factory reset before flashing them.

TWRP: twrp-recovery-3.3.0-20190417-UNOFFICIAL-me176c.img (release candidate)

Flashable ZIP: lineage-16.0-20190417-UNOFFICIAL-me176c.zip

*Houdini/Widevine: I do not provide pre-built ZIPs for those two addons.

They can be built easily on any Linux distribution using https://github.com/me176c-dev/android_vendor_google_chromeos. Takes just a few minutes (depending on your download speed). No development experience or Android source code required.

If you are unable to build it, someone else may share a build with you. In that case, you can verify its integrity using the following SHA256 hash-sums:

046e698e23243d1f773c755d4f527ce6a446c4a34ec1f8d67cfbee9105b4c109 houdini-x86-chromeos-11647.104.1_nocturne.zip
921818c1210b549e2ce5aa5e37720aafbd02a4614b7375667599af065131e124 widevine-x86-chromeos-11647.104.1_nocturne.zip