[ROM][SDCLANG-6][microg ready][OMS exPosures]NLOS-16.0] - 20210109

nvertigo67

Senior Member
Dec 28, 2011
5,937
12,143
253
NLOS is an unofficial unified LineageOS build with many additions. These additions started small and have grown large over the month. So, it's time to name it NLOS - which still is an UNOFFICIAL LineageOS build.

Thanks to @UnbracedTundra NLOS has it's own logo, bootanimation and wallpapers. Thanx to @Syssx for evolving the bootanimation.

LineageOS is a free, community built, aftermarket firmware distribution of Android 9 (Pie), which is designed to increase performance and reliability over stock Android for your device.
My priorities are stabillity, battery, performance - in that order. This build is optimized (i.e. gcc-7.3 is used for kernel building) and has quite some candy (like OMS exPoseres).

In addition this rom contains two patches (https://github.com/microg/android_p...aster/patches/android_frameworks_base-P.patch and https://github.com/microg/android_p...aster/patches/android_frameworks_base-N.patch, ported to Pie) to be microG ready - this means freedom of choice to flash either gapps or install (microG How to use Android without Google Apps).

The kernel is prepared for Wireguard VPN - to use Wireguard for vpn-tunnels you need to get the WireGuard-apk from playstore. WireGuard developer @zx2c4 runs a dedicated Wireguard Thread.

The shipped kernel is prepared to comply to googles safetynet api. Since google has started to check if the sec patch level matches the build fingerprint, it's necessary to adjust the aosp based shipped ro.build.version.security_patch to the currently used OxygenOS build fingerprint. For details see posting #3 and the announcment of each build.

Additionally nlos' kernel has been upstreamed to the latest 3.18.y (3.18.140 EOL) patches. Since 3.18.y is no longer supported by kernel.org, I also merge https://source.codeaurora.org/quic/la/kernel/msm-3.18/. This way we get the latest qualcomm fixes and patches. Codeaurora is still supporting and maintaining their msm-3.18 project. To show the current state of the nlos kernel the naming scheme is "3.18.140-[caf tag]-NLOS-g[git hash]", e.g.: "3.18.140-LA.UM.7.6.r1-07000-89xx.0-NLOS-g63a7debca7d7". The staged qcacld-2.0 wifi driver is also updated to the same caf tag from https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0. This way Qualcomm security bullentins (https://www.qualcomm.com/company/product-security/bulletins ) are brought in.

Currently known issue can be found here.

If you find an issue, follow these instructions: https://forum.xda-developers.com/showpost.php?p=58239877&postcount=3

Everybody has his very own definition of "clean flash" or "dirty flash". I use these phrases like descriped in this posting: https://forum.xda-developers.com/showpost.php?p=58239877&postcount=2



Code:
#include <std_disclaimer.h>

/*
* Your warranty isn't void: we are on an oneplus device.
*
* We are 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 us for messing up your device, we will laugh at you.
*
*/
LineageOS is based on the Android Open Source Project with extra contributions from many people within the Android community. It can be used without any need to have any Google application installed. You will need to provide your own Google Applications package (gapps). LineageOS does still include various hardware-specific code, which is also slowly being open-sourced anyway.


This thread is for NLOS-16.0 builds for oneplus3 and onepluy3t. The following will not be supported here:
Custom kernels
Mods
Xposed
gapps packages bigger then opengapps-nano


I don't support Xposed and any logcat which includes a Xposed module will be ignored. You're kindly invited to not report bugs if you:
Flashed a custom kernel
Installed or did mods from untrusted sources
Modified system files
(i.e. by using gapps larger then opengapps-nano)


First time flashing NLOS 16.0 on your device, or coming from another ROM:
  1. Backup your current ROM and make sure you have backups of your data you want to keep.
  2. Download the ROM below in the downloads section.
  3. Download OpenGapps arm64 Android 9.0 pico or nano don't use a package larger then nano.
  4. Download and flash official twrp-3.4.0-0.
  5. Download and flash latest OxygenOS Oreo firmware.
  6. Optional (mandatory, if you have issues with encryption): Format data: in twrp tap on wipe and then tap on format data. This will delete all data, remove encryption and leave you with ext4, which is highly recommended. If you want to use f2fs you need to change the fs back to f2fs - it's possible but not recommended (at least if you don't have basic knowledge of fs implementations). Many twrp versions have serious regressions regarding f2fs with encryption footer. Though this should be fixed by now, you can always manually format f2fs with footer. See: https://forum.xda-developers.com/on...1-20180223-t3754855/post75688089#post75688089.
  7. Wipe system, data and caches.
  8. Flash NLOS.
  9. Flash Google Apps. If you want to use microG skip this step and install microG (How to use Android without Google Apps).
  10. Optional: flash Magisk (if you need root)
  11. Reboot (as usual: first boot takes loooooong ;) )

Updating this rom
Dirty flashing should work just fine: reboot into recovery (if necesarry flash the firmware zip recommended by the release notes) and flash the updated NLOS zip - don't forget to wipe dalvik and cache. Settings, apps and even google apps are preserved.
Important: if you encounter any issues, a clean install is recommended and even required if you need support.


I won't build on a daily (or nightly) basis. I will publish new builds, if I fixed something, important upstream changes or new security patchlevels.

LineageOS changelog: https://www.lineageoslog.com/16.0


Build 20201108

Releasenotes:

This build relies on OxygenOS firmware. OxygenOS 9.0.6 firmware is required. At this point you have two options:
  1. You don't care about loosing data on an unlocked bootloader and clean flash including format userdata according to the first time installation instructions in OP (recommended):
  2. You want to keep your current setup and like to dirty flash on top of beta builds:
    I've created a firmware package from OxygenOS 9.0.6. To avoid issues due to an unlocked bootloader and/or encrypted userdata partition, I've kept the bootloader and and keymaster partition to OxygenOS 5.0.8. This allows to run the pie-blobs builds with native Oneplus OxygenOS 9.0.6 firmware, but you don't need to reformat the userdata partition (for details see: https://forum.xda-developers.com/oneplus-3t/how-to/guide-cope-9-0-3-5-0-8-firmware-barrier-t3941164).
If you need to pass safetynet api flash sec-patch-2019-08-01_v02.zip from https://forum.xda-developers.com/on...-nlos-16-0-t3879405/post78433987#post78433987 .
Before you ask: though I've updated the blobs used in the rom to OOS 9.0.6, I've decided to stick with OOS 9.0.5 build fimgerprint, because 9.0.5 is the only version with identical fingerprint strings for op3 and op3t.

If you want to use Alipay with fingerprint authentication, follow @Galiis' directions in posting #6.

For a complete list of additional cherry picks see: current.pick.sh.

Changelog (Last repo sync: 8 Nov 2020, 10:38:17 CET / 8 Nov 2020, 09:38:17 UTC):


NLOS-Bootlogo
nlos_bootlogo-v0.1.zip
back_in_black_bootlogo-v1.0.zip(pre ob16 OxygenOS Bootlogo)


[SIZE="+2"]DOWNLOAD[/SIZE]​

Happy flashing!


History

Build 20201108

Releasenotes:

This build relies on OxygenOS firmware. OxygenOS 9.0.6 firmware is required. At this point you have two options:
  1. You don't care about loosing data on an unlocked bootloader and clean flash including format userdata according to the first time installation instructions in OP (recommended):
  2. You want to keep your current setup and like to dirty flash on top of beta builds:
    I've created a firmware package from OxygenOS 9.0.6. To avoid issues due to an unlocked bootloader and/or encrypted userdata partition, I've kept the bootloader and and keymaster partition to OxygenOS 5.0.8. This allows to run the pie-blobs builds with native Oneplus OxygenOS 9.0.6 firmware, but you don't need to reformat the userdata partition (for details see: https://forum.xda-developers.com/oneplus-3t/how-to/guide-cope-9-0-3-5-0-8-firmware-barrier-t3941164).
If you need to pass safetynet api flash sec-patch-2019-08-01_v02.zip from https://forum.xda-developers.com/on...-nlos-16-0-t3879405/post78433987#post78433987 .
Before you ask: though I've updated the blobs used in the rom to OOS 9.0.6, I've decided to stick with OOS 9.0.5 build fimgerprint, because 9.0.5 is the only version with identical fingerprint strings for op3 and op3t.

If you want to use Alipay with fingerprint authentication, follow @Galiis' directions in posting #6.

For a complete list of additional cherry picks see: current.pick.sh.

Changelog (Last repo sync: 8 Nov 2020, 10:38:17 CET / 8 Nov 2020, 09:38:17 UTC):


NLOS-Bootlogo
nlos_bootlogo-v0.1.zip
back_in_black_bootlogo-v1.0.zip(pre ob16 OxygenOS Bootlogo)


[SIZE="+2"]DOWNLOAD[/SIZE]

Happy flashing!

Build 20201018

Releasenotes:

This build relies on OxygenOS firmware. OxygenOS 9.0.6 firmware is required. At this point you have two options:
  1. You don't care about loosing data on an unlocked bootloader and clean flash including format userdata according to the first time installation instructions in OP (recommended):
  2. You want to keep your current setup and like to dirty flash on top of beta builds:
    I've created a firmware package from OxygenOS 9.0.6. To avoid issues due to an unlocked bootloader and/or encrypted userdata partition, I've kept the bootloader and and keymaster partition to OxygenOS 5.0.8. This allows to run the pie-blobs builds with native Oneplus OxygenOS 9.0.6 firmware, but you don't need to reformat the userdata partition (for details see: https://forum.xda-developers.com/oneplus-3t/how-to/guide-cope-9-0-3-5-0-8-firmware-barrier-t3941164).
If you need to pass safetynet api flash sec-patch-2019-08-01_v02.zip from https://forum.xda-developers.com/on...-nlos-16-0-t3879405/post78433987#post78433987 .
Before you ask: though I've updated the blobs used in the rom to OOS 9.0.6, I've decided to stick with OOS 9.0.5 build fimgerprint, because 9.0.5 is the only version with identical fingerprint strings for op3 and op3t.

If you want to use Alipay with fingerprint authentication, follow @Galiis' directions in posting #6.

For a complete list of additional cherry picks see: current.pick.sh.

Changelog (Last repo sync: 18 Okt 2020, 10:29:44 CEST / 18 Okt 2020, 08:29:44 UTC):


NLOS-Bootlogo
nlos_bootlogo-v0.1.zip
back_in_black_bootlogo-v1.0.zip(pre ob16 OxygenOS Bootlogo)


[SIZE="+2"]DOWNLOAD[/SIZE]​

Happy flashing!


Build 20201007

Releasenotes:

This build relies on OxygenOS firmware. OxygenOS 9.0.6 firmware is required. At this point you have two options:
  1. You don't care about loosing data on an unlocked bootloader and clean flash including format userdata according to the first time installation instructions in OP (recommended):
  2. You want to keep your current setup and like to dirty flash on top of beta builds:
    I've created a firmware package from OxygenOS 9.0.6. To avoid issues due to an unlocked bootloader and/or encrypted userdata partition, I've kept the bootloader and and keymaster partition to OxygenOS 5.0.8. This allows to run the pie-blobs builds with native Oneplus OxygenOS 9.0.6 firmware, but you don't need to reformat the userdata partition (for details see: https://forum.xda-developers.com/oneplus-3t/how-to/guide-cope-9-0-3-5-0-8-firmware-barrier-t3941164).
If you need to pass safetynet api flash sec-patch-2019-08-01_v02.zip from https://forum.xda-developers.com/on...-nlos-16-0-t3879405/post78433987#post78433987 .
Before you ask: though I've updated the blobs used in the rom to OOS 9.0.6, I've decided to stick with OOS 9.0.5 build fimgerprint, because 9.0.5 is the only version with identical fingerprint strings for op3 and op3t.

If you want to use Alipay with fingerprint authentication, follow @Galiis' directions in posting #6.

For a complete list of additional cherry picks see: current.pick.sh.

Changelog (Last repo sync: 7 Okt 2020, 17:42:15 CEST / 7 Okt 2020, 15:42:15 UTC):


NLOS-Bootlogo
nlos_bootlogo-v0.1.zip
back_in_black_bootlogo-v1.0.zip(pre ob16 OxygenOS Bootlogo)


[SIZE="+2"]DOWNLOAD[/SIZE]​

Happy flashing!

Build 20200912

Releasenotes:

This build relies on OxygenOS firmware. OxygenOS 9.0.6 firmware is required. At this point you have two options:
  1. You don't care about loosing data on an unlocked bootloader and clean flash including format userdata according to the first time installation instructions in OP (recommended):
  2. You want to keep your current setup and like to dirty flash on top of beta builds:
    I've created a firmware package from OxygenOS 9.0.6. To avoid issues due to an unlocked bootloader and/or encrypted userdata partition, I've kept the bootloader and and keymaster partition to OxygenOS 5.0.8. This allows to run the pie-blobs builds with native Oneplus OxygenOS 9.0.6 firmware, but you don't need to reformat the userdata partition (for details see: https://forum.xda-developers.com/oneplus-3t/how-to/guide-cope-9-0-3-5-0-8-firmware-barrier-t3941164).
If you need to pass safetynet api flash sec-patch-2019-08-01_v02.zip from https://forum.xda-developers.com/on...-nlos-16-0-t3879405/post78433987#post78433987 .
Before you ask: though I've updated the blobs used in the rom to OOS 9.0.6, I've decided to stick with OOS 9.0.5 build fimgerprint, because 9.0.5 is the only version with identical fingerprint strings for op3 and op3t.

If you want to use Alipay with fingerprint authentication, follow @Galiis' directions in posting #6.

For a complete list of additional cherry picks see: current.pick.sh.

Changelog (Last repo sync: 12 Sep 2020, 19:59:28 CEST / 12 Sep 2020, 17:59:28 UTC):


NLOS-Bootlogo
nlos_bootlogo-v0.1.zip
back_in_black_bootlogo-v1.0.zip(pre ob16 OxygenOS Bootlogo)


[SIZE="+2"]DOWNLOAD[/SIZE]​

Happy flashing!



Firmware
NVertigo's Oxygen Firmware Archive

TWRP
Latest official twrp downloads
Thread for official twrp
(Note: Don't use official twrp-3.2.3-1! Use dianlujitao's inofficial twrp-3.2.3-10 announced here or
latest official twrp.)

Google Apps:
OpenGapps arm64 Android 9.0 pico or nano

Source and toolchains
https://github.com/LineageOS/
https://github.com/nvertigo/local_manifest/tree/nlos-16.0 (If you want to build this rom yourself, consult the file named README, it's outdated, but still helpfull)



Happy flashing!

XDA:DevDB Information
NLOS-16.0, ROM for the OnePlus 3

Contributors
nvertigo67
ROM OS Version: 9.x Pie
ROM Kernel: Linux 3.x
ROM Firmware Required: OxygenOS 5.0.8
Based On: lineageos

Version Information
Status:
Beta

Created 2018-12-15
Last Updated 2018-12-18
 
Last edited:

nvertigo67

Senior Member
Dec 28, 2011
5,937
12,143
253
5GHz Tethering Hotspot

Symptom:
If you start the Tethering Hotspot (TS) on the 5GHz band, your clients can't see the TS, though it's fired up according to logcat.

Background:
The TS is run on a channel to high to be visible on the clients:

For me (vodafone.de; mcc=262, mnc=02) the 5GHz hot spot is always fired up on channel 157/5785MHz. Besides the fact that no European wifi device can use this channe/freq, in Germany it's prohibitted to broadcast on this channel, if one hasn't been licenced to do so. In Germany using this freq without being licenced, isn't a minor breach of law, but a crime.

Considering this it should be a high priority task to either fix this, or disable the selection of 5GHz all together. I've tried to debug this, but now I'm stuck and need help.

To see what's hap0ening I've added aome debugging, and tried to force a (European/German) legal freq: channel 44/5220MHz.
https://github.com/nvertigo/android...mmit/950adab4d870ecd83564f3e6c5ba77d9f2f57430
https://github.com/nvertigo/android...mmit/a4829959a3333c0a0d553f7f468f37c49b38a0a0

The first problem is here (obviously the countrycode is set, but not honored):
Code:
01-29 20:31:57.861  2523  3390 E ApConfigUtil: nvertigo: updateApChannelConfig: default band: 0; default channel: 6
01-29 20:31:57.862  2523  3390 E ApConfigUtil: nvertigo: updateApChannelConfig: band: 1; channel: 0
01-29 20:31:57.863  2523  3390 D ApConfigUtil: nvertigo: Forcing channel 44; computed freq: 5745; computed channel: 149
01-29 20:31:57.863  2523  3390 D ApConfigUtil: nvertigo: allowed freqs: [5180, 5200, 5220, 5240, 5745, 5765, 5785, 5805, 5825, 5845]; allowed5GFreqList.length: 10
01-29 20:31:57.863  2523  3390 E ApConfigUtil: nvertigo: config.apChannel: 44
01-29 20:31:57.869  2523  3390 D WificondControl: nvertigo: startHotspot: true
01-29 20:31:57.869  2523  3390 D WificondControl: nvertigo: startHotspot: successfull
01-29 20:31:58.001  6441  6441 I hostapd : ACS: nvertigo: hostapd_drv_do_acs succeeded.
01-29 20:31:58.002  2523  3390 D SoftApManager: nvertigo: Soft AP is started: wlan0channel: 44
01-29 20:31:58.202  6441  6441 I hostapd : wlan0: ACS-COMPLETED freq=5785 channel=157
01-29 20:31:58.435  2026  2026 I wificond: New channel on frequency: 5785 with bandwidth: 80MHz
01-29 20:31:58.495  6441  6441 I hostapd : wlan0: IEEE 802.11 driver had channel switch: freq=5785, ht=1, offset=1, width=3 (80 MHz), cf1=5775, cf2=0
01-29 20:31:58.495  6441  6441 I hostapd : wlan0: IEEE 802.11 driver had channel switch: freq=5785, ht=1, offset=1, width=3 (80 MHz), cf1=5775, cf2=0
01-29 20:31:58.495  6441  6441 I hostapd : wlan0: AP-CSA-FINISHED freq=5785 dfs=0
The allowed freqs are just wrong: it is "5180, 5200, 5220, 5240, 5745, 5765, 5785, 5805, 5825, 5845", while for country code EU or DE only "5180, 5200, 5220, 5240" are allowed for wifi.

I circumvent this the ard way: I force the channel to 44, no matter whats randomly picked from the wrong allowed list.

Now it gets awarkned: no matter what channel is requested by the framework, after hostapd has completed this part:
https://github.com/nvertigo/android...553f7f468f37c49b38a0a0/src/ap/acs.c#L911-L919
the hotspot is started on 157. :(

Any help is highly appriciated!

I also wonder if this is an op3/t specific issue, or if this is a general issue.

Next question: if frameworks/opt/net/wifi is calculating the channel, why is the Automatic Channel Selection (ACS) passed down to the wlan driver? And (most confusing me): where, when and how is the countrycode passed down to tne driver?mAnd one more: on boot (before even touching the hotspot switch the log shows:
Code:
01-29 20:31:09.628  2026  2026 I wificond: 2.4Ghz frequencies: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472
01-29 20:31:09.628  2026  2026 I wificond: 5Ghz non-DFS frequencies: 5180 5200 5220 5240 5745 5765 5785 5805 5825 5845
01-29 20:31:09.628  2026  2026 I wificond: 5Ghz DFS frequencies: 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 56
Immidiatly after touching the switch, the log shows:
Code:
01-29 20:31:57.747  2026  2026 I wificond: 2.4Ghz frequencies:
01-29 20:31:57.747  2026  2026 I wificond: 5Ghz non-DFS frequencies:
01-29 20:31:57.747  2026  2026 I wificond: 5Ghz DFS frequencies:
Though I'm wrong on the legal impact (EU laws replace old German regulations), the problem stays the same: the TS channel is to high to be seen by my (older) in Germany bought clients.

Workaround/Hack:
The easiest (and dirty) way to force the TS to be starzed on chanmels <100 is to set the country code used for the TS to Israel (IL9, because no channels >=100 are allowed). To do that uncomment line 238 and set it to IL:
Code:
gAPCntryCode=IL
Or use this flashable zip (does exactly whats described above):
ZIP: https://drive.google.com/open?id=1BSldodjxahxWdrYtCvDEzmTYEhNCodvu
MD5: https://drive.google.com/open?id=1frCinyMBsRyJR0p9_3e4SV35Vl0AC0A7

Happy flashing and tethering!
 
Last edited:

nvertigo67

Senior Member
Dec 28, 2011
5,937
12,143
253
Safetynet api

EDIT: Ive updated the zips. Make sure you use the zips with "v02" in their names! The "v02" versions work with android pie roms as well as with android 10 (system-as-root) roms.

Lately google has started to be more restrictive about build fingerprint and the date of the security patch level. For passing CTS profile match it's now required that ro.build.version.security_patch is the same as in the OxygenOS build the build fingerprint.

Generally the vendor security patch level date is one or more months behind the security patch level date of the (aosp) security patchlevel date of the LineageOS (and therefor NLOS) codd base.

Typically ro.build.version.security_patch is set the the security patch level date of the code base. Sadly this breaks passing CTS profile match, if the aosp/los/nlos security patch level date is different from the vendor security patch level date of the build fingerprint.

To work around this it's mandatory to set ro.build.version.security_patch to the vendor security patch level date. These zips just replace the date string of ro.build.version.security_patch in /system/build.prop. The zips are signed with the (aosp) los test keys.

To return to the rom shipped security patch level date, just dirty flash the rom.

Note:
These zips alone doesn't make your device passing safetynet api. Additionally you need to fullfill at least one of these requirements:
  1. a locked bootloader
  2. Magisk installed
  3. a kernel patched to throw away the tripped verity flag (like the shipped nlos kernel)


Happy flashing!
 
Last edited:

nvertigo67

Senior Member
Dec 28, 2011
5,937
12,143
253
Magisk with locked bootloader

Magisk versions up to - at least - 20.0 doesn't sign the boot image, if initiated from addon.d (on every dirty flash, aka update).

If you want to use Magisk with a locked bootloader, flash the attached VerifiedBootSigner-v8.01-aosp-key.zip after each Magisk addon.d installation. Keep in mind, that updating the rom (aka dirty flashing) reinstalls Magisk (from addon.d), which requites reflashing VerifiedBootSigner-v8.01-aosp-key.zip!

VerifiedBootSigner-v8.01-aosp-key.zip signs the bootimage with the required aosp verity key.

Happy flashing!
 

Attachments

Last edited:

nvertigo67

Senior Member
Dec 28, 2011
5,937
12,143
253
The "Error 7" error

If a flashable zip is flashed in recovery, the rcobery extracts the zip and executes
Code:
META-INF/com/google/android/update-binary
If "update-binary" doesn't return successfully twrp based recoveries retrun a red line on the twrp console
Code:
Updater process ended with error: 7, Error installing zip file
This just means that "update-binary" hasn't completed successfully - nothing more, nothing less. It doesn't say anything on the reason, why it has failed.

There can be multiple reasons "update-binary" fails. Some of the more common (the list is neither complete, nor does it show any priorities)
  • Firmware too old
  • Device not matching
  • broken zip file
  • insufficient free blocks in the fs
  • wrong fs type on system, data and/or cache
  • typo in the updater script (extensivly tested by myself)
  • incompatible rom (i.e. zip is fpr system-as-root mount layout, but installed rom has no system-as-root mount layout - or vice versa)
  • [...]

As a logical consequence, there can't be a single or universal solution to "Error 7".

Fortunately twrp allows "update-binary" to write to te twrp console. This means the output (including error messages) of "update-binary" is written to the twrp console prior to the red "Error 7" line. Even more details on the reason why "update-binary" fails is the recobery log from twrp (Main Twrp page->Advanced->Copy log to SD).

This also means, that every answer, guide, yt-video etc. claimimg it can fix "Error 7", without asking for the last 2 to 4 lines before the red "Error 7" line may be right by accident, but not by knowledge.

The worst of all advices to fix "Error 7" is to edit "updater-script":

On all source build roms I know of "update-binary" is a edify interpreter reading "updater-script" as input(*). The updater script for nlos looks like this:
Code:
assert(getprop("ro.product.device") == "OnePlus3" || getprop("ro.build.product") == "OnePlus3" || 
       getprop("ro.product.device") == "oneplus3" || getprop("ro.build.product") == "oneplus3" || 
       getprop("ro.product.device") == "OnePlus3T" || getprop("ro.build.product") == "OnePlus3T" || 
       getprop("ro.product.device") == "oneplus3t" || getprop("ro.build.product") == "oneplus3t" || abort("E3004: This package is for device: OnePlus3,oneplus3,OnePlus3T,oneplus3t; this device is " + getprop("ro.product.device") + "."););
assert(op3.verify_modem("2019-11-04 21:20:14") == "1" || abort("Error: This package requires firmware version OxygenOS 9.0.6 or newer. Please upgrade firmware and retry!"););
ui_print("Target: OnePlus/OnePlus3/OnePlus3:9/PKQ1.181203.001/1907311932:user/release-keys");
ifelse(is_mounted("/system"), unmount("/system"));
package_extract_dir("install", "/tmp/install");
set_metadata_recursive("/tmp/install", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644);
set_metadata_recursive("/tmp/install/bin", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755);
mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "/system", "");
run_program("/tmp/install/bin/backuptool.sh", "backup", "/system");
unmount("/system");
show_progress(0.750000, 0);
ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat.br", "system.patch.dat") ||
  abort("E1001: Failed to update system image.");
show_progress(0.020000, 10);
mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "/system", "");
run_program("/tmp/install/bin/backuptool.sh", "restore", "/system");
unmount("/system");
show_progress(0.050000, 5);
package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");
show_progress(0.200000, 10);
set_progress(1.000000);
If the cause for "Error 7" is a device mismatch (line 1 - 5), this may be caused because you don't flash it on an op3/t, or because the recovery you are using doesn't provide the properties "ro.product.device" or "ro.build.product". Though a flash would work when deleting these 5 lines from "updater script", the first case results in a bricked device, the second in a rom flash with an outdated or otherwise incompatible recovery.

If you flash nlos on top of a firmware not matching the blobs nlos uses, this will lead to unwanted side effects like not correctly working hardware parts like sensors including fingerprint scanner and camera. To avoid this "updater-script" has line 6. Deleting line 6 will allow you to flash nlos on an outdated firmware... :(

Obviously the better way is using a zip only for devices, recoveries and/or firmwares, they are made for.

Conclusion:
In order to solve "Error 7" it's mandatory to solve the "real" error. For this task it's inevitable to know the last lines before the red "Error 7" line on the twrp console and/or the revoery log (Main Twrp page->Advanced->Copy log to SD). The revovery log is always prefered, since it is more detailed then just the console output.

(*)in opposite to i.e. opengapps zips or magisk zips, where "uodate-binary" is a shell script. Both methods - edify interpreter or shell scripts - have their own advantages and drawbacks, generally spoken shell scripts are more flexible. Discussing the technical details is not part of this posting.
 
Last edited:

Galiis

Member
Jun 23, 2019
9
17
0
Original Post

If you are addicted to Alipay or Wechat pay, I'm highly recommend you switch to other ROMs (like OOS/LOS) which have ifaa and soter components.

Without ifaa and soter components, but your fingerprint sensor is working. There is a 3rd-party method using magisk module implement fingerprint payment for Alipay and Wechat pay. (Use at your own risk!)

Test environment:
ROM: nlos-16.0-20200312 build
Firmware: oxygenos-9.0.6-firmware-3T
Bootloader: Locked
Alipay: 10.1.88.5821 (Google Play)
Magisk: v20.3

Requirements:
  • Magisk
  • Rooted Android 6.0+ devices

Installation (for Alipay):
  • Install modules in magisk manager, then enable them and reboot.

Usage:
  • Open Alipay app, go to the settings, enable it in fingerprint and type your payment password (see attachments).
  • Pay for a drink to test if it works.

References:
https://github.com/RikkaApps/Riru
https://github.com/eritpchy/Fingerprint-pay-magisk-alipay
https://github.com/eritpchy/Fingerprint-pay-magisk-wechat

PS:
1. This module stores your payment password at your local device (encrypted).
2. It may not work after Alipay or Wechat update.
3. I didn't test Wechat pay module, you can have a try (see references).

Thanks to those module developers for their work.
 
Last edited:

nvertigo67

Senior Member
Dec 28, 2011
5,937
12,143
253
General thoughts on gapp packages

Note: Consider "Bit Gapps" as place holder for any other gapps vendor then opengapps. ;)

There is nothing wrong with Bit Gapps, but Open Gapps package is updated daily so it's better to go with it.
From my expirience the nightly (or daily for that matter) automatic builds are the biggest drawback of open gapps:
  1. Since these builds arn't tested but just automatic build. This results in quite some broken packages. I've made it my personal habbit to stick with a build, after it has proofed to work (once installed gservices as well as gapps are updated from play store - this means: if you use e.g. an one year old (proofed to work) gapps build used on a clean flash is updated to latest gservices/gapps shortly after first boot.
  2. The lack of knowing about the playstore updates makes users think it's a good idea to "update" the flashable gapps zip, which may lead to issues: some of the gapps and gservices settings are stored in a sqlite db. If the playstore updates contain a sqlite update, which is not present in the new nightly gapps zip and you wipe system but not data to flash that zip (and call it an "update), the db engine is downgraded below the version of the db on data you will get strange side effects and only a clean flash will recover (some of the more common issues in that situation are "lost" notifications, issues with (also third party) apps using cloud messaging gservice and/or switched or absent sounds).

This doesn't mean that bitgapps are better then opengapps - but nightly/daily updated gapps packahes are more prune to user error then gapps builds updated every few months and receive thoroughly testing before shipping.

Try nano or pico, the rest you can install after from playstore.
I completely agree here. If one looks at e.g. https://github.com/opengapps/opengapps/wiki/Stock-Package and search for "replaces", you'll see what is replaced in the system partition. The more obvious drawbacks are, that if you install stock opengapps e.g. the rom shipped webview is gone (in opposite to installing chrome webview from playstore, which let you choose at runtime which webview should be used - this also goes for launcher, telephone app, email, contacts, etc).

Even worse (and much less obvious) is the point, that if you install an app with own libs (*.so) and c-bindings (*.jni) from playstore they are installed within the app and are used only in the app's sessions. If you use the same app from the gapps flashable zip, those libs and bindings are installed outside the app dir in the system partition replacing their rom shipped counterparts: all services and apps - even the rom shipped services and apps - need to use the ones from the gapps package. The rom is massively changed in a way not controlable (and not supportable) by the rom dev.

A last word of warning: never ever downgrade a gapps package (e.g. from stock to nano) and install the missing apps from playstore. The gapps db entries for a system gapp (flashable zip) are different from user gapp (playstore install). Upgrading from e.g. nano to stock (not recommended; see above!!!) will work, iff all stock contained apps are uninstalled before the upgrade.

Again this doesn't mean bit apps is supiror to opengapps or vice versa. It just means the nightly/daily updates arn't an advantage by it's own. You are always safe as long as you know what you are doing; this includes to check exactly what each package installs and replaces. Obviously it doesn't make any sense to complain about e.g. laggy webview in the rom's thtead when using opengapps stock package.
 
Last edited:

knpk13

Senior Member
Dec 11, 2015
2,090
1,205
193
Ayy! That was quick. Time to flashhhh!

As long as the dark theme works, no reason to switch back to Oreo. Bye bye bad recents menu xD

Edit: since you tagged me for debugging OP lol..

Might want to change the cmxlog link to LOS 16.
And first time flashing instructions says NLOS 15 instead of 16.

If 16 is already on feature parity with 15, then I'll be pretty amazed lol.
 
Last edited:
  • Like
Reactions: nvertigo67 and RKBD

64ashg

Senior Member
May 18, 2014
544
351
93
So how should we update from nlos 15.1 to 16? Dirty flash gonna work?

Edit, dirty flashed nlos 16 over 15.1 and pico gapps then magisk.
Works :)
 
Last edited:

knpk13

Senior Member
Dec 11, 2015
2,090
1,205
193
There's a few minor issues as expected from a first alpha. FC's on apps like the inbuilt sounds app and the Android setup app for the first time after a gapps flash. Everything works fine after that one FC on the setup app, although the sounds app still doesn't work. Lots of duplicate sounds in the notification sounds section. Some oddities like using the notification sound as the charging sound by default, although I guess that isn't a bug. All major LOS features that I used on Oreo seem to be working fine on Pie. There's an issues with the slider settings logic when you use priority only; it never exits that muted mode when you switch back to none. As for NLOS features, substratum doesn't seem to be working for me, is the OMS service mode already in? I denied root and got this screen.

Complete clean flash without gapps to test, and then another clean flash with opengapps nano and magisk to set everything up. Only 4 apps from Oreo restored via titanium backup to Pie. They all seem to work so hopefully doing that isn't a problem? (All 3 chrome builds had open tabs so I didn't want to install them from scratch or I'd lose the tabs. And Pulse, my SMS app has my chat history so I restored that too. Others I clean installed.)

Pie has so many small cool UI additions. From text editing to call UI to volume slider UI. Oh and the buttery smooth animations.... I'm not sure which features are part of AOSP Pie and which ones are LOS features at this point haha.
Performance, battery, stability, all seem great till now.

Also looking for a new gallery app. Any recommendations?

Edit: audio ducking behavior on notifications is also different. Notifications completely stop any other audio. I can't figure out how to change that behavior.

IDK if it's a pie or LOS feature but the settings app has a black theme for the system, so I'm happy. Should I use root for substratum if OMS isn't in yet, or is OMS in and that's a bug?
 

Attachments

Last edited:

aOa0LU

New member
Dec 16, 2018
1
1
0
Thanks for the excellent ROM! I just installed it, and it seems to be working fairly well for me, but I did run into a few issues:

- the OOBE crashed several times, although it eventually managed to get to the end
- the Swift Dark installed failed to install any themes at all
- I get a notification from org.codeauora.ims saying that "SIM 1 is HD capable", but all options to turn it off are disabled
- I had issues getting FDE working, and documented the process I used to get it fixed in the android stackexchange, at a question titled "Device encryption fails, gives no error and just restarts" (won't let me post links). This issue was something you already briefly covered in the first post.

Otherwise, I'm super happy with 16.0, it feels great, and I haven't run into any bugs that make it unusable.
 
  • Like
Reactions: nvertigo67

nvertigo67

Senior Member
Dec 28, 2011
5,937
12,143
253
1st. Thx downloading now. Is this ROM optimized for 3/3T or 3T only ?

Some screenshots would be greatly appreciated.
'

Thx Dev
Works for both devices. Blobs (especially cam blobs and carrier mbns) are taken from 3t OOS image.

Looks like los. My imtend is not to have some graphical chamges, but to enpower the users to make this "their" rom.

Themes, microg or gapps... The "out of the box"-look is the same as los.

Sadly I can't get substratum service mode working, currently, so you need root, but with the additional exposures and Magisk pie ready themes work like charme.

( @knpk13: you need root currently for substratum)

So how should we update from nlos 15.1 to 16? Dirty flash gonna work?

Edit, dirty flashed nlos 16 over 15.1 and pico gapps then magisk.
Works :)
The standard rules of thumb apply:
  1. If you dirty flash with no issues, you are fine. If issues show up: clean flash!
  2. Whenever you wonder if it's time for a clean flash: the answer is yes.

There's a few minor issues as expected from a first alpha. FC's on apps like the inbuilt sounds app and the Android setup app for the first time after a gapps flash.
I had two fcs from setupwizard during first time setup - I just redid my inputs and it went through: no reflashing, no reboot.

org.lineage.eleven (shows as "Music" in app drawer) is working (flac fix is missing - will be in the next update, I've missed that one) as well as org.lineage.audiofx. Or do you mean an other sound app?

Lots of duplicate sounds in the notification sounds section.
Not for me. Perhaps you have /sdcard/Alarms and/or /sdcard/Notifications filled with same named audio files?

There's an issues with the slider settings logic when you use priority only; it never exits that muted mode when you switch back to none.
I have that only for Alarms. If I set bottom to none, and Middle AND Top both to priority it works like intended. I'm planing to keep priority but rename it to dnd and use Alarm as vibrate mode. The slider logic definetly needs some work.


As for NLOS features, substratum doesn't seem to be working for me, is the OMS service mode already in? I denied root and got this screen.
See the thread's subject and the OP:
Hopefully soon: NLOS features OMS Service Mode - the successor of ThemeInterfacer. This means you don't need root and/or andromeda to have full Substratum Theming! It's faster then andromeda and does not rely on a tethered pc-connection. It has more exposueres (items exposed to the themers) then the rooted solution. If substratum should ask for root previlegs, deny it. All exposures are allready implemented.
;) ;) ;)

Complete clean flash without gapps to test, and then another clean flash with opengapps nano and magisk to set everything up. Only 4 apps from Oreo restored via titanium backup to Pie. They all seem to work so hopefully doing that isn't a problem? (All 3 chrome builds had open tabs so I didn't want to install them from scratch or I'd lose the tabs. And Pulse, my SMS app has my chat history so I restored that too. Others I clean installed.)
If you have no issue, you have no issue - if you have issues, you have issues... Time will show, I guess...

Edit: audio ducking behavior on notifications is also different. Notifications completely stop any other audio. I can't figure out how to change that behavior.
No clue - not even sure, if it's intended or not.
 

nvertigo67

Senior Member
Dec 28, 2011
5,937
12,143
253
Thanks for the excellent ROM! I just installed it, and it seems to be working fairly well for me, but I did run into a few issues:

- the OOBE crashed several times, although it eventually managed to get to the end
- the Swift Dark installed failed to install any themes at all
- I get a notification from org.codeauora.ims saying that "SIM 1 is HD capable", but all options to turn it off are disabled
- I had issues getting FDE working, and documented the process I used to get it fixed in the android stackexchange, at a question titled "Device encryption fails, gives no error and just restarts" (won't let me post links). This issue was something you already briefly covered in the first post.

Otherwise, I'm super happy with 16.0, it feels great, and I haven't run into any bugs that make it unusable.
I have no clue what OOBE is.

How do you install swift dark? It's my main testing them and works great, installed from sunstratum follwing swift dark's directions to the point (secomd reboot not necessary).

For the annoying hd notification we need to wait for an upstream fix. I don't expirience that, so not much I can do about.

FDE is working out of the box. Since data is encrypted on my device, I wouldn't be able to boot... ???

For the link: just use host.domain.top/some/where instead of https://host.domain.top/some/where .
 

knpk13

Senior Member
Dec 11, 2015
2,090
1,205
193
Sadly I can't get substratum service mode working, currently, so you need root, but with the additional exposures and Magisk pie ready themes work like charme.

( @knpk13: you need root currently for substratum)

I had two fcs from setupwizard during first time setup - I just redid my inputs and it went through: no reflashing, no reboot.

org.lineage.eleven (shows as "Music" in app drawer) is working (flac fix is missing - will be in the next update, I've missed that one) as well as org.lineage.audiofx. Or do you mean an other sound app?

Not for me. Perhaps you have /sdcard/Alarms and/or /sdcard/Notifications filled with same named audio files?
Additional exposures? Ooh it installs a magisk module. Guess I need to reboot every time to apply themes. Unfortunate. Well at least it's all black now haha. Funny thing is in P, I find the spacing of notifications to be quite large. The P-ify module on O was more compact and nice, better than original P lol. Maybe there's way to change it, or I'll just get used to it. Everything else seems great.

This sounds app in the screenshot. I tried to change my ringtone and it asked me to pick between media storage and sounds. Media storage works, sounds crashes.

I don't have any audio files in the alarms or notifications folders. Only the inbuilt LOS sounds. Here's one example of a duplicate, Platinum.

So I shouldn't be worried about the setup wizard FC's? I had only one FC.
 

64ashg

Senior Member
May 18, 2014
544
351
93
I have the network speed indicator at a slight offset. Is anybody else having this problem?
The first screenshot is of the default settings, and the next one is of me having the display size small and font large.
I dirty flashed over nlos 15.1 so anyone with the same experience. Or clean flashers, having this issue. I remember someone having this problem in the los16 beta thread.
Thanks in advance :)
 

Attachments

  • Like
Reactions: Tiggy_Drum

knpk13

Senior Member
Dec 11, 2015
2,090
1,205
193
I have the network speed indicator at a slight offset. Is anybody else having this problem?
All the reports in the LOS 16 thread say it doesn't work at all. The feature seems to work for me on NLOS 16 (I don't use it, just downloaded an app to check if the monitor showed any info) and this is the position I get on a clean flash.
 

Attachments