[EOL][ROM][OFFICIAL][enchilada][11.0_r46]crDroid Android[v7.39]

Search This thread

svg1234

Member
Mar 25, 2019
32
11
LG V30
OnePlus 6
Thanks to TerminatorJ for maintaining this ROM.

Since the crdroid android 10 ROM has been so excellent, I decided to give the 7.x android 11 ROM a whirl. While it has its issues, as noted in a series of informative posts by TerminatorJ, it has great potential.

After installing the ROM about a week ago, the phone had abnormal and major battery drain. It was especially noticeable overnight, discharging between 2% to 3% per hour with the screen off.

I verified that the phone wasn't entering the deep sleep state. Long story short, I managed to finally trace the bug to the "Tap to wake" setting. The default state is disabled, so most won't experience the battery problem because they won't touch this setting. However, I always enable this option in custom ROMs that I use, because I don't enable AOD.

When "tap to wake" is enabled, the feature does not work and it prevents the phone from entering the deep sleep state. I tested this multiple times and the results are consistent.
 
Last edited:

gioxoid

Senior Member
Jan 25, 2011
437
61
Florence
Dear all, any hint how about any permission toast is unlockable? Clean first time installation from OOS. Formatted all prior to installing.
 

svg1234

Member
Mar 25, 2019
32
11
LG V30
OnePlus 6
Fyi, 7.5 available.

Camera (org.codeaurora.snapcam) is crashing as soon as I start the app.

On 7.4, both the built in camera and even opencamera would crash. Never had opencamera crash before. But when I wiped data (because of the battery issue described in my previous post), and avoided reinstalling opencamera, the built-in camera worked fine. I figured the issue was a conflict between the two. But now with 7.5, still haven't installed opencamera, and the built in is immediately crashing. Using latest OOS.

Often camera crashing is an selinux permissions issue, but it was working fine in 7.4 with Enforcing.

Update: just checked the logs. Did you change the built-in camera? I hadn't noticed which camera code was in 7.4. This one requires gsf I believe. That would explain the crashing. I don't use gapps. Completely g-less.
 
Last edited:
Fyi, 7.5 available.

Camera (org.codeaurora.snapcam) is crashing as soon as I start the app.

On 7.4, both the built in camera and even opencamera would crash. Never had opencamera crash before. But when I wiped data (because of the battery issue described in my previous post), and avoided reinstalling opencamera, the built-in camera worked fine. I figured the issue was a conflict between the two. But now with 7.5, still haven't installed opencamera, and the built in is immediately crashing. Using latest OOS.

Often camera crashing is an selinux permissions issue, but it was working fine in 7.4 with Enforcing.

Update: just checked the logs. Did you change the built-in camera? I hadn't noticed which camera code was in 7.4. This one requires gsf I believe. That would explain the crashing. I don't use gapps. Completely g-less.
Yes, the camera is Arnova82's latest GCam port of 8.1 (the one packaged as "snap" so as to be able to install on top of built-in camera). That would do it.
I run microG, but I'm pretty sure there's a magisk module that fakes just enough GSF to let GCam ports run without even needing to go as far as a minimal microG install. I'll update if I find it.

Update: Found it!
 
Last edited:

svg1234

Member
Mar 25, 2019
32
11
LG V30
OnePlus 6
Yes, the camera is Arnova82's latest GCam port of 8.1 (the one packaged as "snap" so as to be able to install on top of built-in camera). That would do it.
I run microG, but I'm pretty sure there's a magisk module that fakes just enough GSF to let GCam ports run without even needing to go as far as a minimal microG install. I'll update if I find it.

Thanks. I've tested and used microg before, but I'm trying to keep it as simple and g-less as possible. I'm not using any of their apps. One of the benefits of the pandemic isolation last year...having enough time to get rid of G (and the other big techs). Took time and a lot of effort, but now I'm used to it.

As you likely know, the org.lineageos.snap camera that is included in various roms works fine w/o gsf. But I've been using OpenCamera for about a year. It's good enough for my purposes.

BTW, I just tested it, and the deep sleep prevent / battery drain / tap to wake issue is still happening. If you can shed some light on it, I'd like to understand why and if it can be fixed. Love the double tap to wake feature.
 
Last edited:
Thanks. I've tested and used microg before, but I'm trying to keep it as simple and g-less as possible. I'm not using any of their apps. One of the benefits of the pandemic isolation last year...having enough time to get rid of G (and the other big techs). Took time and a lot of effort, but now I'm used to it.

As you likely know, the org.lineageos.snap camera that is included in various roms works fine w/o gsf. But I've been using OpenCamera for about a year. It's good enough for my purposes.

BTW, I just tested it, and the deep sleep prevent / battery drain / tap to wake issue is still happening. If you can shed some light on it, I'd like to understand why and if it can be fixed. Love the double tap to wake feature.
Sorry the deep sleep thing is still going on... I'm not much of a dev, not gonna lie, so I was hoping that it would have magically gone away with the rebase to the new lineage-18.1 code in 7.5
I'll take a look at it I guess, probably have to try and get some bigger brains involved, although since we at least have a real fingerprint sensor that DOES work to turn on the device from deep sleep, I hope that's some small consolation.

Stupid question, but just making sure your kernel app is configured to SHOW deep sleep, right? I thought some of them didn't show it by default for some strange reason.
 
Thanks. I've tested and used microg before, but I'm trying to keep it as simple and g-less as possible. I'm not using any of their apps. One of the benefits of the pandemic isolation last year...having enough time to get rid of G (and the other big techs). Took time and a lot of effort, but now I'm used to it.

As you likely know, the org.lineageos.snap camera that is included in various roms works fine w/o gsf. But I've been using OpenCamera for about a year. It's good enough for my purposes.

BTW, I just tested it, and the deep sleep prevent / battery drain / tap to wake issue is still happening. If you can shed some light on it, I'd like to understand why and if it can be fixed. Love the double tap to wake feature.
As for the camera, just had someone in the Telegram group report that the Gcam-Services-Provider latest release is working with the inline GCam 8.1 port, but you have to install it via ADB (as mentioned in the github issues):

 

svg1234

Member
Mar 25, 2019
32
11
LG V30
OnePlus 6
Stupid question, but just making sure your kernel app is configured to SHOW deep sleep, right? I thought some of them didn't show it by default for some strange reason.
I have a few different ways of determining if it goes into deep sleep. They're all consistent. It was just a fluke that I was able to pinpoint it to the tap-to-wake setting. It's not a crucial setting, so no worries.

For the time being, I reinstalled 6.16 for stability, but will go back and forth as updates are released. That OnePlus hasn't officially released rom11 for the 6 yet (though LOS is getting closer from what I've seen), and their forums are full of complaints from those with devices that have received the 11 update, shows you the difficulty devs are having with the changes.
 
I have a few different ways of determining if it goes into deep sleep. They're all consistent. It was just a fluke that I was able to pinpoint it to the tap-to-wake setting. It's not a crucial setting, so no worries.

For the time being, I reinstalled 6.16 for stability, but will go back and forth as updates are released. That OnePlus hasn't officially released rom11 for the 6 yet (though LOS is getting closer from what I've seen), and their forums are full of complaints from those with devices that have received the 11 update, shows you the difficulty devs are having with the changes.
To be fair, it's a flaming pile of crap thanks to Google. Scoped Storage and forcing everything to Storage Access Framework (even for privileged first-party apps) is a nightmare, even when it's working "correctly", as intended. Slow, restrictive, breaks file managers & backup/restore utilities & gallery apps & cameras, etc. Because Google hates rooted users. Anyway, if you have any logcats you can PM me that show anything about the power manager, I'd love to see them before you go back to 6.16. Logs make the fixes happen, otherwise it's just "okay, I guess I'll try to dig that up but no idea where to start with; it's kind of a big codebase".
 

svg1234

Member
Mar 25, 2019
32
11
LG V30
OnePlus 6
I'm running tests and inspecting the logs. Thought it might be bluetooth wakelock related, but even with BT off and all it's processes killed, same issue remains.

The logs are good at seeing WHAT is happening, but they aren't usually that valuable in seeing WHY it's happening. You really need to have a proper debugging environment - which (at this point) I do not have for Android.

Importantly, I have discovered the same issue in the 6.16 ROM which I'm currently testing. Thus, it isn't unique to the a11 roms. I have been running crdroid 6.x for many months and never noticed the battery drain issue before, so my guess (though I'm not certain) is that this issue crept into the code at some point between 6.12 and 6.16. I'm going to downgrade to previous versions of 6.x, one at a time, to see if that is the case and maybe determine which version the problem started.
 

svg1234

Member
Mar 25, 2019
32
11
LG V30
OnePlus 6
Update: Tried various crdroid and other ROMs. Finally wiped everything and went stock OOS - and the double-tap to wake still doesn't work. So something is wrong with the underlying OOS and/or the phone, but glad to say that it's likely nothing to do with the custom ROM.
 
  • Like
Reactions: Terminator.J
Update: Tried various crdroid and other ROMs. Finally wiped everything and went stock OOS - and the double-tap to wake still doesn't work. So something is wrong with the underlying OOS and/or the phone, but glad to say that it's likely nothing to do with the custom ROM.
Which OOS version have you been using (for underlying firmware and for testing stock OOS itself)?
 
Updated OP & Post #2 with flashing instructions for various scenario, some FAQs, and some release notes.
I know it's only SUPPOSED to be an incremental monthly update, but every month so far of crDroid v7.x has been a big rework in some way or other as I've tried to get up to speed as a maintainer using unofficial Android 11 bringup hacks from other lineage-based projects to get it working for our devices...
Dirty flashing should work, but it might not. I honestly don't know. We've had different kernels, different attempts to import code for device settings from AOSiP for sdm845, crdroid for sm8150, crdroid for sm8250, stuff from Syberia, just trying to make it work while the official Lineage codebase sat stagnant.

And when the update finally went official, and it all looked so beautiful, and I could get back to a couple clean, well-tested commits to add some device-specific crDroid & Lineage goodies via overlay, or DeviceSettings... all the things under the hood from upstream were broken.
So...
(╯°□°)╯︵ ┻━┻
 
  • Like
Reactions: mahroze

svg1234

Member
Mar 25, 2019
32
11
LG V30
OnePlus 6
Which OOS version have you been using (for underlying firmware and for testing stock OOS itself)?
I was originally on 10.3.9. I've tried 10.3.10 (just released latest), 10.3.7 and even rolled back to Pie OOS versions too. 9.0.2 and 9.0.9. Ran them as stock and with a few custom roms too. Bottom line: the tap to wake simply does not work. The tap to sleep does work. But as long as the tap to wake setting is enabled, it doesn't go into deep sleep, so of course the battery drain is the same as while in an active state. Gestures which are supposed to work when the screen is off do not work either. The ambient wake when lifted feature does work. Also, I tested all of the sensors...they're all working properly. No screen protector on this phone either (and like I said before, the double tap to sleep works fine, so if it is a hardware problem, it's a weird one.

I use a number of different phones, the OP6 hasn't always been my daily driver, so I can't for the life of me recall if tap to wake ever did work? I thought that it did, because I never noticed anything unusual as far as battery drain overnight, but now I'm not so sure. Maybe back then I was leaving a charger plugged in overnight? Before switching to crdroid 6.x, when I bought the phone (used), I was using pie OOS and LOS 16. Then updated OOS and LOS 17.

I might try the msmdownloadtool route. It's the only other thing I can think of. Perhaps at some point a partition got out of whack that flashing via twrp or OOS's local updater doesn't necessarily fix/overwrite? I doubt it, but it's worth a shot.

Update: Tried the msmdownloadtool. It successfully completed, but no tap-to-wake love. :( Starting to think it is hardware?
 
Last edited:
I was originally on 10.3.9. I've tried 10.3.10 (just released latest), 10.3.7 and even rolled back to Pie OOS versions too. 9.0.2 and 9.0.9. Ran them as stock and with a few custom roms too. Bottom line: the tap to wake simply does not work. The tap to sleep does work. But as long as the tap to wake setting is enabled, it doesn't go into deep sleep, so of course the battery drain is the same as while in an active state. Gestures which are supposed to work when the screen is off do not work either. The ambient wake when lifted feature does work. Also, I tested all of the sensors...they're all working properly. No screen protector on this phone either (and like I said before, the double tap to sleep works fine, so if it is a hardware problem, it's a weird one.

I use a number of different phones, the OP6 hasn't always been my daily driver, so I can't for the life of me recall if tap to wake ever did work? I thought that it did, because I never noticed anything unusual as far as battery drain overnight, but now I'm not so sure. Maybe back then I was leaving a charger plugged in overnight? Before switching to crdroid 6.x, when I bought the phone (used), I was using pie OOS and LOS 16. Then updated OOS and LOS 17.

I might try the msmdownloadtool route. It's the only other thing I can think of. Perhaps at some point a partition got out of whack that flashing via twrp or OOS's local updater doesn't necessarily fix/overwrite? I doubt it, but it's worth a shot.

Update: Tried the msmdownloadtool. It successfully completed, but no tap-to-wake love. :( Starting to think it is hardware?
That's really strange then...

And yeah; might be your particular hardware then, friend. Or something deep in your persist partition or nvram.
Just to make sure we're still talking about the same thing... you're referring to the phone being able to get into deep sleep/idle mode when double-tap-to-wake (DT2W) or screen-off gestures are enabled, correct?
The actual ability to DT2W or use the screen-off gestures works, right? It's just draining excessive battery because it's not letting the CPU cores go idle like it used to?

Because if THAT'S the case, about the only thing I can say is doing a QCN backup with QFIL (not just an EFS backup in TWRP) and doing MSMTool in SMT mode, but... that's deep digging and liable to cause serious problems if you're not absolutely sure you can properly get the device into DIAG mode and use the hard-to-find drivers to load/restore your QCN files (like, maybe make a Win7 VM and pass the phone through to it instead of trying to install directly into Win10). Problems like you have no more IMEI and no more WiFi/BT MAC and can't connect to either cellular service or any WiFi networks again. SMT mode clears allllll that business and all the factory sensor calibration data and is NOT to be trifled with. But if we're at the "MSMTool (normal mode) didn't fix it" stage of resetting things... *shrug* I dunno what else to say.
 

svg1234

Member
Mar 25, 2019
32
11
LG V30
OnePlus 6
That's really strange then...

And yeah; might be your particular hardware then, friend. Or something deep in your persist partition or nvram.
Just to make sure we're still talking about the same thing... you're referring to the phone being able to get into deep sleep/idle mode when double-tap-to-wake (DT2W) or screen-off gestures are enabled, correct?
The actual ability to DT2W or use the screen-off gestures works, right? It's just draining excessive battery because it's not letting the CPU cores go idle like it used to?

Because if THAT'S the case, about the only thing I can say is doing a QCN backup with QFIL (not just an EFS backup in TWRP) and doing MSMTool in SMT mode, but... that's deep digging and liable to cause serious problems if you're not absolutely sure you can properly get the device into DIAG mode and use the hard-to-find drivers to load/restore your QCN files (like, maybe make a Win7 VM and pass the phone through to it instead of trying to install directly into Win10). Problems like you have no more IMEI and no more WiFi/BT MAC and can't connect to either cellular service or any WiFi networks again. SMT mode clears allllll that business and all the factory sensor calibration data and is NOT to be trifled with. But if we're at the "MSMTool (normal mode) didn't fix it" stage of resetting things... *shrug* I dunno what else to say.

I started a new thread because I don't want to go too off-topic on this one.
Turns out that the phone IS going into light and deep doze mode, but dt2w and gestures will not work and battery drain is same as if it wasn't sleeping. Very odd. I think it's down to sensor(s) or the display itself? Please read and if you can take a couple of minutes to post comparative logs I would really appreciate it. I bought this phone second hand over a year ago off of Kijiji, so perhaps something is not right with it. Aside from this issue though, the phone is acting properly 100%. Thanks!

https://xdaforums.com/t/screen-and-dt2w-issue-can-someone-post-logs-to-help.4273201/

The actual ability to DT2W or use the screen-off gestures works, right?
Nope. Those two features have not worked. Ever. Not once. No matter which ROM, stock or custom. Double-tap to SLEEP works.
 

svg1234

Member
Mar 25, 2019
32
11
LG V30
OnePlus 6
Attention fellow OP6 owners. I'm trying to confirm something.
Can you PLEASE post a simple dmesg log excerpt (or PM me).

Boot. Connect USB cable. Debug mode.
Code:
adb shell
su
dmesg -T | grep synaptics

Thank you.
 
I started a new thread because I don't want to go too off-topic on this one.
Turns out that the phone IS going into light and deep doze mode, but dt2w and gestures will not work and battery drain is same as if it wasn't sleeping. Very odd. I think it's down to sensor(s) or the display itself? Please read and if you can take a couple of minutes to post comparative logs I would really appreciate it. I bought this phone second hand over a year ago off of Kijiji, so perhaps something is not right with it. Aside from this issue though, the phone is acting properly 100%. Thanks!

https://xdaforums.com/t/screen-and-dt2w-issue-can-someone-post-logs-to-help.4273201/


Nope. Those two features have not worked. Ever. Not once. No matter which ROM, stock or custom. Double-tap to SLEEP works.
Both have worked here, used to use screen-off gestures all the time on OOS, over a year and a half ago.

Output of the above:
```
OnePlus6:/ # dmesg -T | grep synaptics
[Thu May 6 20:23:57 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 20:24:05 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 20:24:05 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 20:24:05 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 20:24:05 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 20:24:13 2021] synaptics,s3320: all finger up
[Thu May 6 20:24:21 2021] synaptics,s3320: all finger up
[Thu May 6 20:24:24 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x2],evdata->id[0]
[Thu May 6 20:24:24 2021] synaptics,s3320: msm_drm_notifier_callback blank[4],event[0x2],evdata->id[0]
[Thu May 6 20:24:24 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 20:24:33 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 20:24:33 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 20:24:33 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 20:24:33 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 20:24:40 2021] synaptics,s3320: all finger up
[Thu May 6 20:24:42 2021] synaptics,s3320: all finger up
[Thu May 6 20:24:54 2021] synaptics,s3320: all finger up
[Thu May 6 20:24:54 2021] synaptics,s3320: all finger up
[Thu May 6 20:24:56 2021] synaptics,s3320: all finger up
[Thu May 6 20:25:09 2021] synaptics,s3320: all finger up
[Thu May 6 20:25:31 2021] synaptics,s3320: all finger up
[Thu May 6 20:25:58 2021] synaptics,s3320: all finger up
[Thu May 6 20:26:48 2021] synaptics,s3320: all finger up
[Thu May 6 20:28:11 2021] synaptics,s3320: all finger up
[Thu May 6 20:28:39 2021] synaptics,s3320: all finger up
[Thu May 6 20:29:19 2021] synaptics,s3320: all finger up
[Thu May 6 20:29:33 2021] synaptics,s3320: all finger up
[Thu May 6 20:29:46 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x2],evdata->id[0]
[Thu May 6 20:29:46 2021] synaptics,s3320: msm_drm_notifier_callback blank[4],event[0x2],evdata->id[0]
[Thu May 6 20:29:46 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 20:29:52 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 20:29:52 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 20:29:52 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 20:29:53 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 20:30:09 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x2],evdata->id[0]
[Thu May 6 20:30:09 2021] synaptics,s3320: msm_drm_notifier_callback blank[4],event[0x2],evdata->id[0]
[Thu May 6 20:30:09 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 20:30:20 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 20:30:20 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 20:30:20 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 20:30:20 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 20:30:29 2021] synaptics,s3320: all finger up
[Thu May 6 20:30:41 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x2],evdata->id[0]
[Thu May 6 20:30:41 2021] synaptics,s3320: msm_drm_notifier_callback blank[4],event[0x2],evdata->id[0]
[Thu May 6 20:30:42 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 20:30:57 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 20:30:57 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 20:30:57 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 20:30:58 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 20:31:16 2021] synaptics,s3320: all finger up
[Thu May 6 20:31:56 2021] synaptics,s3320: all finger up
[Thu May 6 20:32:52 2021] synaptics,s3320: all finger up
[Thu May 6 20:33:41 2021] synaptics,s3320: all finger up
[Thu May 6 20:33:41 2021] synaptics,s3320: all finger up
[Thu May 6 20:33:41 2021] synaptics,s3320: all finger up
[Thu May 6 20:33:52 2021] synaptics,s3320: all finger up
[Thu May 6 20:34:18 2021] synaptics,s3320: all finger up
[Thu May 6 20:34:55 2021] synaptics,s3320: all finger up
[Thu May 6 20:35:17 2021] synaptics,s3320: all finger up
[Thu May 6 20:36:35 2021] synaptics,s3320: all finger up
[Thu May 6 20:36:51 2021] synaptics,s3320: all finger up
[Thu May 6 20:38:15 2021] synaptics,s3320: all finger up
[Thu May 6 20:38:43 2021] synaptics,s3320: all finger up
[Thu May 6 20:39:19 2021] synaptics,s3320: all finger up
[Thu May 6 20:39:36 2021] synaptics,s3320: all finger up
[Thu May 6 20:39:58 2021] synaptics,s3320: all finger up
[Thu May 6 20:40:22 2021] synaptics,s3320: all finger up
[Thu May 6 20:40:35 2021] synaptics,s3320: all finger up
[Thu May 6 20:40:50 2021] synaptics,s3320: all finger up
[Thu May 6 20:41:18 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x2],evdata->id[0]
[Thu May 6 20:41:18 2021] synaptics,s3320: msm_drm_notifier_callback blank[4],event[0x2],evdata->id[0]
[Thu May 6 20:41:18 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 20:41:23 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 20:41:23 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 20:41:23 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 20:41:24 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 20:41:34 2021] synaptics,s3320: all finger up
[Thu May 6 20:41:59 2021] synaptics,s3320: all finger up
[Thu May 6 20:42:09 2021] synaptics,s3320: all finger up
[Thu May 6 20:42:42 2021] synaptics,s3320: all finger up
[Thu May 6 20:43:03 2021] synaptics,s3320: all finger up
[Thu May 6 20:43:48 2021] synaptics,s3320: all finger up
[Thu May 6 20:46:07 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x2],evdata->id[0]
[Thu May 6 20:46:07 2021] synaptics,s3320: msm_drm_notifier_callback blank[4],event[0x2],evdata->id[0]
[Thu May 6 20:46:07 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 20:46:35 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 20:46:35 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 20:46:35 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 20:46:35 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 20:46:43 2021] synaptics,s3320: all finger up
[Thu May 6 20:47:00 2021] synaptics,s3320: all finger up
[Thu May 6 20:47:13 2021] synaptics,s3320: all finger up
[Thu May 6 20:47:32 2021] synaptics,s3320: all finger up
[Thu May 6 20:47:43 2021] synaptics,s3320: all finger up
[Thu May 6 20:47:54 2021] synaptics,s3320: all finger up
[Thu May 6 20:48:13 2021] synaptics,s3320: all finger up
[Thu May 6 20:48:30 2021] synaptics,s3320: all finger up
[Thu May 6 20:48:46 2021] synaptics,s3320: all finger up
[Thu May 6 20:49:05 2021] synaptics,s3320: all finger up
[Thu May 6 20:49:23 2021] synaptics,s3320: all finger up
[Thu May 6 20:49:39 2021] synaptics,s3320: all finger up
[Thu May 6 20:49:54 2021] synaptics,s3320: all finger up
[Thu May 6 20:50:21 2021] synaptics,s3320: all finger up
[Thu May 6 20:50:44 2021] synaptics,s3320: all finger up
[Thu May 6 20:51:12 2021] synaptics,s3320: all finger up
[Thu May 6 20:51:45 2021] synaptics,s3320: all finger up
[Thu May 6 20:52:11 2021] synaptics,s3320: all finger up
[Thu May 6 20:52:56 2021] synaptics,s3320: all finger up
[Thu May 6 20:53:16 2021] synaptics,s3320: all finger up
[Thu May 6 20:53:23 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x2],evdata->id[0]
[Thu May 6 20:53:23 2021] synaptics,s3320: msm_drm_notifier_callback blank[4],event[0x2],evdata->id[0]
[Thu May 6 20:53:23 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 20:53:33 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 20:53:33 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 20:53:33 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 20:53:33 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 20:53:51 2021] synaptics,s3320: all finger up
[Thu May 6 20:54:21 2021] synaptics,s3320: all finger up
[Thu May 6 20:54:31 2021] synaptics,s3320: all finger up
[Thu May 6 20:54:40 2021] synaptics,s3320: all finger up
[Thu May 6 20:55:25 2021] synaptics,s3320: all finger up
[Thu May 6 20:55:35 2021] synaptics,s3320: all finger up
[Thu May 6 20:55:58 2021] synaptics,s3320: all finger up
[Thu May 6 20:56:12 2021] synaptics,s3320: all finger up
[Thu May 6 20:56:15 2021] synaptics,s3320: all finger up
[Thu May 6 20:57:22 2021] synaptics,s3320: all finger up
[Thu May 6 20:57:56 2021] synaptics,s3320: all finger up
[Thu May 6 20:58:09 2021] synaptics,s3320: all finger up
[Thu May 6 20:58:18 2021] synaptics,s3320: all finger up
[Thu May 6 20:58:43 2021] synaptics,s3320: all finger up
[Thu May 6 20:59:04 2021] synaptics,s3320: all finger up
[Thu May 6 20:59:17 2021] synaptics,s3320: all finger up
[Thu May 6 20:59:46 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x2],evdata->id[0]
[Thu May 6 20:59:46 2021] synaptics,s3320: msm_drm_notifier_callback blank[4],event[0x2],evdata->id[0]
[Thu May 6 20:59:46 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 21:01:09 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 21:01:09 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 21:01:09 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 21:01:09 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 21:01:13 2021] synaptics,s3320: all finger up
[Thu May 6 21:01:24 2021] synaptics,s3320: all finger up
[Thu May 6 21:02:22 2021] synaptics,s3320: all finger up
[Thu May 6 21:03:05 2021] synaptics,s3320: all finger up
[Thu May 6 21:03:32 2021] synaptics,s3320: all finger up
[Thu May 6 21:03:52 2021] synaptics,s3320: all finger up
[Thu May 6 21:04:05 2021] synaptics,s3320: all finger up
[Thu May 6 21:04:37 2021] synaptics,s3320: all finger up
[Thu May 6 21:04:51 2021] synaptics,s3320: all finger up
[Thu May 6 21:05:02 2021] synaptics,s3320: all finger up
[Thu May 6 21:05:27 2021] synaptics,s3320: all finger up
[Thu May 6 21:05:39 2021] synaptics,s3320: all finger up
[Thu May 6 21:05:53 2021] synaptics,s3320: all finger up
[Thu May 6 21:06:14 2021] synaptics,s3320: all finger up
[Thu May 6 21:06:27 2021] synaptics,s3320: all finger up
[Thu May 6 21:06:35 2021] synaptics,s3320: all finger up
[Thu May 6 21:06:43 2021] synaptics,s3320: all finger up
[Thu May 6 21:06:50 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x2],evdata->id[0]
[Thu May 6 21:06:50 2021] synaptics,s3320: msm_drm_notifier_callback blank[4],event[0x2],evdata->id[0]
[Thu May 6 21:06:50 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 21:06:59 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 21:06:59 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 21:06:59 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 21:06:59 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 21:09:32 2021] synaptics,s3320: all finger up
[Thu May 6 21:09:52 2021] synaptics,s3320: all finger up
[Thu May 6 21:10:32 2021] synaptics,s3320: all finger up
[Thu May 6 21:10:49 2021] synaptics,s3320: all finger up
[Thu May 6 21:11:29 2021] synaptics,s3320: all finger up
[Thu May 6 21:12:37 2021] synaptics,s3320: all finger up
[Thu May 6 21:14:42 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x2],evdata->id[0]
[Thu May 6 21:14:42 2021] synaptics,s3320: msm_drm_notifier_callback blank[4],event[0x2],evdata->id[0]
[Thu May 6 21:14:42 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 21:14:50 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 21:14:50 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 21:14:50 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 21:14:50 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 21:15:58 2021] synaptics,s3320: all finger up
[Thu May 6 21:16:08 2021] synaptics,s3320: all finger up
[Thu May 6 21:16:33 2021] synaptics,s3320: all finger up
[Thu May 6 21:17:30 2021] synaptics,s3320: all finger up
[Thu May 6 21:17:50 2021] synaptics,s3320: all finger up
[Thu May 6 21:18:00 2021] synaptics,s3320: all finger up
[Thu May 6 21:18:17 2021] synaptics,s3320: all finger up
[Thu May 6 21:18:54 2021] synaptics,s3320: all finger up
[Thu May 6 21:20:59 2021] synaptics,s3320: all finger up
[Thu May 6 21:22:08 2021] synaptics,s3320: all finger up
[Thu May 6 21:22:25 2021] synaptics,s3320: all finger up
[Thu May 6 21:24:00 2021] synaptics,s3320: all finger up
[Thu May 6 21:24:46 2021] synaptics,s3320: all finger up
[Thu May 6 21:25:57 2021] synaptics,s3320: all finger up
[Thu May 6 21:26:24 2021] synaptics,s3320: all finger up
[Thu May 6 21:26:47 2021] synaptics,s3320: all finger up
[Thu May 6 21:27:30 2021] synaptics,s3320: all finger up
[Thu May 6 21:28:27 2021] synaptics,s3320: all finger up
[Thu May 6 21:29:16 2021] synaptics,s3320: all finger up
[Thu May 6 21:29:55 2021] synaptics,s3320: all finger up
[Thu May 6 21:30:30 2021] synaptics,s3320: all finger up
[Thu May 6 21:31:33 2021] synaptics,s3320: all finger up
[Thu May 6 21:31:57 2021] synaptics,s3320: all finger up
[Thu May 6 21:32:39 2021] synaptics,s3320: all finger up
[Thu May 6 21:33:08 2021] synaptics,s3320: all finger up
[Thu May 6 21:33:31 2021] synaptics,s3320: all finger up
[Thu May 6 21:33:39 2021] synaptics,s3320: all finger up
[Thu May 6 21:33:39 2021] synaptics,s3320: all finger up
[Thu May 6 21:33:39 2021] synaptics,s3320: all finger up
[Thu May 6 21:33:47 2021] synaptics,s3320: all finger up
[Thu May 6 21:34:14 2021] synaptics,s3320: all finger up
[Thu May 6 21:35:03 2021] synaptics,s3320: all finger up
[Thu May 6 21:35:20 2021] synaptics,s3320: all finger up
[Thu May 6 21:35:22 2021] synaptics,s3320: all finger up
[Thu May 6 21:37:26 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x2],evdata->id[0]
[Thu May 6 21:37:26 2021] synaptics,s3320: msm_drm_notifier_callback blank[4],event[0x2],evdata->id[0]
[Thu May 6 21:37:26 2021] synaptics,s3320: msm_drm_notifier_callback blank[1],event[0x1],evdata->id[0]
[Thu May 6 21:37:34 2021] synaptics,s3320: changer_write_func:ts->changer_connet = 1
[Thu May 6 21:37:35 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x2],evdata->id[0]
[Thu May 6 21:37:35 2021] synaptics,s3320: msm_drm_notifier_callback blank[2],event[0x2],evdata->id[0]
[Thu May 6 21:37:35 2021] synaptics,s3320: msm_drm_notifier_callback blank[0],event[0x1],evdata->id[0]
[Thu May 6 21:37:35 2021] synaptics,s3320: synaptics_tpedge_limitfunc limit_enable =1,mode:0x7f !
[Thu May 6 21:37:51 2021] synaptics,s3320: all finger up
[Thu May 6 21:37:51 2021] synaptics,s3320: all finger up
[Thu May 6 21:37:51 2021] synaptics,s3320: all finger up
[Thu May 6 21:37:51 2021] synaptics,s3320: all finger up
```
That's on a Oneplus 6 North America "Big Storage Edition" A6003 retail unlocked, 8GB ram/256GB storage, running a hotfix edition I'm testing (built against last version of the vendor blobs installed over 10.3.9, rather than the current 10.3.10-based ones from release -- come see me in the Telegram channel for more info).
 

svg1234

Member
Mar 25, 2019
32
11
LG V30
OnePlus 6
Thank you very much. But I need the BOOT dmesg log. Taken right after boot. When the S3706 is initialized.
Check out my log in the other thread for an example.

I'm looking specifically at this part:
Code:
[Wed May  5 22:07:10 2021] synaptics,s3320_firmware: fwu_go_nogo: Device firmware ID = 2744099 
[Wed May  5 22:07:10 2021] synaptics,s3320_firmware: fwu_go_nogo: Image firmware ID = 2827775

I think I may have figured out what's going on? It's possible that the screen on my (second hand) phone was replaced...and that it's not an original OEM screen. Because according to my logs, as you see in the excerpt above, the synaptics firmware that is flashed onto the controller is NOT the same ID as the ROM's firmware ID. Not even close. It's much older. I've looked at every f'n OP6 ROM since the phone was released (open beta and official release) and none of them has a fw id that matches. They're all higher. If you look in the firmware .img files @ 0x84 there are 4 bytes, little endian, that is the fw ID. (I even looked into various 5T ROMs just to be sure).

So what I want to know is if other OP6's have one of the few device firmware IDs that match the firmware img files' ID in the ROMs.

For some reason, the kernel's synaptic driver fw update code, which is supposed to automatically update the hardware's fw to the ROM's fw img file...has been "blocked" (by commenting a directive) for SD845. It's in synaptics_dsx_fw_update.c
Code:
/*#define DO_STARTUP_FW_UPDATE*/
/*delete by morgan.gu for sdm845 */
#undef CONFIG_FB

#ifdef DO_STARTUP_FW_UPDATE
#ifdef CONFIG_FB
#define WAIT_FOR_FB_READY
#define FB_READY_WAIT_MS 100
#define FB_READY_TIMEOUT_S 30
#endif
#endif

Not sure why this was done. It's the same code in all the kernels I've seen (OOS and various custom roms).

I've searched for many hours and I cannot find any code or hardware to flash the controller, which I would normally do. Can't even find a datasheet on the S3706 to get the pinouts.
 
  • Like
Reactions: Terminator.J
Version 7.6 is out with May 2021 ASB merged. Short short version, down-revved the wifi drivers back to latest Android 10 CAF tag and the connectivity problems with doublewide channels seems to be resolved.
For more info, check out notes & links in post #2. I've done lots of work on various aspects of things, most of which either isn't visible or didn't actually work, but maybe I'm closer to fixing some long-annoying things (other than the fact that Android 11 is a steaming pile of crap and Google ought to be ashamed of themselves for Scoped Storage and SAF, among many many other things).
 

Top Liked Posts

  • There are no posts matching your filters.
  • 18
    NOTICE: crDroid 7.x (Android 11) is now End-Of-Life'd. Google is not releasing any more ASB updates for Android 11, and the LineageOS & crDroid teams are done with it.
    crDroid 7.39 is the final Android 11 release of this ROM.
    Please consider updating to crDroid 10.x (Android 14) or newer:
    crDroid 10.x XDA thread - OP 6/6T

    BE3pE0l.png


    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

    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 (usually by either wiping or formatting data, see below).
    - "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": Synonymous with "factory reset", accomplished from TWRP recovery by selecting "Wipe", then performing the "Slide to factory reset". Clears user data without erasing any partitions, removing encryption, or deleting contents of internal storage.
    - "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.
    - 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, and vbmeta. Some ROMs (like Syberia) build the vendor partition from source instead of just trying to work with the existing OEM vendor partition, so they flash that one too when installing. So you definitely need to flash stock vendor before switching from Syberia or another source-built vendor ROM to one like Lineage or crDroid that uses prebuilt.
    - "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). Unfortunately, OnePlus SDM845 (enchilada & fajita, the OP6 & OP6T) never got a proper source-built vendor bringup by the LineageOS team (upon which crDroid is based). And while Syberia has had source built vendor in Android 11 (possibly 10?), it was only done for enchilada and NOT fajita, it's not trivial to unroll & commonize what they've done to apply to other ROMs, and some of the proprietary files they keep are imported from other similar devices/similar chipsets rather than source-built (presumably because the OnePlus ones are modified in a weird way that the open-source components can't hook into, but still not ideal). So for fixing a lot of the issues we still face with lack of things working quite right, or hardware features not available in custom ROMs (especially compared to newer OnePlus devices like the 7, 8, or 9 series), we're kinda stuck, because you can't just implement it against the stock prebuilt vendor.
    - "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 partition in custom ROMs for our device are generally built against a particular version of OxygenOS (mostly the contents of the OEM vendor partition), and we've recently had an entire major Android version update come through from OxygenOS. 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 compatibility with Android 11), and while I tend to agree that OxygenOS 10 was better than the current state of OOS 11, that doesn't matter when you're talking about installing the custom ROM over it. So please, keep an eye out in the release notes for what the recommended/required firmware versions are, and remember to update (procedure below).

    Notes on custom recoveries with OxygenOS 11 firmware:
    - My understanding (from people smarter than me) is that the android-11 tree of TWRP is kind of a mess at the moment. I had made some 3.6.0_11-0 unofficial builds for both enchilada & fajita, but now they don't even seem to boot and I don't know why. TWRP android-11 tree refuses to mount the system partition where it belongs, and so addon.d OTA survival scripts don't work correctly any longer (which means you're hosed if you use NikGapps and update while booted from a TWRP version ending in "11-0", or if you have Gapps installed as a module and forget to reboot recovery & re-flash Magisk after flashing an update from TWRP).
    - Trying to `fastboot boot` an Android 9-based TWRP image (like official 3.5.2_9-0 twrp.img) after installing OxygenOS 11 doesn't work, and will drop you into Qualcomm Crash Dump mode. Don't try to flash it as your boot partion, either.
    - Meanwhile, stock LineageOS-based recovery, for all its shortcomings, has working fastbootd (aka "Userspace fastboot", which is what happens when you go to "Advanced", then choose "Enter fastboot" and the background colors go from purple to orange) that lets you flash both slots at once 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 since crDroid is LineageOS-based, it's what we've got, and fastbootd is the best way to update firmware.
    - With all that being said, since it's likely TWRP will only get MORE broken with Android 12 looming large, we're officially only going to support the built-in LineageOS-based recovery & OTA updater moving forward, until things change dramatically. 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.
    - And on the system update side, applying system OTA updates seems to work correctly 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 v23 canary and MindTheGapps & NikGapps (on tester fajita) and MinMicroG "system" install package on my daily driver enchilada.
    - ...however it has an accidental dependency on Magisk, due to things beyond my control upstream in the ROM. Whoops. Won't work if you don't have Magisk installed.
    - FLASHING the old official TWRP 3.5.2_9-0 INSTALLER zip (or newer) on top of OOS 11.x DOES seem to work for now, but you need to be in a recovery environment that allows you to flash that installer in the first place (either by booting into an already-installed TWRP recovery before updating firmware, or by having an Android 11 compatible recovery boot.img to be able to `fastboot boot`). I don't know if it'll keep working in Android 12 or with crDroid 8.
    - Look, if you really want to stick with TWRP, I don't blame you. I made bootable Android 11 compatible TWRP images for enchilada & fajita back at 3.5.2, and they still work well enough to `fastboot boot` them and then flash the old official 3.5.2_9-0 installer zips. Look at the attachments at the end of post #2. Also, you may want to try one of Siddhesh's custom recoveries; they probably work even better.
    - TL;DR: I prefer TWRP too but current official releases are kinda broken and it's a chore to get the old version installed correctly, so built-in LineageOS-based recovery and Updater app are the supported way to install & update moving forward.


    Prerequisites:
    - 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, with 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.

    Let's get started!

    Updating firmware:
    - Reboot to bootloader (no USB cable connected).
    - If you're not already using the stock (LineageOS-based) recovery, you'll need to `fastboot flash boot path/to/boot.img`, 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, except for the very last command ("fastboot reboot").
    - Since those instructions were updated for Android 12, and this is still Android 11-based & depends on using the OxygenOS prebuilt vendor partition contents, you'll also need to run fastboot flash --slot=all vendor vendor.img at the end of the list of commands in the linked LineageOS Wiki article above.
    - If you're only updating firmware and were already on crDroid, you can just "fastboot reboot" which will go back to system. If this is part of coming to crDroid from another ROM, continue with the instructions below.

    First time installing crDroid to your OP6, coming from stock OxygenOS 11.x or another ROM (stock LOS-based recovery):
    - Update to OxygenOS 11.1.2.2 firmware as described above if you haven't already.
    - At the end of that procedure, (re)flash the crDroid boot.img to the `boot` partition of both slots, then reboot to recovery.
    - Once you're rebooted into stock recovery, ADB sideload the crDroid installation zip. It might prompt you with "Install anyway?" on the phone, so don't just walk away from it.
    - After the adb sideload has finished and the purple menu at the top comes back, hit the back arrow, then choose "Wipe data" (which WILL format internal storage -- you backed up as noted above, right?).
    - Reboot to recovery (causes it to switch slots so any further installations will be on top of the slot that it just installed crDroid into).
    - ADB sideload Magisk and/or any GApps packages you want to use. Please note that any time you install something via ADB sideloading, that the install file is technically renamed "sideload.zip" in transit by the ADB protocol, which might cause problems with installers that try to get too clever for their own good and alter behavior based on renaming the installation zip (like MinMicroG), so you might have to get even MORE clever with changing up installation order (like flash MinMicroG/GApps before Magisk so it won't install as a module. I dunno, talk to the package installer authors to get them to just build multiple packages or talk to the LineageOS devs to allow you to decrypt internal storage, copy stuff to internal storage via MTP, and install stuff from internal storage like a proper custom recovery (or at least maybe `adb push` to an unencrypted temp dir in the data partition).
    - Reboot system.
    - ???
    - Profit!

    OTA updating from Updater app with OOS 11.x firmware (recommended):
    - This is the preferred way now. You just go to Settings > System > Updater, and... install an update. It processes addon.d OTA survival scripts correctly (tested with Magisk, MinMicroG, MindTheGapps, and NikGapps).

    - Please note that there's currently an accidental depencency on Magisk being installed for this to work. I don't know if this will get fixed; that's definitely above my pay grade. This appears to have been fixed; huzzah!
    - If you're trying to do a "Local Install" of the downloaded zip, please note you NEED to download on a computer & transfer to internal storage via USB cable; downloading files from an app on the phone associates it with a particular app thanks to Android 11+ Scoped Storage/SAF bull**** and will cause the file to be unreadable to the updater app process.

    -- Old TWRP-based instructions below the fold (not recommended, but keeping for historical value... probably not accurate but I'm not going to update them more) --
    OTA updating from TWRP with OOS 11.x firmware:
    You don't need to remove device protection; it works fine with PIN. Be sure you have a PIN set, or have looked up whatever that arcane chart of pattern > numeric incantations in case of pattern unlock. It's awful.
    - Boot into TWRP recovery.
    - Choose install, then select crDroid.zip, select additional zips, choose the TWRP installer zip, then slide to confirm flash.
    - Reboot recovery.
    - Choose install, then select Magisk zip (if using), select additional zips, choose GApps/microG (if using), slide to confirm flash.
    - Please keep off of the grass, shine your shoes, wipe your... dalvik.
    - Reboot system.

    OTA updating from TWRP with OOS 10.x firmware:
    - Don't. Update firmware to 11.1.2.2 first.

    Reporting bugs:
    I'm a parent of three young kids whose industry disappeared in the pandemic and is now full-time house husband & parent-in-charge while my wife is teaching full-time, I'm trying to save my small live-event-turned-streaming-studio company in my spare time. I'm doing in-home caregiving for a family member overnight one day a week. This is the back-up spare-spare-time hobby. I'm not a software developer nor do I know any programming languages, I just wanted a ROM with signature spoofing support and more customization than the unofficial microg-compatible LineageOS builds. So if there are bugs or feature requests, I go over to the crDroid dev chat and ask if someone has time to hold my hand & help. Don't make me get yelled for annoying them, mmkay? That said...
    - Logs/screenshots/recordings or it didn't happen. Either the built-in Matlog app, or Syslog (free, open source, available on Play store and F-droid) are your friends here.
    - I try to keep an organized notebook of roadmap, feature reqeusts, bug reports, etc. I won't always be able to fix it, but I'll at least look and do my best to ask the actual devs.
    - I don't sign into XDA much, so if I haven't said anything, 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, and I use Magisk & microG and like to tweak things myself. But don't expect much support if you:
    - didn't do a clean flash.
    - aren't using the built-in kernel.
    - are using extensive modifications (besides Magisk) like Xposed/Riru, Dolby Atmos, Viper4A, etc.
    - immediately start using "finalize.zip" or flashing migrate restore zips instead of following the actual instructions.
    - are running decrypted.
    - re-locked your bootloader for some reason... you're on a custom ROM; don't do that.

    crDroid Website - Download here!

    Donate - Support development!

    Telegram Oneplus6/6t group - Share your best cat pictures!

    Source Code:
    - Device tree: https://github.com/crdroidandroid/android_device_oneplus_enchilada/tree/11.0
    - OP6/6T Common device tree: https://github.com/crdroidandroid/android_device_oneplus_sdm845-common/tree/11.0
    - hardware/oneplus/ HALs: https://github.com/crdroidandroid/android_hardware_oneplus/tree/11.0-op6
    - Kernel: https://github.com/crdroidandroid/android_kernel_oneplus_sdm845/tree/11.0
    6
    Notes:
    - crDroid 7.x (based on Android 11 & LineageOS 18.1) is no longer being maintained. Google has End-Of-Life'd AOSP 11 and will be not releasing any further security patches for it, LineageOS will no longer be updating the lineage-18.1 branches, and the crDroid dev team have EOL'd our 7.x branches as a result.
    - 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).
    - Maintainer does not use GApps, so cannot answer questions about which packages work best from firsthand experience. In general, go with the smallest package you can and then install other Google apps from the Play Store. Please note that if you replace the stock dialer with Google Dialer, you may lose access to the Phone Info menu (*#*#4636#*#*) until you install another dialer. For recommendations, see https://wiki.lineageos.org/gapps.
    - 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 24 canary (with zygisk instead of magiskhide), works well.
    - No there won't be official builds with inline GApps; please don't ask.


    crDroid 7.39 - Final release - February 2024 ASB release notes/changelog:
    Changelog since v7.38 (21 January) official release:

    - Merged February 2024 Android Security Bulletin from upstream.
    - Whatever the ROM dev team changed upstream in LineageOS and crDroid sources (not much? they're busy with Android 14).
    - No changes to device-specific files.


    Known issues:
    - No f2fs-formatted userdata support, sadly. Doesn't work with the prebuilt vendor partition required for this version of Android. You'll need to reformat data to ext4 before being able to boot (you can fastboot flash the crDroid 8.x or 9.x boot.img if you need a recovery that will let you choose).
    - Google Hotword recognition might be kinda broken right now (on more than one custom ROM/device, not just us), and may cause some screw-up that prevents microphone audio from being allowed to go anywhere else if it's enabled.
    - If you are stuck at "Android is starting..." looping endlessly, then press power, reboot to bootloader, and follow the instructions for updating firmware to OxygenOS 11.1.2.2 in the first post. It doesn't wipe data, you shouldn't lose anything.
    - Some screen-off gestures may not work, due to limitations beyond my control; don't use those gestures. Sorry.


    Helpful links:

    Download ROM

    Android platform tools (adb & fastboot)

    OxygenOS 11.1.2.2 Full OTA

    Firmware update instructions (LineageOS Wiki)
    (Please note that since crDroid 7.x/Android 11 for this device depends on the prebuilt OxygenOS vendor partition, you'll also need to add fastboot flash --slot=all vendor vendor.img to the list of commands in the instructions, just before the final fastboot reboot.

    MSMTool (oh now you're in trouble - use latest unless you have a good reason to intentionally downgrade)

    Magisk (use latest)

    Official TWRP 3.5.2_9-0 install zip (good luck)
    5
    From the 'Better Nate Than Lever' department... new official March build is out, my first release as the new maintainer.
    Highlights:
    - Switching to Illusion kernel from AOSiP (the lineage-17.1 based one from before is unlikely to ever be updated with additional nodes from the OOS 10.0 source release, and doesn't support the DeviceSettings customizations we want in A11. meanwhile, Illusion was also LineageOS-based originally, but has more of the goodies from Q added that support the customizations we want, and maintained more frequently), with updated linux-stable security patches and updated wireguard.
    - Reworked the device tree with a much cleaner merge of vanilla lineage-18.1 sources, unofficial bringup patchset from the Lineage gerrit, and commits from crDroid. This is mostly cleaning up under-the-hood to make it easier going forward (because I made a royal mess of things earlier this yeear/late last year).
    - Temporarily removed DeviceSettings (Settings > OnePlus Settings) for now, because it was buggy as heck. I'm still working on it, but you have to remove some Lineage things to replace with it, and I want you folks to have things working right while I figure stuff out.
    - Panel color modes are temporarily gone due to kernel differences, but DC dimming should be working great (in Settings > Display > Livedisplay > Anti Flicker).
    - (Fajita only): FOD should be working again, although I've heard there's some funky business with the fingerprint graphic not disappearing after opening an app with securelocker; swiping the notification shade down and back up seems to clear it.

    Recommended setup (I haven't tested on anything else, so please match this if you're filing bugs):
    - 10.3.8 OOS base firmware
    - Official TWRP 3.5.1_9 (adds ability to flash apks as flashable zips if they have the right content, like magisk 22)
    - Magisk v22 if you're going to root (release, beta, or canary - I've been on canary the whole time, works well)
    - I don't use GApps, but happy to take recommendations for which packages work best. I'm using FriendlyNeighborhoodShane's MinMicroG standard package myself, installed to /system.

    Dirty flash from 7.3 should work fine, although you might want to wipe Dalvik since we're changing kernels, and possibly clear storage/cache of the Settings app itself (that's where most of the work has been done).

    No inline TWRP yet in A11; the old method for including it has been removed ROM-side, so not much I can do for now. If you're installing from recovery or doing a clean flash, you'll need to install the ROM zip, install TWRP, reboot to recovery, install Magisk, then install any GApps/MicroG (or not!), wipe Dalvik, and finally reboot system.
    5
    Sorry for the longer than usual even for me delay; been on a virtual gig (work from home, but still) that's taken 10-12 hours per day for nearly a month... which means coordinating childcare and schedules with my wife who already works full time, and wasn't able to get the October security update releases out before that started.
    I've got some release candidates that I'm gonna call "good enough" and kick out there now, since the November ASB has now been merged into crDroid and I've been avoiding syncing that for fear of it breaking something (it ALWAYS breaks SOMETHING).
    Thanks for hanging on, we're not dead yet!
    The plan will be to then try to merge the updates and build again and see what's broken and if that can be fixed & pushed again before the actual end of this month. *gasp!* *shock!* *astonishment!*