[EXPERIMENTAL][AOSP][NRD90U] Unofficial Android 7.0 Nougat build

489 posts
Thanks Meter: 1,148
By updateing, Senior Member on 27th August 2016, 06:06 PM
Post Reply Email Thread
#include <std_disclaimer.h>
* Your warranty is now void.
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
Hello guys, this is an unofficial build of AOSP Nougat (with tag android-7.0.0_r6). Kernel is based on CM13's, with some recent commits in kernel/common in AOSP. Sources and patches are available at the end of the post.

Note: this ROM is just for having the first taste of Nougat, and thus missing a lot of key features. I may not be able to update it regularly.

Basic hardware functionality:
Almost everything works, except video hardware encoding, which causes camcorder to fail. HW decoding works though.
Everything should be working since 20160903.
I didn't find more hardware failures, but there can be more.
And remember, the proprietary firmwares and blobs are still in the age of Marshmallow, and a system won't be complete without corresponding firmwares and blobs.

Known bugs:
1. HW disk encryption is likely broken. I reverted some commits to make cryptfs_hw build, but I'm not sure if that works. Do not try it.
2. SELinux is permissive, and init allows service without a SELinux domain to start.
3. GPS may take longer to obtain a position fix. (yes it's working... sorry for the misunderstanding)
4. Only Launcher2 is included. You may install a new one as you like.
5. No LiveDisplay and gestures except DT2W (DT2W can not be turned off via Settings app for now) Color calibration is possible, see FAQ below.
6. Default input method could be broken. Be ready to "pm install your_ime.apk" in adb shell. Fixed in 20160828
7. com.qti.dpmserviceapp may produce continous FC. You can disable it via adb shell ("su -c pm disable com.qti.dpmserviceapp"). Removed in 20160828
8. Rotating screen while playing video can cause the display to "split" Fixed in 20160903
9. Camera service and media codecs all run in the same process, eliminating one of the security enhancements of Android N. May not be fixed until new HAL and blobs are available.

So the security improvements in Nougat are not making much difference in this only-a-taste ROM. If you rely on this, it would be better to wait for official releases.



1. Root / Gapps?

I'm using SuperSU 2.76 stable and OpenGapps 7.0 pico. They work without any issue.
If your contacts / calendars is not syncing, try the following steps:
1. Goto Settings > Apps, tap "Show system" in menu
2. Find "Google Contacts Sync", tap on it, tap "Permissions", turn on everything
3. Go back to Detail screen, clear its data
4. Go back to app list, clear "Contacts Storage"' data
5. Do the same for calendars (2-4)
6. Reboot


2. F2FS?

I did not test this myself... But kernel has support already (of cource, it's from CM) so you may have a try. Remember to backup!
EDIT: Some users reported that F2FS partitions are corrupted. If you are using F2FS, maybe you should wait.


3. Menu key / App switcher?

Menu key now acts as recents, since I don't think the former is as useful as the latter. And there is no more lag while tapping home button since we don't check for double tap anymore.


4. TWRP shows error?

If that's two lines of "log", you can safely ignore it.
If there is something else, please stop and post it here.

If you are using MultiROM, you may modify update-script. Read the first ~8 pages and you will find it.

Reference: I'm using official TWRP 3.0.2 w/o MultiROM This recovery didn't get replaced by stock one...


5. File manager (to install APKs)?


6. Disable HW keys, enable soft keys, screen color calibration?

Disable HW keys: echo 0 > /proc/touchpanel/keypad_enable (needs repeat on reboot)
Enable soft keys: echo "qemu.hw.mainkeys=0 >> /system/build.prop (once)
Screen color calibration: echo "32768 31784 27852" > /sys/class/graphics/fb0/rgb (needs repeat on reboot, change the values as you need. This example is 100% R, 97% G, 85% B)
Optionally you can enable color enhancing: echo 1 > /sys/class/graphics/fb0/color_enhance

Screenshot spoiler

Flashing Guide by @The Dork Knight Rises
In the 3rd post. Direct link:

Video hands-on by @savadam

Thanks for all your support!

20160919: Mirror 1: Mirror 2:!fEk1CTyJ!F8rdnqT_o...6LRaD2t81N2WIA
You can still use HALs from 20160906 if you want.
(And if you are posting this somewhere else, please include the HALs in your post)

Older versions:

20160918: Mirror 1: Mirror 2:!rdlkgboI!LQuFDtcpp...uxjAlrhg9Z0tuQ

20160910: Mirror 1: Mirror 2:!XEsTESpR!QDa7he2jd...KV0IdtyuB0R-yc

20160906: Mirror 1: Mirror 2:!zBVX1DTZ!S-LnpIEgJ...p93XbP-Ug__XBk
CAF and original AOSP HALs:
Note on the HALs:
AOSP HALs (msm8996 display + msm8974 media) can not record screen, but they "seem" to make the system smoother. (msm8974 display HAL cannot be used because it corrupts the display when rotating screen with video playing)
CAF HALs (both based on vanilla CAF LA.BF.1.1.3_rb1.13) can record screen but "seem" not to be so efficient as AOSP ones.
The HAL included in the ROM are the AOSP variant.

20160903: Mirror 1: Mirror 2:!OcFlTDDK!EYiNpfE-9...bMkXOTdhP1HDZc
20160831: Mirror 1: Mirror 2:!jE92iSAD!pl0NMU6PP...6fNTaUUMI0xdzg
20160828: Mirror 1:!XdlXFDBQ!p7E0N64IE...00O0dRwJlEnvcw Mirror 2:

Note: please read "known bugs" section before flashing! Also you can read the guide below.
When updating the ROM, just dirty-flash new build and Gapps (if you use them).
In order to prevent your recovery from being replaced by the stock one, flash SuperSU along with the ROM.

Build system:
And there are a lot more repos I didn't fork. The changes there as well as local_manifest are here:
20160918+ Check GitHub
20160906 No new patches except the HALs. For AOSP HALs, check previous patch archive and Sony's guide. For CAF HALs, just cherry-pick "Fix clang build" from CM.


Fixed Fackbook crash by avoiding preloading (CM camera HAL is the only camera HAL that does not require this)
Updated BT configuration (please test if it has any side effect. Sometimes you need to search twice to find your Bluetooth gadgets.)
Tried to fix network location (added Google's network location provider)

Reverted to previous "stub" power HAL. May fix lagging and unusual power consumption noticed by some users.
Tried to fix NFC FW download mechanism. May fix non-working NFC for some users.

Updated to NRD90U (android-7.0.0_r6)
Switched to CM/QCOM power HAL. The original power HAL is more like a placeholder.
Now on Tap can be launched by long-pressing home button
Switchable WebView implementation, thanks to @fards here
1. If you are experiencing display issues (such as screen flicker with FLV SW decoding), try switching on "Disable HW Overlay" in Development Settings.
2. If you need multi-user feature, remove /system/priv-app/com.qualcomm.location. Otherwise the system will crash. It was accidentally added in this build.

Switched back to AOSP HALs to increase performance, but screen recording is broken again. You can choose CAF HALs listed above to fix that. Camcorder and HW encoding work with both variants, no need to worry.
Updated media profiles. Front camera knows that it is not capable of 1080p recording.

Fixed HW encoder and camcorder (they are different issues, though related) (and switched to CM13 media HAL)
Fixed display corruption while rotating screen with video playing (by switching to CM13 display HAL, don't know which lines of code fixed that)
DT2W can be turned off via Settings
Added Reboot option in power menu

Fixed crash in World Clock page when selecting countries/regions
Fixed hang in Developer Settings when the ROM is installed as secondary
Fixed crash when taking photos with HDR on
Added support for kexec
Added Stk

Fixed default input method FC
Remove com.qti.dpmservices to prevent FC
Dev: updated build system to finally automate everything

Initial build

Notes on the sources:
1. Build system produces correct boot.img in $OUT, but the boot image in OTA zip still has no DT included. Fixed in 20160828
2. Some fixes are really "dirty" (as I'm not able to find a proper way)...
3. Some JNIs fail to build (lots of C++ symbols no found). You may try linking C++ libs dynamically (c++_static -> c++_shared) to avoid this. See 20160828 patches, packages/inputmethods/LatinIME for example.
4. Some apps require android-8 ndk, but the earliest version in the tree is android-9. A symlink will do (or you can change the in app) but I'm not really sure this will not introduce any bug.
5. Android N split mediaserver into multiple processes to improve security, such as cameraserver, mediacodec, etc. But camera blobs and old HALs were not designed like this. They assume they run in the same process, thus a buffer created by blobs are being used everywhere, which will cause illegal memory access under Android N. I reverted lots of patches about this, forcing camera and codec services to run in the mediaserver process as before - security compromised with functionality, again.

Hope you enjoy this.
The Following 281 Users Say Thank You to updateing For This Useful Post: [ View ] Gift updateing Ad-Free
27th August 2016, 06:09 PM |#2  
wulsic's Avatar
Senior Member
Flag Nijmegen
Thanks Meter: 2,321
I am going to try this out, thanks @updateing for your work
If I could find fixes then I would send an pull request.
The Following 10 Users Say Thank You to wulsic For This Useful Post: [ View ] Gift wulsic Ad-Free
27th August 2016, 06:17 PM |#3  
The Dork Knight Rises's Avatar
Senior Member
Flag Mumbai
Thanks Meter: 1,123
Donate to Me
Info 2 The All-In-One Post
Oh look at the's flashy time already? XD


Click image for larger version

Name:	Screenshot_20160828-193145.png
Views:	11448
Size:	94.6 KB
ID:	3857546
(Layers themes work. Use Substratum app)
Click image for larger version

Name:	AboutPhone.png
Views:	13888
Size:	128.1 KB
ID:	3856677
Click image for larger version

Name:	N.png
Views:	13534
Size:	209.0 KB
ID:	3856678
Click image for larger version

Name:	Notifs.png
Views:	13016
Size:	190.8 KB
ID:	3856679
Click image for larger version

Name:	QReply.png
Views:	12748
Size:	82.0 KB
ID:	3856680
Click image for larger version

Name:	NotifPriority.png
Views:	12516
Size:	118.5 KB
ID:	3856681
Click image for larger version

Name:	QS.png
Views:	12332
Size:	114.4 KB
ID:	3856682
Click image for larger version

Name:	QSEdit.png
Views:	12034
Size:	67.8 KB
ID:	3856683
Click image for larger version

Name:	Battery.png
Views:	11530
Size:	106.3 KB
ID:	3856689
Click image for larger version

Name:	MultiW.png
Views:	11818
Size:	184.7 KB
ID:	3856684
Click image for larger version

Name:	Tuner.png
Views:	11524
Size:	76.2 KB
ID:	3856686
Click image for larger version

Name:	NavTuner.png
Views:	11128
Size:	79.6 KB
ID:	3856690
Click image for larger version

Name:	NightMode.png
Views:	10804
Size:	87.5 KB
ID:	3856688
Click image for larger version

Name:	RGB.png
Views:	10796
Size:	64.3 KB
ID:	3856687
Click image for larger version

Name:	Screenshot_20160828-055347.png
Views:	10614
Size:	214.8 KB
ID:	3856734

Guide to flashing this properly (TWRP v3.0.2-0):
-Flashing Google keyboard is not mandatory, as default input mode has been fixed
-adb steps do not need to be performed as the com.qti.dpmserviceapp has been removed
-You probably shouldn't flash the SystemUI Tuner mod zip, as the SystemUI APK from previous build may not be compatible with new build. If you flash it on 28 build and have SystemUI FCs or missing SystemUI, just reflash ROM, and don't flash the mod.
(This guide is for flashing as primary ROM without MultiROM. MultiROM guide by @7u5h4r:

TL;DR version (that means short version)
  1. Download ROM zip from OP and Google Keyboard flashable zip, as well as any of the zips I linked below.
  2. Wipe your device (data, cache, dalvik/ART cache; preferably even system, just to be as "clean" as possible)
    -If you dirty flash this ROM (eg. flashing newer build), you will need to flash GApps again along with the ROM zip as GApps are not preserved
    -This ROM actually booted for me even on a dirty flash from an MM custom ROM, and as a result I didn't face a lot of the problems you'd face on clean flash (GApps crashes, continuous qti app FCs, etc)
    But a lot of my apps were crashing until I reinstalled them, and in any case, it is not advised to dirty flash when coming from MM)
  3. Flash ROM zip and keyboard zip, optionally any of the following addons (DO NOT FLASH GAPPS YET):
    -SuperSU (v2.68+) for root
    -Any of the mods I linked below
    -Any other mods like Viper4Android etc (AT YOUR OWN RISK)
  4. Boot into the ROM. you'll probably see a lot of crashes, ignore them, and just find a PC for the next step
    (Optionally, you could try to enable Developer Options by tapping past the FC dialogs, once you have DevOps enabled, you'll see an option to mute FC notifications till next boot)
  5. Using ADB on your PC, disable the com.qti.dpmserviceapp package by running following commands:
    adb devices
    You should see a device in the list of devices connected
    adb shell
    pm disable com.qti.dpmserviceapp
    If you get error with permissions, you may need root. If your device is rooted:
    pm disable com.qti.dpmserviceapp
    (SKIP 6, 7 & 8 if you do not need Google services)
  6. Now reboot into recovery and flash a compatible GApps package (USE 7.0 GAPPS ONLY)
    Boot into ROM
  7. Go to Settings>Apps
    Find Google Play Services, and go to its Permissions. Enable essential permissions. Now Play Services won't keep crashing on you. Also find Google Contact Sync and give it permission to access Contacts.
  8. Go to Settings>Accounts and add your Google account
  9. Profit
  10. Praise DuARTe
  11. Hit Thanks if this helped

Here's some helpful zips for you guys!
The Following 103 Users Say Thank You to The Dork Knight Rises For This Useful Post: [ View ] Gift The Dork Knight Rises Ad-Free
27th August 2016, 06:22 PM |#4  
Senior Member
Flag Rome
Thanks Meter: 354
Wow! Great work

27th August 2016, 06:29 PM |#6  
Senior Member
Thanks Meter: 23
Cool, thanks, gonna try asap

Enviado desde mi A0001 mediante Tapatalk
The Following User Says Thank You to Hugomm For This Useful Post: [ View ] Gift Hugomm Ad-Free
27th August 2016, 06:33 PM |#7  
Senior Member
Thanks Meter: 93
Great! Thank u dev!
27th August 2016, 06:38 PM |#8  
Adam Myczkowski's Avatar
Senior Member
Flag Telford
Thanks Meter: 373
Donate to Me
Originally Posted by updateing

2. SELinux is permissive, and init allows service without a SELinux domain to start.

Which sepolicy did you use? I am porting to a different device and Im currently trying to fix neverallows which is painful but I think I merged a commit to qcom/sepolicy which allows domain to start (im not very good in sepolicy). Its based off Cyanogenmod qcom/sepolicy repo. If you want to take a look its here android_device_qcom_sepolicy-1 and I had to add one thing to platform_system_sepolicy. I hope we'll be able to fix sepolicy soon.
27th August 2016, 06:40 PM |#9  
Flag Mumbai
Thanks Meter: 10
Awesome.... Downloading already.
27th August 2016, 06:43 PM |#10  
Senior Member
Thanks Meter: 18
Awesome! Has anyone tried If gapps work?
The Following User Says Thank You to Urool For This Useful Post: [ View ] Gift Urool Ad-Free
27th August 2016, 06:43 PM |#11  
Senior Member
Thanks Meter: 38
Flashed it. But i get a FC all the time

com.qti.dpmserviceapp has stopped.

I cant do anything..?
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes