[OnePlus 3T ROMs, Kernels, Recoveries, & Other Deve] :
UPDATE

Build 20170729

Releasenotes:

This build requires firmware OpenBeta 11 (aka ob11). A flashable zip for ob11 firmware can be found below in the firmware section of Downloads.

TWRP:

I fixed the incompatibility with current versions of TWRP and added error messages, to not only have an "error 7" (assert failed), but just one line above the the description of the failed assert. Though this is working like charme, I'm back to 3.0.4-1, because I can backup/restore the complete installation including firmware. Considering the frequency of OnePlus OpenBeta updates, It's really comfortable for stepping back and forth without the need of thinking about fw versions. Since I use 3.0.4-1 as "daily driver" I will stick to recommending this. Since you are propably not flashing that often then me, you may be better of with a more current version (in terms of ux: i.e. dt2w).

Changelog:

releasetools: add assert to fix compatibility with current TWRP versions. — nvertigo

OxygenOS and LineageOS make different use of

ro.product.device

While LineageOS is setting this property to "OnePlus3" respectively
"OnePlus3T" to adjust initing on unified builds, OxygenOS has set
this property to "OnePlus3" on both devices and asserts on the property
ro.display.series - as well as TWRP.

Since the laos build system asserts on ro.product.device and
ro.build.product (which is on TWRP always "OnePlus3"), it's not possible
to ensure this rom is only installable on 3T with TWRP. This is no
problem with unified builds, because ro.product.device is compared
against both device models. This always includes oneplus3 on unified
builds. This works by accident (OnePlus3, oneplus3t and Oneplus3T can
never be true).

For roms not comparing to oneplus3 this unnoticed error becames serious:
in deed it is not possible at all, to flash a rom with TWRP that depends
on ro.product.device beeing set to "oneplus3t" or anything else.

To maintain compatibility with LineageOS' erroneous use of
ro.build.product and allowing TWRP to flash OnePlus3T-specific roms,
while still ensuring, that no "OnePlus3" will be flashed with a
OnePlus3T-specific rom, these changes are necessary:

* releasetools: add a assert on ro.display.series, which is
"OnePlus3" for op3 and "OnePlus3T".
* BoardConfig.mk: readd OnePlus3 and oneplus3 back to
TARGET_OTA_ASSERT_DEVICE (it would be sufficient to have unset
this alltogether for unified builds: if TARGET_OTA_ASSERT_DEVICE is
not given at all, the device name [for unified builds] is allready
oneplus3 - to maintain compatibility to LineageOS and custom and
older builds of TWRP).
* init: to be as compatible and transparent as possible, the property
this rom's zip asserts on, is also set on boot. For completeness,
documentation and the possibility to do a OnePlus3 optimized build,
ro.disply.series is also set for OnePlus3.

Source code clean up:

* move releasetools.py to releasetools/ subdir: storing configs,
source code or other files then makefiles, dependencies and basic
setup files is condidered bad (coding) style.
* cleanup and simplify related make variables.

Since all failed asserts appear as error 7, it's necessary to add error
messages:

* If assert on ro.display.series fails, user will be informed that
the device needs to be
"grep display-series board-info.txt|cut -d '=' -f2".
* If the assertation on the time_stamp of NON-HLOS.bin fails, the user
will be informed that the firmware is incompatible.

init: set default network mode for Asian and European devices to 22. — nvertigo

overlay: WiFi turned on by default — ShevT

ROM: lineage-14.1-20170729-UNOFFICIAL-nvertigo-oneplus3t.zip

MD5: lineage-14.1-20170729-UNOFFICIAL-nvertigo-oneplus3t.zip.md5sum

Happy Flashing!