[ROM][12.1][Official]crDroid Android[v8.8]

Search This thread
BE3pE0l.png

*** Disclaimer ***​

I am not responsible for any damage you cause to your device.
You have been warned.


crDroid is built on top of LineageOS, and is designed to increase performance and reliability over stock Android for your device, while also attempting to bring you many of the best features in existence today.

Features:​

General:​

https://github.com/crdroidandroid/crdroid_features/blob/12.1/README.mkdn

Device-specific:​

  • OnePlus Camera & Gallery fully working (using APKS extracted directly from OOS 11.1.2.2); including 60fps in 1080p & 4K, watermark, depth effect, smart content detection, et al.
  • DeviceExtras for OnePlus-feature-specific customizations including alert slider modes, DC dimming, High Brightness Mode including customizable Auto-HBM threshold, customizable rendered FPS overlay, digital earpiece/mic gain controls, built-in UI jitter test, USB 2.0 force-fast charge mode toggle (requests 900mA from compatible motherboards, turn off when not using because it conflicts with DASH charging), and 3-category vibration strength control (thanks to AnierinBliss for all his work on this implementation).
  • OnePlus-style color modes available through LiveDisplay (6 & 6T have slightly different implementations and you may not notice a difference, but think of "Natural" and "Wide Gamut" like uncalibrated versions of "sRGB" and "DCI-P3").
  • Ongoing kernel tuning (trying to get the best of both worlds tuning existing QTI perfd & scheduler & lmk, rather than cutting over to Google libperfmgr/powerhints/userspace lmk, definite improvements over vanilla LOS, mostly importing/adapting work by EdwinMoq).

A quick glossary and primer on flashing & slots for A/B devices (like ours):​

  • "Clean flash": Removing device protection & clearing user settings before installing a bootable system install zip by formatting data.
  • "Dirty flash": Flashing a ROM zip (usually upgrading to new version, sometimes just re-flashing the existing one) without wiping data or anything first.
  • "Wipe data": This used to be synonymous with "factory reset" in TWRP, without formatting the data partition and losing the contents of internal storage. Now, with TWRP being deprecated and using built-in LineageOS-based recovery, "wipe data" and "factory reset" mean the same thing as "format data" (which means, everything in internal storage gets erased).
  • "Format data": Formats the data partition itself, resets all file-based encryption keys, loses all contents of internal storage, and in fact deletes all "user 0" directories (this has some implications for internal storage before & after first boot).
  • "User 0" directories are a series of directories that store userdata for the primary user, "Owner", and get created in various places throughout the filesystem on first system boot if they don't exist already. Anything you copy to "internal storage" while booted in recovery after "formatting data" will actually be copied to /data/media/ instead of /data/media/0/, and will become invisible to regular file browsing after first boot once the system has created /data/media/0, since the system will prefer to use that path for internal storage from then on (so you'll need a root file browser to delete things from /data/media, or just ADB sideload things instead of copying after formatting but before booting).
  • "OTA package": Originally an abbreviation for "over the air", referring to how a software update could be delivered (as opposed to having to take your phone to a carrier's store for a firmware update via serial/USB connection). The common usage in Android circles is any installation zip file that actually includes a bootable system. Is always installed to the currently "inactive slot", and will trigger a slot switch upon the next reboot.
  • Some partitions are duplicated (system, vendor, boot, and probably a couple others, but not data) and have a "slot A" & "slot B" copy.
  • "Slot A" and "slot B" are absolute designations, but most installer zip scripts use the relative designations: "active" and "inactive". Whichever slot you're booted from currently is "active", and the other one is "inactive".
  • Installing a zip file that's flagged as being an OTA package will 1) install the contents to the "inactive" slot, and then 2) flag the bootloader to switch which slot is considered "active" (and booted from) and "inactive" upon next reboot.
  • The OxygenOS full OTA zip files and all custom ROM installer zip files are considered "OTA packages" and will trigger a slot switch on next boot after installation.
  • You can install multiple OTA zip packages one after the other without rebooting in both the stock recovery and TWRP; they will all get installed into the correct partitions in the "inactive" slot, one on top of the other, and then it will swap active & inactive upon reboot.
  • We don't use what are called "delta" updates, which can patch existing partitions by block or by file; we use full filesystem images. So for us, OTA zip packages are really just a bunch of partition filesystem image files all wrapped up into a "payload.bin" with some extra instructions & metadata/checksums, so when you flash a ROM, it overwrites entire partitions at a time instead of individual files or filesystem blocks within that partition. So if you've changed something in a partition like system that gets written as part of flashing an OTA zip, all your changes are gone. The only thing in the system partition afterward will be what was in the system.img that was included in the ROM zip payload.
  • The partitions that crDroid, LineageOS, and most custom ROMs for OnePlus 6 & 6T install to when flashing are boot (contains recovery & kernel), dtbo, system, vbmeta, and now vendor as of Android 12. If you are planning on going back to an Android 11 ROM that does not build the vendor partition from source (so everything except SyberiaOS, essentially), you'll need to flash the OOS stock vendor partition to both slots from fastboot before installing the OTA zip.
  • "Prebuilt vendor" vs. "source-built" vendor partitions: when first trying to get a custom ROM working on a new device now that we have separate system & vendor partitions & Google's "Project Treble" is a thing, you'll often just leave the contents of the vendor partition alone, because that's where all the proprietary or device-specific stuff lives (manufacturer specific hardware drivers & interfaces, any DRM libraries, custom frameworks & selinux policies for talking to them), and you make a compatibility map of what framework versions you're compiling against in system and what vendor version they're compatible with or supersede or you overlay updated things that should replace stuff in the vendor partition and keep it in system_ext instead. But you're also limited in that if there are some things in vendor, you CAN'T work around it from the ROM side (like, OnePlus Camera working correctly). So often, once the basics are functioning, the goal is to move to building the contents of the vendor partition from source, because you then have the freedom to fix problems with sepolicy, library/framework mismatches, etc. and make things work with the custom ROM instead of only working with the OEM's flavor of Android, and you can still copy individual pre-compiled files from the stock vendor filesystem image if needed (like if there's no open-source equivalent for some driver). We finally got a source-built vendor bringup for OnePlus SDM845 (enchilada & fajita) as part of the Android 12 (lineage-19.1) bringup, so some things work better, and some things work worse, but at least it's possible to fix things and keep moving forward to newer Android versions. However, since we're still dependent upon at least SOME binary blobs copied over from OxygenOS 11.1.2.2, the vendor patch level will remain at the release date for the last release of OOS 11, because we can't know for sure that some component isn't vulnerable, no matter how new all of the source-built components are.
  • "Updating firmware" simply means we're flashing updated contents from the manufacturer into all the OTHER partitions besides the ones that the ROM OTA zip touches. There are another dozen or more of those, besides system & boot, that the full OxygenOS OTA zip would normally write to when you install it. The contents of the system & vendor partitions in custom ROMs for our device are generally built against a particular version of OxygenOS; in this case OOS 11.1.2.2 was the final release by OnePlus before they announced the end of support & updates for the OnePlus 6 series. Some people are still on older firmware that is now dramatically different than what the current custom ROM was intended to deal with (that is, all the stuff from OxygenOS is still based on Android 10, while the ROM is expecting VNDK compatibility with Android 11), and while I tend to agree that OxygenOS 10 was better than 11, that doesn't matter when you're talking about installing the custom ROM over it. So please; update to OOS 11.1.2.2 firmware (see instructions below).

Notes on stock recovery & TWRP:​

  • TWRP is deprecated & unsupported, for purposes of bug reporting & getting help with crDroid. I liked it personally, and I agree with all the reasons for wanting to try and keep using it; but the source is a hot mess, and the official releases for enchilada & fajita don't have good compatibility with Android 12 (they can't decrypt file-based encryption for userdata).
  • Meanwhile, the stock crDroid recovery (based on LineageOS) intentionally cannot decrypt userdata, and doesn't correctly process addon.d OTA survival scripts; so after using it to flash any OTA zips, you'll need to reboot to recovery and manually flash things like Magisk or GApps installers. But for all those shortcomings, it has working fastbootd (aka "Userspace fastboot", which is what happens when you go to "Advanced", then choose "Enter fastboot") that lets you flash one image to both slots at once with a single command, and unlocks critical partitions... while the OnePlus OEM bootloader (where it says "Fastboot Mode" in a square, then goes to the big green "START" text over white & dark red terminal font type text) can't be used to flash every partition to update firmware. Personally, I still think of it as wannabe-class and not a "real" custom recovery until the Lineage team 1) implements userdata decryption so you can manage files in /data and install updates from internal storage, and 2) allows for a factory reset the way we've always all understood it ("wipe data") WITHOUT nuking the contents of internal storage for no good reason ("formatting data"). But they're not going to, and since crDroid is LineageOS-based; it's what we've got, and fastbootd is the best way to update firmware.
  • The takeaway: If you want to try different custom recoveries (new builds of TWRP, OrangeFox, PBRP, whatever), feel free; and let us know how it works! But you're on you're own doing that; it's an unsupported configuration.
  • For purposes of doing updates, plan on doing your initial installation from bootloader & recovery then applying subsequent system OTA updates using the built-in Updater tool (Settings > System > Updater), both with new OTA releases and when choosing a file from "Local Installation". It executes OTA survival scripts correctly from /system/addon.d/ as well. I've personally tested and it correctly preserved Magisk canary for several versions, and MindTheGapps & NikGapps on my tester fajita and MinMicroG "system" install package on my daily driver enchilada.

Flashing Instructions:​

Pre-installation:​

  • Make sure your bootloader is unlocked (and don't plan on relocking it ffs).
  • Make sure you have a reasonably-current, working installation of android platform tools (adb & fastboot command line binaries & necessary drivers) on your computer, USB drivers, and a known-good USB cable (see links in post #2).
  • Make sure you've downloaded the most recent full OxygenOS OTA installer zip (11.1.2.2), crDroid zip, matching crDroid boot.img, and whatever Magisk/GApps/microG installation packages you want to use to your computer (see links in post #2).
  • Make sure you've backed up whatever data you want to keep to somewhere that's not on your phone; for a new install, we're going to format the data partition and you're going to lose everything from internal storage.
  • If you don't KNOW you already have OOS 11.1.2.2 flashed to BOTH slots, follow the "Updating Firmware" instructions below.

Updating Firmware:​

  • Reboot phone to bootloader (no USB cable connected).
  • If you're not already using the stock crDroid recovery, you'll need to 'fastboot flash boot path/to/boot.img' on the computer, substituting in the path & filename for the current crDroid boot.img that you downloaded as part of the prerequisites.
  • Reboot to bootloader again (actually loads new bootloader that you just flashed).
  • Use Vol +/- buttons to select "Recovery mode" and press Pwr button to boot stock recovery.
  • Tap "Advanced", then tap "Enter fastboot" (the already-selected first option).
  • Follow the instructions for extracting the partition images from the official OxygenOS Updater full OTA zip you already downloaded using the "payload-dumper-go" utility, and flashing them one at a time, from https://wiki.lineageos.org/devices/enchilada/fw_update or https://wiki.lineageos.org/devices/fajita/fw_update, except for the very last command ('fastboot reboot').
  • If you're only updating firmware and were already on crDroid, you can just 'fastboot reboot' which will go back to booting the system normally. If this is part of coming to crDroid 8.x from another ROM, continue with the instructions below.

First time installation:​

(when coming from any other ROM or crDroid 7.x or earlier)
  • *Back up anything you want to keep from three phone's internal storage to your computer/cloud storage, because we're going to format the userdata partition in this process.*
  • Download boot.img & rom zip to computer.
  • Reboot phone to bootloader.
  • Flash boot image to both slots ('fastboot flash boot_a boot.img' then 'fastboot flash boot_b boot.img').
  • Reboot phone to bootloader.
  • Use vol +/- keys to select recovery mode & press power button to enter recovery.
  • On phone, choose "Factory reset / Wipe data", and confirm (note: this will erase everything from the phone's internal storage; make sure that you have backed up anything you want to keep first!).
  • On phone, choose "Apply update" > "ADB sideload" & then from computer, 'adb sideload path/to/rom.zip' (substituting the actual path to the actual filename) to sideload the installation zip; the orange recovery header graphic will disappear until the process has completed ("error" messages like "no error", or finishing at 47% on the computer are normal).
  • On phone, choose "Advanced" > "Reboot recovery" to reboot into recovery on the newly-flashed slot.
  • Use adb sideload to flash any magisk or GApps or microG installer zips (some installers might require you to choose "Advanced" > "Mount/unmount system" first).
  • Reboot into system.
  • ???
  • Profit!

Update installation:​

  • Use the built-in Updater ("Settings > System > Updater") to apply OTA updates as they become available, or to manually flash a ROM zip by going to the three-dot menu in the upper right and choosing "Local update". Seriously, that's it; it processes addon.d survival scripts correctly, including Magisk, MindTheGapps, NikGapps, MinMicroG, and presumably others.
If you must flash from recovery, then be aware that the stock crDroid recovery does NOT process addon.d OTA survival scripts correctly on our A/B system-as-root device, so you'll need to do the following:
  • Reboot phone to recovery.
  • Choose "Apply update > Apply from ADB" on the phone, and 'adb sideload path/to/installation.zip' from a terminal on the computer.
  • After installation has completed and the menus have reappeared on the phone, go back, then choose "Advanced > Reboot to recovery" on the phone.
  • Choose "Apply update > Apply from ADB" on the phone, and 'adb sideload path/to/installation.zip' for each addon like Magisk or GApps installation zip you need in order to match what was initially installed on the phone.
  • Reboot system.

Reporting bugs:​

I'm the full-time parent-in-charge at home of three young children & primary housekeeper while my wife works full-time. I have a small business on the side I'm trying to keep afloat.
This is what I do on a volunteer basis in my spare-time's spare time. So please, don't waste what little time I have.

  • Logs/screenshots/recordings or it didn't happen. Either the built-in Matlog app, or Syslog if you're rooted (free, open source, available on Play store and F-droid) are your friends here. Tombstones, dmesg if you're rooted, pstore/ramoops from recovery after a crashdump are worth their weight in gold if you know how to get those.
  • If you're not running a supported configuration, don't expect much help (see below).
  • I won't always be able to fix your problem, but if you get me usable logs, I'll at least look and do my best to get help from the ROM dev team if I can't figure it out.
  • I don't sign into XDA much, so if I haven't replied to you in a while, check out the Telegram group. Lots of helpful folks there.
  • Please keep your questions in this thread instead of PMing me with them directly, so that the entire class can benefit from the discussion and you can find out if it's just you or if this is a widespread issue.

It's your device to use the way you want of course, but don't expect support for your bug reports if you:​

  • didn't update firmware in both slots.
  • didn't do a clean flash.
  • installed with TWRP/any other custom recovery (or, worse yet, installed that custom recovery after).
  • aren't using the built-in kernel.
  • are using extensive modifications & Magisk modules like Xposed/Riru, Dolby Atmos, Viper4A, etc.
  • immediately start flashing "finalize.zip" or migrate restore zips instead of following the actual instructions.
  • are running decrypted (ugh, just don't).
  • re-locked your bootloader for some reason... you're on a custom ROM; don't do that.
  • followed some other installation method different than the steps above.
Please see post #2 for current boot.img files, release notes, & known issues.

Sources:​

ROM:​

https://github.com/crdroidandroid

Device trees:​

https://github.com/crdroidandroid/android_device_oneplus_enchilada
https://github.com/crdroidandroid/android_device_oneplus_fajita
https://github.com/crdroidandroid/android_device_oneplus_sdm845-common
https://github.com/crdroidandroid/android_hardware_oneplus/tree/12.1-op6

Kernel:​

https://github.com/crdroidandroid/android_kernel_oneplus_sdm845

Vendor-specific:​

https://gitlab.com/crdroidandroid/proprietary_vendor_oneplus_op6
https://gitlab.com/crdroidandroid/android_vendor_oneplus_apps

Download:​

ROM:​

https://crdroid.net/enchilada/8
https://crdroid.net/fajita/8

Changelog:​

https://crdroid.net/enchilada/8#changelog
https://crdroid.net/fajita/8#changelog

Links:​

Visit the official website at crDroid.net
crDroid OnePlus 6/6T Telegram Group
crDroid Community Telegram Group
crDroid Updates Telegram Channel
Donate to help our team pay server costs (PayPal or Patreon)
Donate to support me in maintaining this device (PayPal or Patreon)
 
Last edited:

Notes:

  • Yes it supports package signature spoofing permission for microG compatibility out of the box (but will work without ANY GApps/microG implementation installed as well).
  • Requires OOS 11.1.2.2 firmware (last official release). You should consider using an Android 10 ROM if you want to continue using Android 10 firmware.
  • Tested against latest Magisk canary, works well.
  • No there won't be official builds with inline GApps; please don't ask. The dev team's policy is vanilla-only whenever possible (and it's very possible with our devices).

Google Apps:​

Maintainer doesn't use Google Apps personally as daily driver, but here are some notes gathered from peoples' testing:
  • In general, try to go with the lightest weight package you can and don't replace the stock dialer/messaging apps (just download them from Play Store and set defaults).

  • Since we are LineageOS-based, here are the Lineage team's recommendations:
    https://wiki.lineageos.org/gapps.html

  • MindTheGapps are recommended and considered the default supported configuration for either Android 11 or 12 (per the LineageOS wiki, linked above). Assistant works great out of the box.
    Note on Google Keyboard: If installed as a system app, GBoard will actually do on-device speech recognition when it doesn't have a network connection, so you might want to try adding the Nik Addon for Gboard on top of MTG, just to get on-device speech recognition as an input method (someone please test this out & report back?), but not required for regular usage and GBoard works perfectly well installed from the Play Store as a user app after first boot as well.
    MindTheGapps survives built-in System Updater OTA updates, works fine after doing manual update with built-in recovery, and passes SafetyNet.
    http://downloads.codefi.re/jdcteam/javelinanddart/gapps

  • NikGapps also seems to work in Android 12.1, although it has some issues with clobbering overlays leading to system apps triggering the privacy indicators that shouldn't be doing that. Recommend using Core plus addons, rather than going heavier from the beginning (we don't have much space left in the system partition).
    You'll need Googlesearch (the actual "Google" app) and Velvet (Assistant pacakges), plus GBoard (gets offline speech recognition if installed to system) and either SetupWizard or PixelSetupWizard for the best voice-recognition & assistant experience.
    Not the recommended GApps package, but give it a shot if you like the customization options. Survives built-in System Updater OTA updates, might have issues with re-flashing during manual updates from built-in recovery (needs testing by some brave soul), passes SafetyNet afaik.
    https://nikgapps.com/downloads#downloads

  • Flame Gapps also seems to work well in Android 11 (haven't heard reports about Android 12.1 yet), although the "basic" package is a little heavier than Nik Core, at least it doesn't start replacing stock dialer & messages. Also survives OTA & passes SafetyNet, not sure about manual updates with built-in recovery.
    https://flamegapps.github.io/download.html

  • OpenGApps are not recommended, for reasons outlined in the LineageOS wiki link above.
Please report what worked for you, whether or not it survives updates when using the System Updater, whether or not it survives manual "dirty" update flashing via built-in recovery, and whether it passed SafetyNet, so I can keep this list updated.

crDroid 8.8 - August 2022 ASB release notes/changelog:

Changelog since 8.7
I know it took a while. Everything blew up this summer.
  • Merged August 2022 ASB from upstream.
  • Moved OnePlusCamera & OnePlusGallery out of system partition into vendor/priv-apps/ to save space in system (should allow for bigger Google Apps packages if you insist on using something other than MindTheGapps) -- Should work fairly seamlessly coming from 8.7 official, but see installation notes below if you have trouble with OPCam or OPGallery after updating.
  • Enabled support for exFAT-formatted USB OTG drives (depends on kernel support, in case you flash a custom kernel). Technically it should allow ANY vold-supported filesystems to work, with functional kernel support, but I've only tested exFAT (works), and NTFS (doesn't work).
  • New QuickSettings tile customization options from your friendly neighborhood crDroid dev team!
  • Enchilada: Something about fingerprint blobs from upstream in Lineage. It'll probably ask you to re-enroll fingerprints.
  • Enchilada: At some point I guess battery estimate got fixed, and I didn't notice because some overlay in MinMicroG seems to override it back to not working. Sucks to be me.
  • Adjust AOD a little bit, should hopefully wake up more reliably, AND be a little brighter by default (so you can, y'know, read it).
  • Fajita: UDFPS should suck a lot less. This was probably my fault for a couple releases there; sorry.
  • Dropped SmartPixels because it's ugly af and buggy; use framework dimming ("Extra Dim") if you want the screen so dim that you can't read anything.

8.8 Installation notes:​

  • I've had some people end up having privileged permissions not getting copied when using the built-in updater, which results in a bootloop at boot animation. I can't fix it for you, but if this happens to you, DON'T PANIC. You should be able to get an "adb logcat" during the bootloop on your computer with USB cable connected, and search the output for "fatal" to figure out which package is having the fatal error about missing privileged permissions. Then you can get a root shell in built-in recovery and mount system as read-write, or fastboot boot SIDDK's latest TWRP 3.6.2_12-2 or newer TWRP boot img files if you'd rather do it that way, and manually remove the offending Google app package that's missing its permissions. Check <mountpoint>/system/addon.d/ to find out if there's a rogue OTA survival script copying things over that doesn't belong there (this might have been a bug from earlier versions of Nik Gapps). You may find that just removing everything in system/addon.d/ and then reboot to recovery & manually re-flash the MindTheGapps & Magisk installers (assuming that's what you're using) before rebooting back to system and running the update will help make sure you only have what you should have in there.
  • If you experience issues with OnePlusCamera & OnePlusGallery after updating, first get App Info and clear storage & cache for both. You might have luck with "update" installing the same apk version in-place (it will ask if you want to update the app, even though it's the same version). I used OP Camera v3.14.40, which is available from here: https://www.apkmirror.com/apk/onepl.../oneplus-camera-3-14-40-android-apk-download/ and OP Gallery v4.0.297, available from here: https://www.apkmirror.com/apk/onepl...eplus-gallery-4-0-297-2-android-apk-download/. Reports are that it usually works just fine updating from official 8.7, but here are some troubleshooting steps for just-in-case.

Known issues:

  • For single-press "Screen-off UDFPS" to work on fajita, you need something else enabled that keeps the screen digitizer awake (like turning on DT2W or set up a screen-off gesture).
  • Basically everything that's still funky in upstream LineageOS:
    • No audio passed to remote display when casting via wifi display/miracast.
    • There's ugly blank space at the top of the screen after rebooting before first unlock. After first unlock it's fine.
    • Up-arrow screen-off gesture doesn't work (something else is eating that keycode); all the rest work with the caveat that left/right swipe gestures don't work unless BOTH directions have an action assigned, and then they both work.
    • The NFC stack will crash if something tries to *read* data from the phone. So NFC payments via Google Wallet/Pay/whatever-it-is-this-week should work, but Android Beam/Nearby Sharing will fail and might require a reboot to enable NFC again.
  • Maintainer is busy af in real life and takes forever to get releases out.

Helpful links:

 

Attachments

  • crDroidAndroid-12.1-20220915-enchilada-v8.8_boot.img
    64 MB · Views: 9
  • crDroidAndroid-12.1-20220915-fajita-v8.8_boot.img
    64 MB · Views: 10
Last edited:

LOGS OR IT DIDN'T HAPPEN​

i appreciate bug reports, but I also need details. If an app is crashing ("FCing", meaning "force closing") then at a bare minimum, copy the crash log URL and share that with your report.
That probably won't be enough, though, which is why there are two main logs that I'll ask for:

1. logcat​

You can either use the built-in MatLog tool to acquire this, or get it via USB debugging and adb on the computer (which was in the prerequisites section of the XDA first post, so you installed platform-tools and have adb & fastboot on your PATH, riiiight? 😜)

Using MatLog
  • MatLog is shipped built-in, and it works great. It's built for an older API though, so you'll need to manually grant it permission to access all files (it doesn't know enough to ask since it's a system app and assumes itself to be privileged). If you don't, then you can only use the "Sharing" interface to save logs, rather than saving them to internal storage.
  • To use, open the MatLog app, and go into settings and tick the box for "omit sensitive info" so that you don't end up sharing your IMEI or email addresses with the world. Probably still best if you PM me the logs instead of share to the group.
  • Ideally if it's a reproducible problem, reboot, open MatLog, do the thing that causes the buggy behavior, switch back to MatLog, tap on the menu and choose "Save Zip", then send me the resulting file (they're saved to /sdcard/matlog/saved_logs/). Otherwise, try to open it as soon after the issue as possible and Save Zip.
Using ADB (Android debug bridge)
  • Since we're currently building as "userdebug", you can always grab a logcat even without being rooted. I'm assuming you've got adb and fastboot installed & can run them from a terminal.
  • Enable Developer Options if you haven't already by going to "Settings" > "About Phone" > scroll down to the bottom and tap on the "Build number" field 7 times to enable, then back up to System and choose the new "Developer options" menu, and toggle on "Enable USB debugging".
  • Connect the phone to computer via USB, then on the computer open a terminal type adb devices to start the server & verify you can see the phone. At this point you might get a prompt on the phone asking if you want to trust the computer with some ID for debugging; tell it yes (probably always yes, in case you need to do troubleshooting later due to a boot loop). You should see your phone's serial number listed under the output of adb devices in the terminal window. If not, you probably need to install OnePlus USB drivers.
  • Run adb logcat from the terminal and get ready for a wall of text. Ctrl-C to stop the firehose after about 10 seconds. Save the output to a file. Note: this is the stupid way assuming you just opened a command window or built-in PowerHhell in Windows. Any linux shell or current version of PowerShell should instead be able to just run adb logcat > logcat.txt to dump the output directly to a text file in the current working directory without the wall of text; just give it about 10-15 seconds and Ctrl-C to stop the capture.
  • That's it! PM me the file, with any other details about what's happening and your setup (device, how you flashed, GApps, and so on).

2. dmesg​

Requires root, probably USB debugging, platform-tools added to your PATH, and knowledge of what the below instructions mean
  • Open a root shell on the phone (via local terminal or adb shell via USB).
  • Run dmesg and save the output to a text file.
  • PM me the dmesg.txt file, along with a logcat capture as well, and a detailed description of what the problem is, what the behavior is you noticed, how to reproduce, details of your setup (which device, what GApps, what Magisk modules, any custom kernels, how you installed, and so on).

Other Notes​

"Supported" status - Updating from crDroid 7.x:​

To be considered a "supported configuration", I need for folks to do a clean installation, rather than trying to migrate from crDroid 7.x (Android 11, prebuilt vendor partition) to 8.x (Android 12.1, source-built vendor partition). So do your backups accordingly, because internal storage on the phone is gonna get wiped.

If you're feeling super-adventurous, you might be able to update to the latest release of 7.x (I'm finally getting around to making official 7.19 builds now), then reboot to bootloader, flash the boot.img to current slot, reboot bootloader, start recovery, flash the 8.x ROM zip from recovery, reboot recovery AGAIN, flash an Android 12.1-compatible version of the same Google apps or microG package you were using, plus Magisk if you're using that, and boot into system... but... I have no idea how well that will work, or not.

I can't afford to consider that an officially-supported configuration, because I have no idea what will be broken or not; but I'm interested to know if it works for you.

*UPDATE* -- Apparently it works, at least if you don't use GApps/microG at all. I haven't had someone come to me with a success story using Google Apps yet, and you're probably still better off with a fresh start, but in a pinch it seems to at least be possible. Thanks to @tomasz-c for their testing!

Connectivity issues:​

If you are having problems with mobile data under Android 12, try some of the following (and please let us know if one/all actually fixed things for you):
  • Go into Settings > Network & internet, scroll down to "Adaptive Connectivity" and turn it off
  • Go into Settings > Network & internet > Calls & SMS, and make sure your primary SIM is actually selected for calls, messages, and mobile data, then back up one menu level, go into SIMs, select your SIM if needed, and make sure "Mobile data" is toggled on
  • Go into Settings > Network & internet > SIMs, select your SIM, and change the radio mode to one of the ones that *doesn't* start with "NR", like "LTE/TDSCDMA/CDMA/EvDO/GSM/WCDMA" (or the one without the CDMA/EvDO stuff if you know you're not on a CDMA carrier)
  • Go into Settings > Network & internet > SIMS, select your SIM, go into Access Point Names, and make sure you've got the correct APN selected
  • Go into Phone (whatever you have for the default dialer), keypad, type in *#*#4636#*#* to open the "Testing" activity, choose "Phone information", then in the three-dot menu in the upper-right, choose "Select Radio Band" and choose the correct region instead of leaving it on "Automatic"
 
Last edited:
Nope, I just PR'd last night to go official and it was accepted. :)
crDroid 8.x has stricter requirements for device maintainers with Android 12 releases, so until now I've only been able to classify the 8.x builds I've been working on for the last several months as betas, and honestly I haven't had the time until now to set up all of the XDA pages, so they've just been linked in the Telegram chat group.
 
  • Like
Reactions: YousifG7

tomasz-c

Member
Sep 25, 2020
17
3
If you're feeling super-adventurous, you *might* be able to update to the latest release of 7.x (I'm finally getting around to making official 7.19 builds now), then reboot to bootloader, flash the boot.img to current slot, reboot bootloader, start recovery, flash the 8.x ROM zip from recovery, reboot recovery AGAIN, flash an Android 12.1-compatible version of the same Google apps or microG package you were using, plus Magisk if you're using that, and boot into system... but... I have no idea how well that will work, or not.

I can't afford to consider that an officially-supported configuration, because I have no idea what will be broken or not; but I'm interested to know if it works for you.

Thank you for your work!

I just updated on my OnePlus 6 crDroid from version 7.19 to 8.6. For a quick check what I checked is working fine, all data is preserved.

Thanks!
 
  • Wow
Reactions: Terminator.J
Thank you for your work!

I just updated on my OnePlus 6 crDroid from version 7.19 to 8.6. For a quick check what I checked is working fine, all data is preserved.

Thanks!
Oh holy crap, it worked?! That's... kind of amazing. I didn't expect it to work, ngl. Thanks for the report, and enjoy!
___

If you don't mind me asking; what GApps (if any) did you have before & which package did you flash as part of the update, what recovery or with built-in updater in Settings > System > Updater, etc etc.?
 
Last edited:
  • Like
Reactions: YousifG7

tomasz-c

Member
Sep 25, 2020
17
3
Oh holy crap, it worked?! That's... kind of amazing. I didn't expect it to work, ngl. Thanks for the report, and enjoy!
Yes, it worked :) And could you explain why it surprised you? Looks like it was more risky than I thought :) but I made copies beforehand, of course.
All the apps I checked work without any problem. Contacts, SMS, call history, photos and other data on storage and data of other apps are preserved.
I didn't remove the encryption before the update and my pin (sign) works fine.
In the previous post I forgot to add an important piece of information: I don't use GApps so I didn't test it.

At first I uploaded boot.img to both slots (because I forgot that in the description for the update it said to upload to one) but I guess it doesn't matter. I uploaded crDroidAndroid-12.1-20220709-enchilada-v8.6.zip to slot B, rebooted it booted after a long while (probably updating something) Android 12.1, when I saw that it worked I rebooted to recovery and uploaded it to slot A as well.
 
  • Like
Reactions: Terminator.J

tomasz-c

Member
Sep 25, 2020
17
3
If you don't mind me asking; what GApps (if any) did you have before & which package did you flash as part of the update, what recovery or with built-in updater in Settings > System > Updater, etc etc.?
I only now saw the questions in the second part of your post.
Basically, I did it as you stated in the instructions: "First time installation:" only without the "Factory reset / Wipe data" step and without installing GApps, because I don't use them.

  • To begin with, I updated to the latest version of crDroid 7.x (7.19)
  • Reboot phone to bootloader
  • fastboot flash boot_a crDroidAndroid-12.1-20220709-enchilada-v8.6_boot.img fastboot flash boot_b crDroidAndroid-12.1-20220709-enchilada-v8.6_boot.img
  • Reboot phone to bootloader.
  • Use vol +/- keys to select recovery mode & press power button to enter recovery.
  • On phone, in red menu recovery choose "Apply update" > "Apply from ADB" > "ADB sideload" & then from computer,
    adb sideload crDroidAndroid-12.1-20220709-enchilada-v8.6.zip
  • Reboot to system
When I saw that everything worked I rebooted to recovery and uploaded the zip image to the second slot via ADB Sideload.

I didn't have GApps before and didn't install them afterwards because I don't use them.
 
  • Love
Reactions: Terminator.J

tomasz-c

Member
Sep 25, 2020
17
3
I noticed that on the keyboard AOSP in Polish:
- swiping does not work,
- spell check does not work,
- word prompting does not work,

All these things worked on crDroid 7.19. Now they also work but in other popular languages, such as German or English.
I've tried deleting all AOSP keyboard app data and reconfiguring it from scratch, but that doesn't help.

Could I ask someone who has a clean installation to check this? Because without confirming it, it's unlikely to report the error.
 

runtosafety

Member
Apr 2, 2011
13
3
Thanks for your hard work.
ROM runs pretty well, although there are some minor yet annoying issues (don't know if they have been mentioned in the Telegram group but I'll list them here anyway).
  1. Sometimes the notification shade noticeably lags.
  2. Text selection menu (cut, copy, etc) doesn't appear after selecting, I have to long tap the selection again for it to appear. It happens for both input fields and usual text (e.g. on a web page)
  3. Gboard doesn't always save the buffer content into the clipboard manager. Same applies for the paste suggestions. Maybe I should install it as a system app? (I'm pretty sure I used it as a user app on crDroid 7 though)
  4. Apps seem to unload from RAM more aggressively than on crDroid 7.
  5. I guess they were removed in crDroid 8, but there used to be settings for weather on lock screen and smart charging (auto-disabling charging at XX%).
  6. In quick settings, when I tap mobile data, it takes very long for the animation to switch on/off while Wi-Fi is on (only the animation). Sometimes it will get stuck at on or off until I reopen the notification shade. Also if you quickly reopen the shade, the animation will change instantly without any lag. (All this is true regardless of the Mobile data always active developer setting)
 
Thanks for your hard work.
ROM runs pretty well, although there are some minor yet annoying issues (don't know if they have been mentioned in the Telegram group but I'll list them here anyway).
  1. Sometimes the notification shade noticeably lags.
  2. Text selection menu (cut, copy, etc) doesn't appear after selecting, I have to long tap the selection again for it to appear. It happens for both input fields and usual text (e.g. on a web page)
  3. Gboard doesn't always save the buffer content into the clipboard manager. Same applies for the paste suggestions. Maybe I should install it as a system app? (I'm pretty sure I used it as a user app on crDroid 7 though)
  4. Apps seem to unload from RAM more aggressively than on crDroid 7.
  5. I guess they were removed in crDroid 8, but there used to be settings for weather on lock screen and smart charging (auto-disabling charging at XX%).
  6. In quick settings, when I tap mobile data, it takes very long for the animation to switch on/off while Wi-Fi is on (only the animation). Sometimes it will get stuck at on or off until I reopen the notification shade. Also if you quickly reopen the shade, the animation will change instantly without any lag. (All this is true regardless of the Mobile data always active developer setting)
So, dirty little not-so-secret: I'm not really sure what I'm doing most of the time. There are a lot of things that seem to be regressions in Android 12, and I believe I've set up overlays correctly to configure crDroid-specific features. But... There are plenty of things where I don't know where to begin, and just assume that it's something that one of the actual core ROM dev team for crDroid (I am a device maintainer, not part of the core dev team) will eventually deal with, or it's just an issue with our specific device, or ... Whatever. Occasionally it's a thing that maybe I can dig up bug reports and logs and reproduce and figure out what's up and fix it.
Most of the things you mention are entirely beyond my control.
1. I believe you. Dunno what to do there; this will probably be an upstream ROM thing that needs to get fixed, but possibly relies on an overlay I need to fix. Usually things like this, I try and try to get to the bottom of it and pull my hair out and waste hours & hours and then it's something that was in the frameworks anyway and I don't know enough Java or Kotlin or C/C++ to have possibly been able to fix it, and then someone else fixes it and I could've just waited and it would've been fine in a month or two.
2. Yeah, I've had that too; seems to depend on app. Can you send me a log after it happens?
3. I'm using GBoard as a user app myself, although that's with MinMicroG, and haven't had problems with it. But I believe you. What GApps are you using?
4. Yeah, I noticed that too. There's work to do tuning things, but I'm not sure where to begin. I'm in a little over my head trying to keep the best of both worlds between just running with the Qualcomm QTI perfd kernel driver, and cutting over to using Google's libperfmgr with power hinting, and their corresponding low memory killer drivers (the "EdwinMoq" commits you may have heard mention of). It feels like I'm getting better performance/battery life right now, with trying to just use some of the "clean up and do some tuning without dropping QTI perfd" commits as an approach, but it might be overkill. If I remove all those things, then we basically end up functioning just like vanilla LineageOS on stock kernel for battery life/performance/smoothness. I'm open to suggestions there.
5. Yes, they were removed. Lock screen was reworked a lot in Android 12, as well as background services, and running the OmniJAWS service (which was intended for older Android versions anyway) apparently broke. Smart charging functionality can be brought back by using the Advanced Charging Control (acc) Magisk module. Best results seem to be by installing the last release of AccA (the graphical front-end), and then manually setting it to use acc module v2022.2.22.1 (newer "android 12 compatible" ones actually kinda fail to work), and then check for a charging switch that supports "battery idle mode" (and toggle on "prioritize battery idle mode").
6. Quick Settings and data handling in Android 12 is... man I don't even know. See point #1. It's not just our device though, from what I've seen scroll by in the crDroid maintainer chat.
 
Status update (11 August):
There's a lot of stuff I'd like to work on fine-tuning, because I might not be a pro AOSP dev, but I like having things feel polished.
LineageOS has been working on merging the August ASB, maybe they're done by now; and I know Neobuddy89 has been working on merging that into crDroid sources (it wasn't ready to build/test as of a few days ago, but probably fine now).
We finally hit summer weather here and it's been too hot for me to work in the back room where my build computer (and monitor setup) lives, and my wife took the summer off teaching and I've been busy working... And working on real life household projects, cleaning, repairs, dealing with the aftermath of my cousin-in-law passing away, taking care of the kids since school is out; lots of things.
I want to fine-tune things of course, but I'll have to save that for the August security patch or later.
I'll just throw 7.20 (whatever test version) and 8.7 test 2 out to OTA for now as the official releases, because "real artists ship"... And I can't sync crDroid sources now to keep working on July ASB releases because it would probably end up pulling in August changes anyway.
Definitely seems like they've been good enough to release for weeks, I've been daily driving and haven't run into regressions, and I can't let "it's not perfect yet!" prevent people from getting updates.
 

runtosafety

Member
Apr 2, 2011
13
3
So, dirty little not-so-secret: I'm not really sure what I'm doing most of the time. There are a lot of things that seem to be regressions in Android 12, and I believe I've set up overlays correctly to configure crDroid-specific features. But... There are plenty of things where I don't know where to begin, and just assume that it's something that one of the actual core ROM dev team for crDroid (I am a device maintainer, not part of the core dev team) will eventually deal with, or it's just an issue with our specific device, or ... Whatever. Occasionally it's a thing that maybe I can dig up bug reports and logs and reproduce and figure out what's up and fix it.
Most of the things you mention are entirely beyond my control.
1. I believe you. Dunno what to do there; this will probably be an upstream ROM thing that needs to get fixed, but possibly relies on an overlay I need to fix. Usually things like this, I try and try to get to the bottom of it and pull my hair out and waste hours & hours and then it's something that was in the frameworks anyway and I don't know enough Java or Kotlin or C/C++ to have possibly been able to fix it, and then someone else fixes it and I could've just waited and it would've been fine in a month or two.
2. Yeah, I've had that too; seems to depend on app. Can you send me a log after it happens?
3. I'm using GBoard as a user app myself, although that's with MinMicroG, and haven't had problems with it. But I believe you. What GApps are you using?
4. Yeah, I noticed that too. There's work to do tuning things, but I'm not sure where to begin. I'm in a little over my head trying to keep the best of both worlds between just running with the Qualcomm QTI perfd kernel driver, and cutting over to using Google's libperfmgr with power hinting, and their corresponding low memory killer drivers (the "EdwinMoq" commits you may have heard mention of). It feels like I'm getting better performance/battery life right now, with trying to just use some of the "clean up and do some tuning without dropping QTI perfd" commits as an approach, but it might be overkill. If I remove all those things, then we basically end up functioning just like vanilla LineageOS on stock kernel for battery life/performance/smoothness. I'm open to suggestions there.
5. Yes, they were removed. Lock screen was reworked a lot in Android 12, as well as background services, and running the OmniJAWS service (which was intended for older Android versions anyway) apparently broke. Smart charging functionality can be brought back by using the Advanced Charging Control (acc) Magisk module. Best results seem to be by installing the last release of AccA (the graphical front-end), and then manually setting it to use acc module v2022.2.22.1 (newer "android 12 compatible" ones actually kinda fail to work), and then check for a charging switch that supports "battery idle mode" (and toggle on "prioritize battery idle mode").
6. Quick Settings and data handling in Android 12 is... man I don't even know. See point #1. It's not just our device though, from what I've seen scroll by in the crDroid maintainer chat.
  1. Just updated, I'll see if 8.7 has fixed that.
  2. See the spoiler below for logs.
  3. NikGApps Basic. Yeah, I only noticed it's not a recommended option after installing (although that's what I used on crDroid 7 where I didn't have that issue).
Code:
08-16 22:44:05.021  2387  2387 D BatteryInfoBroadcast: onReceive: android.intent.action.BATTERY_CHANGED isPowerSaveMode: false
08-16 22:44:05.022  2387  2387 D BatteryDefenderNotification: isPlugged: true | isOverheated: false | defenderEnabled: false | isCharged: false
08-16 22:44:07.564  1035  1035 D vendor.qti.vibrator: Vibrator on for timeoutMs: 10
08-16 22:44:07.566  1035  4878 D vendor.qti.vibrator: Starting on on another thread
08-16 22:44:07.576  1035  4878 D vendor.qti.vibrator: Notifying on complete
08-16 22:44:07.577  1035  1035 D vendor.qti.vibrator: QTI Vibrator off
08-16 22:44:07.583 12805 12805 I cr_CompositorSurfaceMgr: Transitioning to surface with format: -1
08-16 22:44:07.592 12805 12805 D androidtc: Initializing SystemTextClassifier, type = System
08-16 22:44:07.593 12805 12805 W androidtc: TextClassifier called on main thread
08-16 22:44:07.595  3597  3597 I AiAiTextClassifier: onCreateTextClassificationSession = TextClassificationSessionId {8321aa96-9441-474e-9836-c6170d716612}
08-16 22:44:07.596  3597  3597 I AiAiTextClassifier: AiaiTextClassifierServiceConnector.onSuggestSelection
08-16 22:44:07.600 12805 12805 I cr_CompositorSurfaceMgr: surfaceCreated format: 0
08-16 22:44:07.667 12805 12805 I cr_CompositorSurfaceMgr: SurfaceState : detach from parent : -3
08-16 22:44:07.668 12805 12805 E cr_CompositorSurfaceMgr: surfaceDestroyed format : -3
08-16 22:44:09.149  1347  4506 D WindowManager: perform drag: [email protected] surface=Surface(name=drag surface)/@0x3a9d179 flags=100 data=ClipData { text/plain {T(8)} }
08-16 22:44:09.149  1347  4506 D WindowManager: registering drag input channel
08-16 22:44:09.171  1347  4506 D WindowManager: broadcasting DRAG_STARTED at (366.0, 1025.0)
08-16 22:44:09.171  1347  1731 W WindowManager: Unexpected ACTION_DOWN in drag layer
08-16 22:44:09.179  1035  1035 D vendor.qti.vibrator: Vibrator on for timeoutMs: 10
08-16 22:44:09.180  1035  4884 D vendor.qti.vibrator: Starting on on another thread
08-16 22:44:09.191  1035  4884 D vendor.qti.vibrator: Notifying on complete
08-16 22:44:09.192  1035  1035 D vendor.qti.vibrator: QTI Vibrator off
08-16 22:44:09.534  1347  1731 D WindowManager: Got UP on move channel; dropping at 366.0,1025.0
08-16 22:44:09.537  1347  1731 D WindowManager: sending DROP to Window{e1f7993 u0 com.vivaldi.browser.snapshot/com.google.android.apps.chrome.Main}
08-16 22:44:09.542 12805 12805 I ViewRootImpl[Main]: Reporting drop result: true
08-16 22:44:09.542  1347  8568 D WindowManager: Drag into new candidate view @ [email protected]
08-16 22:44:09.542  1347  8568 D WindowManager: Drop result=true reported by [email protected]
08-16 22:44:09.542  1347  8568 D WindowManager: unregistering drag input channel
08-16 22:44:09.542  1347  8568 D WindowManager: broadcasting DRAG_ENDED
08-16 22:44:09.542  1347  1731 D WindowManager: Drag ending; tearing down input channel
08-16 22:44:09.545  1347  1731 W InputManager-JNI: Input channel object 'drag (client)' was disposed without first being removed with the input manager!
08-16 22:44:10.880  3014  3086 I PhenotypeProcessReaper: Memory state is: 125
08-16 22:44:11.370  2387  2387 D PowerNotificationWarningsGoogleImpl: onReceive: android.intent.action.BATTERY_CHANGED
08-16 22:44:11.376  2387  2387 D BatteryInfoBroadcast: onReceive: android.intent.action.BATTERY_CHANGED isPowerSaveMode: false
08-16 22:44:11.376  2387  2387 D BatteryDefenderNotification: isPlugged: true | isOverheated: false | defenderEnabled: false | isCharged: false
08-16 22:44:11.768  4405  4485 E QMI_FW  : qmi_cci_get_ref: ref count increased 2
08-16 22:44:11.772  4405  4415 E QMI_FW  : qmi_cci_get_ref: ref count increased 2
08-16 22:44:11.792  3840 10026 I ConnectivityReport: signalStrength of #1 updated to 2
08-16 22:44:12.054  2387  2387 D PowerNotificationWarningsGoogleImpl: onReceive: android.intent.action.BATTERY_CHANGED
08-16 22:44:12.059  2387  2387 D BatteryInfoBroadcast: onReceive: android.intent.action.BATTERY_CHANGED isPowerSaveMode: false
08-16 22:44:12.059  2387  2387 D BatteryDefenderNotification: isPlugged: true | isOverheated: false | defenderEnabled: false | isCharged: false
 
  • Like
Reactions: Terminator.J
Everything blew up this summer in real life.
I finally pushed the 8.7 test 2 that I've been using as a daily driver personally and everyone in Telegram seems to have been more than happy with to OTA as the official July 2022 ASB release, sorry it's like a month late.
The July patch took a long time to merge, and August even longer, but it'll take me a while to release August unless I just skip working on my backlog of bugfix notes entirely.
 
  • Like
Reactions: Jelq
Okay, I took a mental health day to work on Android stuff. :D
First test builds of 8.8 will be going up tonight in the Telegram group if anyone wants to join & try them out!
Had to drop Camera2 (the basic AOSP camera) since that little 5MB makes the difference between MindTheGapps 12.1 arm64 & Magisk both being able to install and updater able to correctly process addon.d scripts when installing the zip, and a bootloop because it couldn't quiiiiite finish copying over the privapp permission XMLs to system/product/. Stupid tiny system partition...
No device-specific bugfixes yet in my trees, just testing with the most recent lineage changes & crDroid 8.8 sources.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 6
    After a week of usage, everything rock solid. I have noticed a daily message offering an update to Android 13, what probably is an issue with upstream crdroid. Other than that, everything running smoothly.

    I am surprised how few people are paying attention to this thread. Thing is, you hardly find this thread in xda when searching for rooms. Even searching in Google for "xda crdroid oneplus 6" will point you to less relevant threads. I usually have to find it through crdroid page, which I guess is not how people should find one of the best ROMS for enchilada out there. Any way to improve the exposure?
    6
    Okay, hi everyone! So I'll probably edit this post later once I've got more time, but quick status update:
    - Still busy AF in real life
    - 8.8 will be out soon, and moves OnePlus Camera & Gallery to vendor partition so there should be room for larger GApps installs (for clean install).
    - I'll make a "OP Camera" troubleshooting post here for what to do if it's behaving funky for you after updating, but short version is to clear app storage & cache for OP Camera & OP Gallery, and possibly download the apks directly and do an "update this app" install using the same version, and then it'll get its head on straight and work properly.
    - I know 8.9 is already out for other devices, I've just been way too busy and want to push 8.8 official. It's been release-worthy for a long time and I've been daily driving it, it just takes time to go through the checklist and especially write proper release notes/make sure everything's still current in the first posts of the thread.
    - I did a test build of crDroid 9.0 (Android 13), and it 1) compiled eventually, 2) booted, and 3) no network access for any apps. That wasa a month ago. It's probably all fixed in upstream sources now, and I'll be shifting attention to that soon. But let's get Android 12 updates that are already ready pushed to official, hey?
    4
    Bro, the only reason i switched to this ROM is because you made one plus camera working. I don't get what you mean that Google camera is better in any way, it was absolutely unstable for me, slow and with worse picture quality, with most important features not working, like 60 fps video recording (bro, that's like the most important feature ever and i don't want to say a word more, i was dreaming of it before that was even a thing) portrait mode, slo-mo (that's seem to be still broken?) I would rather go to stock, if this haven't been solved. So thank you for bringing that and believe me, for me it means a lot, thanks to this i am not thinking about changing the phone again.
    I know 60fps video recording doesn't work correctly in any of the GCam mods I've played with, but if you want just about everything else working better (especially with HDR+ enabled), and both frame rates for slow-mo functioning WITH sound out-of-the-box, try out the old DMGC v4.5 based on GCam 7.3; it works pretty darn well.
    Or even MJL Minilux (7.3-based) with Juan-All XML (no postprocessing) for photography, video be damned.
    4
    Okay, finally pushed 8.8 to official OTA! I've had an insanely busy month, sorry it's so late.
    The big hold-up was that it was too big! Somehow the system partition was basically full when trying to install the 8.8 test builds with the recommended GApps package (MindTheGapps 12.1 arm64), which forced me to get off my butt and learn how to migrate OnePlusCamera & OnePlusGallery to reside in /vendor/priv-apps/ instead of /system/priv-apps/, so now we're not wasting ~300MB of space in the vendor partition, and have ~150MB more free space to play with in the system partition (might help those who insist on using a huge ass GApps package).
    Long story short, most upgrade problems I've seen stem from leftover cruft in the /system/addon.d/ dir.
    CHECK IT BEFORE UPDATING, MAKE SURE YOU DON'T HAVE ANYTHING IN THERE THAT SHOULDN'T BE THERE.
    Read the installation notes in post #2. Come to the Telegram group if you get stuck with a boot loop after using the updater.
    2
    Remove all three prebuilt apks from the ROM zip, and provide a magisk module instead for those who actually use them, since Google Camera is better in almost every way except for 60fps video recording.
    Bro, the only reason i switched to this ROM is because you made one plus camera working. I don't get what you mean that Google camera is better in any way, it was absolutely unstable for me, slow and with worse picture quality, with most important features not working, like 60 fps video recording (bro, that's like the most important feature ever and i don't want to say a word more, i was dreaming of it before that was even a thing) portrait mode, slo-mo (that's seem to be still broken?) I would rather go to stock, if this haven't been solved. So thank you for bringing that and believe me, for me it means a lot, thanks to this i am not thinking about changing the phone again.
  • 19
    BE3pE0l.png

    *** Disclaimer ***​

    I am not responsible for any damage you cause to your device.
    You have been warned.


    crDroid is built on top of LineageOS, and is designed to increase performance and reliability over stock Android for your device, while also attempting to bring you many of the best features in existence today.

    Features:​

    General:​

    https://github.com/crdroidandroid/crdroid_features/blob/12.1/README.mkdn

    Device-specific:​

    • OnePlus Camera & Gallery fully working (using APKS extracted directly from OOS 11.1.2.2); including 60fps in 1080p & 4K, watermark, depth effect, smart content detection, et al.
    • DeviceExtras for OnePlus-feature-specific customizations including alert slider modes, DC dimming, High Brightness Mode including customizable Auto-HBM threshold, customizable rendered FPS overlay, digital earpiece/mic gain controls, built-in UI jitter test, USB 2.0 force-fast charge mode toggle (requests 900mA from compatible motherboards, turn off when not using because it conflicts with DASH charging), and 3-category vibration strength control (thanks to AnierinBliss for all his work on this implementation).
    • OnePlus-style color modes available through LiveDisplay (6 & 6T have slightly different implementations and you may not notice a difference, but think of "Natural" and "Wide Gamut" like uncalibrated versions of "sRGB" and "DCI-P3").
    • Ongoing kernel tuning (trying to get the best of both worlds tuning existing QTI perfd & scheduler & lmk, rather than cutting over to Google libperfmgr/powerhints/userspace lmk, definite improvements over vanilla LOS, mostly importing/adapting work by EdwinMoq).

    A quick glossary and primer on flashing & slots for A/B devices (like ours):​

    • "Clean flash": Removing device protection & clearing user settings before installing a bootable system install zip by formatting data.
    • "Dirty flash": Flashing a ROM zip (usually upgrading to new version, sometimes just re-flashing the existing one) without wiping data or anything first.
    • "Wipe data": This used to be synonymous with "factory reset" in TWRP, without formatting the data partition and losing the contents of internal storage. Now, with TWRP being deprecated and using built-in LineageOS-based recovery, "wipe data" and "factory reset" mean the same thing as "format data" (which means, everything in internal storage gets erased).
    • "Format data": Formats the data partition itself, resets all file-based encryption keys, loses all contents of internal storage, and in fact deletes all "user 0" directories (this has some implications for internal storage before & after first boot).
    • "User 0" directories are a series of directories that store userdata for the primary user, "Owner", and get created in various places throughout the filesystem on first system boot if they don't exist already. Anything you copy to "internal storage" while booted in recovery after "formatting data" will actually be copied to /data/media/ instead of /data/media/0/, and will become invisible to regular file browsing after first boot once the system has created /data/media/0, since the system will prefer to use that path for internal storage from then on (so you'll need a root file browser to delete things from /data/media, or just ADB sideload things instead of copying after formatting but before booting).
    • "OTA package": Originally an abbreviation for "over the air", referring to how a software update could be delivered (as opposed to having to take your phone to a carrier's store for a firmware update via serial/USB connection). The common usage in Android circles is any installation zip file that actually includes a bootable system. Is always installed to the currently "inactive slot", and will trigger a slot switch upon the next reboot.
    • Some partitions are duplicated (system, vendor, boot, and probably a couple others, but not data) and have a "slot A" & "slot B" copy.
    • "Slot A" and "slot B" are absolute designations, but most installer zip scripts use the relative designations: "active" and "inactive". Whichever slot you're booted from currently is "active", and the other one is "inactive".
    • Installing a zip file that's flagged as being an OTA package will 1) install the contents to the "inactive" slot, and then 2) flag the bootloader to switch which slot is considered "active" (and booted from) and "inactive" upon next reboot.
    • The OxygenOS full OTA zip files and all custom ROM installer zip files are considered "OTA packages" and will trigger a slot switch on next boot after installation.
    • You can install multiple OTA zip packages one after the other without rebooting in both the stock recovery and TWRP; they will all get installed into the correct partitions in the "inactive" slot, one on top of the other, and then it will swap active & inactive upon reboot.
    • We don't use what are called "delta" updates, which can patch existing partitions by block or by file; we use full filesystem images. So for us, OTA zip packages are really just a bunch of partition filesystem image files all wrapped up into a "payload.bin" with some extra instructions & metadata/checksums, so when you flash a ROM, it overwrites entire partitions at a time instead of individual files or filesystem blocks within that partition. So if you've changed something in a partition like system that gets written as part of flashing an OTA zip, all your changes are gone. The only thing in the system partition afterward will be what was in the system.img that was included in the ROM zip payload.
    • The partitions that crDroid, LineageOS, and most custom ROMs for OnePlus 6 & 6T install to when flashing are boot (contains recovery & kernel), dtbo, system, vbmeta, and now vendor as of Android 12. If you are planning on going back to an Android 11 ROM that does not build the vendor partition from source (so everything except SyberiaOS, essentially), you'll need to flash the OOS stock vendor partition to both slots from fastboot before installing the OTA zip.
    • "Prebuilt vendor" vs. "source-built" vendor partitions: when first trying to get a custom ROM working on a new device now that we have separate system & vendor partitions & Google's "Project Treble" is a thing, you'll often just leave the contents of the vendor partition alone, because that's where all the proprietary or device-specific stuff lives (manufacturer specific hardware drivers & interfaces, any DRM libraries, custom frameworks & selinux policies for talking to them), and you make a compatibility map of what framework versions you're compiling against in system and what vendor version they're compatible with or supersede or you overlay updated things that should replace stuff in the vendor partition and keep it in system_ext instead. But you're also limited in that if there are some things in vendor, you CAN'T work around it from the ROM side (like, OnePlus Camera working correctly). So often, once the basics are functioning, the goal is to move to building the contents of the vendor partition from source, because you then have the freedom to fix problems with sepolicy, library/framework mismatches, etc. and make things work with the custom ROM instead of only working with the OEM's flavor of Android, and you can still copy individual pre-compiled files from the stock vendor filesystem image if needed (like if there's no open-source equivalent for some driver). We finally got a source-built vendor bringup for OnePlus SDM845 (enchilada & fajita) as part of the Android 12 (lineage-19.1) bringup, so some things work better, and some things work worse, but at least it's possible to fix things and keep moving forward to newer Android versions. However, since we're still dependent upon at least SOME binary blobs copied over from OxygenOS 11.1.2.2, the vendor patch level will remain at the release date for the last release of OOS 11, because we can't know for sure that some component isn't vulnerable, no matter how new all of the source-built components are.
    • "Updating firmware" simply means we're flashing updated contents from the manufacturer into all the OTHER partitions besides the ones that the ROM OTA zip touches. There are another dozen or more of those, besides system & boot, that the full OxygenOS OTA zip would normally write to when you install it. The contents of the system & vendor partitions in custom ROMs for our device are generally built against a particular version of OxygenOS; in this case OOS 11.1.2.2 was the final release by OnePlus before they announced the end of support & updates for the OnePlus 6 series. Some people are still on older firmware that is now dramatically different than what the current custom ROM was intended to deal with (that is, all the stuff from OxygenOS is still based on Android 10, while the ROM is expecting VNDK compatibility with Android 11), and while I tend to agree that OxygenOS 10 was better than 11, that doesn't matter when you're talking about installing the custom ROM over it. So please; update to OOS 11.1.2.2 firmware (see instructions below).

    Notes on stock recovery & TWRP:​

    • TWRP is deprecated & unsupported, for purposes of bug reporting & getting help with crDroid. I liked it personally, and I agree with all the reasons for wanting to try and keep using it; but the source is a hot mess, and the official releases for enchilada & fajita don't have good compatibility with Android 12 (they can't decrypt file-based encryption for userdata).
    • Meanwhile, the stock crDroid recovery (based on LineageOS) intentionally cannot decrypt userdata, and doesn't correctly process addon.d OTA survival scripts; so after using it to flash any OTA zips, you'll need to reboot to recovery and manually flash things like Magisk or GApps installers. But for all those shortcomings, it has working fastbootd (aka "Userspace fastboot", which is what happens when you go to "Advanced", then choose "Enter fastboot") that lets you flash one image to both slots at once with a single command, and unlocks critical partitions... while the OnePlus OEM bootloader (where it says "Fastboot Mode" in a square, then goes to the big green "START" text over white & dark red terminal font type text) can't be used to flash every partition to update firmware. Personally, I still think of it as wannabe-class and not a "real" custom recovery until the Lineage team 1) implements userdata decryption so you can manage files in /data and install updates from internal storage, and 2) allows for a factory reset the way we've always all understood it ("wipe data") WITHOUT nuking the contents of internal storage for no good reason ("formatting data"). But they're not going to, and since crDroid is LineageOS-based; it's what we've got, and fastbootd is the best way to update firmware.
    • The takeaway: If you want to try different custom recoveries (new builds of TWRP, OrangeFox, PBRP, whatever), feel free; and let us know how it works! But you're on you're own doing that; it's an unsupported configuration.
    • For purposes of doing updates, plan on doing your initial installation from bootloader & recovery then applying subsequent system OTA updates using the built-in Updater tool (Settings > System > Updater), both with new OTA releases and when choosing a file from "Local Installation". It executes OTA survival scripts correctly from /system/addon.d/ as well. I've personally tested and it correctly preserved Magisk canary for several versions, and MindTheGapps & NikGapps on my tester fajita and MinMicroG "system" install package on my daily driver enchilada.

    Flashing Instructions:​

    Pre-installation:​

    • Make sure your bootloader is unlocked (and don't plan on relocking it ffs).
    • Make sure you have a reasonably-current, working installation of android platform tools (adb & fastboot command line binaries & necessary drivers) on your computer, USB drivers, and a known-good USB cable (see links in post #2).
    • Make sure you've downloaded the most recent full OxygenOS OTA installer zip (11.1.2.2), crDroid zip, matching crDroid boot.img, and whatever Magisk/GApps/microG installation packages you want to use to your computer (see links in post #2).
    • Make sure you've backed up whatever data you want to keep to somewhere that's not on your phone; for a new install, we're going to format the data partition and you're going to lose everything from internal storage.
    • If you don't KNOW you already have OOS 11.1.2.2 flashed to BOTH slots, follow the "Updating Firmware" instructions below.

    Updating Firmware:​

    • Reboot phone to bootloader (no USB cable connected).
    • If you're not already using the stock crDroid recovery, you'll need to 'fastboot flash boot path/to/boot.img' on the computer, substituting in the path & filename for the current crDroid boot.img that you downloaded as part of the prerequisites.
    • Reboot to bootloader again (actually loads new bootloader that you just flashed).
    • Use Vol +/- buttons to select "Recovery mode" and press Pwr button to boot stock recovery.
    • Tap "Advanced", then tap "Enter fastboot" (the already-selected first option).
    • Follow the instructions for extracting the partition images from the official OxygenOS Updater full OTA zip you already downloaded using the "payload-dumper-go" utility, and flashing them one at a time, from https://wiki.lineageos.org/devices/enchilada/fw_update or https://wiki.lineageos.org/devices/fajita/fw_update, except for the very last command ('fastboot reboot').
    • If you're only updating firmware and were already on crDroid, you can just 'fastboot reboot' which will go back to booting the system normally. If this is part of coming to crDroid 8.x from another ROM, continue with the instructions below.

    First time installation:​

    (when coming from any other ROM or crDroid 7.x or earlier)
    • *Back up anything you want to keep from three phone's internal storage to your computer/cloud storage, because we're going to format the userdata partition in this process.*
    • Download boot.img & rom zip to computer.
    • Reboot phone to bootloader.
    • Flash boot image to both slots ('fastboot flash boot_a boot.img' then 'fastboot flash boot_b boot.img').
    • Reboot phone to bootloader.
    • Use vol +/- keys to select recovery mode & press power button to enter recovery.
    • On phone, choose "Factory reset / Wipe data", and confirm (note: this will erase everything from the phone's internal storage; make sure that you have backed up anything you want to keep first!).
    • On phone, choose "Apply update" > "ADB sideload" & then from computer, 'adb sideload path/to/rom.zip' (substituting the actual path to the actual filename) to sideload the installation zip; the orange recovery header graphic will disappear until the process has completed ("error" messages like "no error", or finishing at 47% on the computer are normal).
    • On phone, choose "Advanced" > "Reboot recovery" to reboot into recovery on the newly-flashed slot.
    • Use adb sideload to flash any magisk or GApps or microG installer zips (some installers might require you to choose "Advanced" > "Mount/unmount system" first).
    • Reboot into system.
    • ???
    • Profit!

    Update installation:​

    • Use the built-in Updater ("Settings > System > Updater") to apply OTA updates as they become available, or to manually flash a ROM zip by going to the three-dot menu in the upper right and choosing "Local update". Seriously, that's it; it processes addon.d survival scripts correctly, including Magisk, MindTheGapps, NikGapps, MinMicroG, and presumably others.
    If you must flash from recovery, then be aware that the stock crDroid recovery does NOT process addon.d OTA survival scripts correctly on our A/B system-as-root device, so you'll need to do the following:
    • Reboot phone to recovery.
    • Choose "Apply update > Apply from ADB" on the phone, and 'adb sideload path/to/installation.zip' from a terminal on the computer.
    • After installation has completed and the menus have reappeared on the phone, go back, then choose "Advanced > Reboot to recovery" on the phone.
    • Choose "Apply update > Apply from ADB" on the phone, and 'adb sideload path/to/installation.zip' for each addon like Magisk or GApps installation zip you need in order to match what was initially installed on the phone.
    • Reboot system.

    Reporting bugs:​

    I'm the full-time parent-in-charge at home of three young children & primary housekeeper while my wife works full-time. I have a small business on the side I'm trying to keep afloat.
    This is what I do on a volunteer basis in my spare-time's spare time. So please, don't waste what little time I have.

    • Logs/screenshots/recordings or it didn't happen. Either the built-in Matlog app, or Syslog if you're rooted (free, open source, available on Play store and F-droid) are your friends here. Tombstones, dmesg if you're rooted, pstore/ramoops from recovery after a crashdump are worth their weight in gold if you know how to get those.
    • If you're not running a supported configuration, don't expect much help (see below).
    • I won't always be able to fix your problem, but if you get me usable logs, I'll at least look and do my best to get help from the ROM dev team if I can't figure it out.
    • I don't sign into XDA much, so if I haven't replied to you in a while, check out the Telegram group. Lots of helpful folks there.
    • Please keep your questions in this thread instead of PMing me with them directly, so that the entire class can benefit from the discussion and you can find out if it's just you or if this is a widespread issue.

    It's your device to use the way you want of course, but don't expect support for your bug reports if you:​

    • didn't update firmware in both slots.
    • didn't do a clean flash.
    • installed with TWRP/any other custom recovery (or, worse yet, installed that custom recovery after).
    • aren't using the built-in kernel.
    • are using extensive modifications & Magisk modules like Xposed/Riru, Dolby Atmos, Viper4A, etc.
    • immediately start flashing "finalize.zip" or migrate restore zips instead of following the actual instructions.
    • are running decrypted (ugh, just don't).
    • re-locked your bootloader for some reason... you're on a custom ROM; don't do that.
    • followed some other installation method different than the steps above.
    Please see post #2 for current boot.img files, release notes, & known issues.

    Sources:​

    ROM:​

    https://github.com/crdroidandroid

    Device trees:​

    https://github.com/crdroidandroid/android_device_oneplus_enchilada
    https://github.com/crdroidandroid/android_device_oneplus_fajita
    https://github.com/crdroidandroid/android_device_oneplus_sdm845-common
    https://github.com/crdroidandroid/android_hardware_oneplus/tree/12.1-op6

    Kernel:​

    https://github.com/crdroidandroid/android_kernel_oneplus_sdm845

    Vendor-specific:​

    https://gitlab.com/crdroidandroid/proprietary_vendor_oneplus_op6
    https://gitlab.com/crdroidandroid/android_vendor_oneplus_apps

    Download:​

    ROM:​

    https://crdroid.net/enchilada/8
    https://crdroid.net/fajita/8

    Changelog:​

    https://crdroid.net/enchilada/8#changelog
    https://crdroid.net/fajita/8#changelog

    Links:​

    Visit the official website at crDroid.net
    crDroid OnePlus 6/6T Telegram Group
    crDroid Community Telegram Group
    crDroid Updates Telegram Channel
    Donate to help our team pay server costs (PayPal or Patreon)
    Donate to support me in maintaining this device (PayPal or Patreon)
    8

    Notes:

    • Yes it supports package signature spoofing permission for microG compatibility out of the box (but will work without ANY GApps/microG implementation installed as well).
    • Requires OOS 11.1.2.2 firmware (last official release). You should consider using an Android 10 ROM if you want to continue using Android 10 firmware.
    • Tested against latest Magisk canary, works well.
    • No there won't be official builds with inline GApps; please don't ask. The dev team's policy is vanilla-only whenever possible (and it's very possible with our devices).

    Google Apps:​

    Maintainer doesn't use Google Apps personally as daily driver, but here are some notes gathered from peoples' testing:
    • In general, try to go with the lightest weight package you can and don't replace the stock dialer/messaging apps (just download them from Play Store and set defaults).

    • Since we are LineageOS-based, here are the Lineage team's recommendations:
      https://wiki.lineageos.org/gapps.html

    • MindTheGapps are recommended and considered the default supported configuration for either Android 11 or 12 (per the LineageOS wiki, linked above). Assistant works great out of the box.
      Note on Google Keyboard: If installed as a system app, GBoard will actually do on-device speech recognition when it doesn't have a network connection, so you might want to try adding the Nik Addon for Gboard on top of MTG, just to get on-device speech recognition as an input method (someone please test this out & report back?), but not required for regular usage and GBoard works perfectly well installed from the Play Store as a user app after first boot as well.
      MindTheGapps survives built-in System Updater OTA updates, works fine after doing manual update with built-in recovery, and passes SafetyNet.
      http://downloads.codefi.re/jdcteam/javelinanddart/gapps

    • NikGapps also seems to work in Android 12.1, although it has some issues with clobbering overlays leading to system apps triggering the privacy indicators that shouldn't be doing that. Recommend using Core plus addons, rather than going heavier from the beginning (we don't have much space left in the system partition).
      You'll need Googlesearch (the actual "Google" app) and Velvet (Assistant pacakges), plus GBoard (gets offline speech recognition if installed to system) and either SetupWizard or PixelSetupWizard for the best voice-recognition & assistant experience.
      Not the recommended GApps package, but give it a shot if you like the customization options. Survives built-in System Updater OTA updates, might have issues with re-flashing during manual updates from built-in recovery (needs testing by some brave soul), passes SafetyNet afaik.
      https://nikgapps.com/downloads#downloads

    • Flame Gapps also seems to work well in Android 11 (haven't heard reports about Android 12.1 yet), although the "basic" package is a little heavier than Nik Core, at least it doesn't start replacing stock dialer & messages. Also survives OTA & passes SafetyNet, not sure about manual updates with built-in recovery.
      https://flamegapps.github.io/download.html

    • OpenGApps are not recommended, for reasons outlined in the LineageOS wiki link above.
    Please report what worked for you, whether or not it survives updates when using the System Updater, whether or not it survives manual "dirty" update flashing via built-in recovery, and whether it passed SafetyNet, so I can keep this list updated.

    crDroid 8.8 - August 2022 ASB release notes/changelog:

    Changelog since 8.7
    I know it took a while. Everything blew up this summer.
    • Merged August 2022 ASB from upstream.
    • Moved OnePlusCamera & OnePlusGallery out of system partition into vendor/priv-apps/ to save space in system (should allow for bigger Google Apps packages if you insist on using something other than MindTheGapps) -- Should work fairly seamlessly coming from 8.7 official, but see installation notes below if you have trouble with OPCam or OPGallery after updating.
    • Enabled support for exFAT-formatted USB OTG drives (depends on kernel support, in case you flash a custom kernel). Technically it should allow ANY vold-supported filesystems to work, with functional kernel support, but I've only tested exFAT (works), and NTFS (doesn't work).
    • New QuickSettings tile customization options from your friendly neighborhood crDroid dev team!
    • Enchilada: Something about fingerprint blobs from upstream in Lineage. It'll probably ask you to re-enroll fingerprints.
    • Enchilada: At some point I guess battery estimate got fixed, and I didn't notice because some overlay in MinMicroG seems to override it back to not working. Sucks to be me.
    • Adjust AOD a little bit, should hopefully wake up more reliably, AND be a little brighter by default (so you can, y'know, read it).
    • Fajita: UDFPS should suck a lot less. This was probably my fault for a couple releases there; sorry.
    • Dropped SmartPixels because it's ugly af and buggy; use framework dimming ("Extra Dim") if you want the screen so dim that you can't read anything.

    8.8 Installation notes:​

    • I've had some people end up having privileged permissions not getting copied when using the built-in updater, which results in a bootloop at boot animation. I can't fix it for you, but if this happens to you, DON'T PANIC. You should be able to get an "adb logcat" during the bootloop on your computer with USB cable connected, and search the output for "fatal" to figure out which package is having the fatal error about missing privileged permissions. Then you can get a root shell in built-in recovery and mount system as read-write, or fastboot boot SIDDK's latest TWRP 3.6.2_12-2 or newer TWRP boot img files if you'd rather do it that way, and manually remove the offending Google app package that's missing its permissions. Check <mountpoint>/system/addon.d/ to find out if there's a rogue OTA survival script copying things over that doesn't belong there (this might have been a bug from earlier versions of Nik Gapps). You may find that just removing everything in system/addon.d/ and then reboot to recovery & manually re-flash the MindTheGapps & Magisk installers (assuming that's what you're using) before rebooting back to system and running the update will help make sure you only have what you should have in there.
    • If you experience issues with OnePlusCamera & OnePlusGallery after updating, first get App Info and clear storage & cache for both. You might have luck with "update" installing the same apk version in-place (it will ask if you want to update the app, even though it's the same version). I used OP Camera v3.14.40, which is available from here: https://www.apkmirror.com/apk/onepl.../oneplus-camera-3-14-40-android-apk-download/ and OP Gallery v4.0.297, available from here: https://www.apkmirror.com/apk/onepl...eplus-gallery-4-0-297-2-android-apk-download/. Reports are that it usually works just fine updating from official 8.7, but here are some troubleshooting steps for just-in-case.

    Known issues:

    • For single-press "Screen-off UDFPS" to work on fajita, you need something else enabled that keeps the screen digitizer awake (like turning on DT2W or set up a screen-off gesture).
    • Basically everything that's still funky in upstream LineageOS:
      • No audio passed to remote display when casting via wifi display/miracast.
      • There's ugly blank space at the top of the screen after rebooting before first unlock. After first unlock it's fine.
      • Up-arrow screen-off gesture doesn't work (something else is eating that keycode); all the rest work with the caveat that left/right swipe gestures don't work unless BOTH directions have an action assigned, and then they both work.
      • The NFC stack will crash if something tries to *read* data from the phone. So NFC payments via Google Wallet/Pay/whatever-it-is-this-week should work, but Android Beam/Nearby Sharing will fail and might require a reboot to enable NFC again.
    • Maintainer is busy af in real life and takes forever to get releases out.

    Helpful links:

    8
    8.7 testing releases available in the OP 6/6T TG channel if anyone is feeling adventurous!
    7
    Okay, I took a mental health day to work on Android stuff. :D
    First test builds of 8.8 will be going up tonight in the Telegram group if anyone wants to join & try them out!
    Had to drop Camera2 (the basic AOSP camera) since that little 5MB makes the difference between MindTheGapps 12.1 arm64 & Magisk both being able to install and updater able to correctly process addon.d scripts when installing the zip, and a bootloop because it couldn't quiiiiite finish copying over the privapp permission XMLs to system/product/. Stupid tiny system partition...
    No device-specific bugfixes yet in my trees, just testing with the most recent lineage changes & crDroid 8.8 sources.
    6
    After a week of usage, everything rock solid. I have noticed a daily message offering an update to Android 13, what probably is an issue with upstream crdroid. Other than that, everything running smoothly.

    I am surprised how few people are paying attention to this thread. Thing is, you hardly find this thread in xda when searching for rooms. Even searching in Google for "xda crdroid oneplus 6" will point you to less relevant threads. I usually have to find it through crdroid page, which I guess is not how people should find one of the best ROMS for enchilada out there. Any way to improve the exposure?