Divested-Mobile / DivestOS-Build

Everything needed to build DivestOS, a more private and more secure aftermarket mobile operating system.
https://divestos.org/index.php?page=build
Other
219 stars 31 forks source link

OnePlus 7 Series Firmware Issue Fun #167

Closed TommyTran732 closed 1 year ago

TommyTran732 commented 1 year ago

I tried updating from the October build to the November build, and it failed to apply the update. I then proceeded to unlock the bootloader, adb sideloaded the November build, and relocked it. It's soft bricked and gave "The current image (boot/recovery) have been destroyed and cannot boot". Maybe it wasn't signed properly or the firmware changed?

It does boot just fine with an unlocked bootloader.

SkewedZeppelin commented 1 year ago

The newer firmware for OP7 may no longer support locking like is known on OP8 and OP9: https://calyxos.org/news/2022/07/06/oneplus-android-12-relock-issue/

redfoot0 commented 1 year ago

I also have the same update issue on guacamole. If the firmware has the same issue as the op8 and 9 series, can the newer/broken firmware be left off?

SkewedZeppelin commented 1 year ago

There are two issues here:

The first is being unable to install the update, I received a log for this:

11-13 18:31:11.601  1308  1308 I update_engine: [INFO:partition_writer_factory_android.cc(44)] Virtual AB Compression disabled, using Partition Writer for `LOGO`
11-13 18:31:11.604  1308  1308 I update_engine: [INFO:partition_writer.cc(295)] Opening /dev/block/bootdevice/by-name/LOGO_b partition without O_DSYNC
11-13 18:31:11.602  1308  1308 W update_engine: type=1400 audit(0.0:78550): avc: denied { read } for name="sde47" dev="tmpfs" ino=22012 scontext=u:r:update_engine:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0
11-13 18:31:11.608  1308  1308 E update_engine: [ERROR:utils.cc(530)] Opening block device /dev/block/bootdevice/by-name/LOGO_b: Permission denied (13)
11-13 18:31:11.612  1308  1308 I update_engine: [INFO:partition_writer.cc(100)] Caching writes.
11-13 18:31:11.617  1308  1308 E update_engine: [ERROR:partition_writer.cc(104)] Unable to open file /dev/block/bootdevice/by-name/LOGO_b: Permission denied (13)
11-13 18:31:11.612  1308  1308 W update_engine: type=1400 audit(0.0:78551): avc: denied { read write } for name="sde47" dev="tmpfs" ino=22012 scontext=u:r:update_engine:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0
11-13 18:31:11.621  1308  1308 E update_engine: [ERROR:partition_writer.cc(300)] Unable to open target partition LOGO on slot B, file /dev/block/bootdevice/by-name/LOGO_b

Which shouldn't happen: https://review.lineageos.org/c/LineageOS/android_hardware_oplus/+/340515

The second issue is that the new 12 firmware likely did remove relock support. I can remove the firmware inclusion for OP7 series, but then users either end up:

SkewedZeppelin commented 1 year ago

unlock the bootloader, adb sideloaded

you can adb sideload while locked, you just can't fastboot update

darhma commented 1 year ago
* on outdated/insecure 11 firmware with bugs, since userspace blobs are expecting 12

* on latest 12 firmware, with no relock support

Personally I think the second option is preferable

TommyTran732 commented 1 year ago

Well, the Oneplus 7T is EOL anyways. The firmware will quickly become outdated/insecure as well.

So I guess the question is whether there are any serious vuln that has been fixed between March (which was previously included in the October build) and August.

SkewedZeppelin commented 1 year ago

New 19.1 builds are up for OnePlus 7 series with firmware removed so users can choose.

Firmware is still included on OP8/9.

TommyTran732 commented 1 year ago

New 19.1 builds are up for OnePlus 7 series with firmware removed so users can choose.

Firmware is still included on OP8/9.

What about the 20 builds?

SkewedZeppelin commented 1 year ago

I'll compile 20.0 with firmware removed another day.

TommyTran732 commented 1 year ago

I'll compile 20.0 with firmware removed another day.

Oh, and I wonder if you have the firmware for the OP7T posted somewhere or should I go ahead and extract it from the stock OS myself?

SkewedZeppelin commented 1 year ago

I'm re-opening this. I just received a report of non-functional touch/screen on guacamole 19.1 with A11 firmware.

A12 firmware may actually be required.

I've added some warnings here: https://divestos.org/index.php?page=news#2022-11

11-15 14:35:59.687  1335  1335 E cdsprpcd: vendor/qcom/proprietary/adsprpc/src/cdsprpcd.c:47:cdsp daemon will restart after 100ms...
11-15 14:35:59.804  1335  1335 I cdsprpcd: vendor/qcom/proprietary/commonsys-intf/adsprpc/src/rpcmem_android.c:158: rpcmem_init_internal: opened ION device fd 4, configured heap IDs: system (0x2000000), contig (0x400000), secure (0x200), secure flags (0x80080000)
11-15 14:35:59.804  1335  1335 I cdsprpcd: vendor/qcom/proprietary/commonsys-intf/adsprpc/src/fastrpc_apps_user.c:2794: fastrpc_apps_user_init done
11-15 14:35:59.804  1335  1335 I cdsprpcd: vendor/qcom/proprietary/commonsys-intf/adsprpc/src/fastrpc_apps_user.c:1203: remote_handle_open: Successfully opened handle 0x0 for '":;./\attachguestos on domain 3
11-15 14:35:59.804  1335  1335 E cdsprpcd: vendor/qcom/proprietary/commonsys-intf/adsprpc/src/fastrpc_apps_user.c:2588: Error 0x200: apps_dev_init failed for domain 3, errno Transport endpoint is not connected
11-15 14:35:59.804  1335  1335 E cdsprpcd: vendor/qcom/proprietary/commonsys-intf/adsprpc/src/fastrpc_apps_user.c:2686: Error 0x200: open_dev (-1) failed for domain 3 (errno Transport endpoint is not connected)
11-15 14:35:59.804  1335  1335 W cdsprpcd: vendor/qcom/proprietary/commonsys-intf/adsprpc/src/fastrpc_apps_user.c:1441:Warning 0xe: remote_get_info failed to get attribute 257 for domain 3 (errno Success)
TommyTran732 commented 1 year ago

Ah fun. Divest 20 runs just fine on my 7T with the Android 12 firmware.

darhma commented 1 year ago

Ah fun. Divest 20 runs just fine on my 7T with the Android 12 firmware.

so with the bootloader unlocked?

SkewedZeppelin commented 1 year ago

I've pulled all the OP7 series builds.

Any users who upgraded to yesterday's 19.1 builds with A11 firmware installed and have no touch screen should flash A12 firmware if they are unlocked.

Otherwise they can unlock, flash the previous build, and restore from backup.

Old builds are available here: https://divestos.org/builds/old/old.txt

I will fix the flashing issue and include A12 firmware back for the next builds. Users that are locked will have to migrate regardless.

theotheroracle commented 1 year ago

so if i understand correctly, all op7 users have to unlock their bootloader ?

TommyTran732 commented 1 year ago

Yes

SkewedZeppelin commented 1 year ago

New builds are uploading: https://divestos.org/index.php?page=news#XXXX-XX

https://github.com/Divested-Mobile/DivestOS-Build/commit/ad5f2d7bfaccf1154c700ae855f6878d3565a99b

hbarthel commented 1 year ago

I didn't read the update instructions. My 7 pro is not locked. Touch is not working since the update last week Wednesday. I did wait until battery was empty and device shut down itself. Holding Power loooong time did not work. Shut down happened today :) Maybe there is another solution to power it off? But I have no clue how to get into fastboot mode... Hold VolUp+VolDown+Power always starts DivestOS and have to wait until it switches off. What can I do or what should work? How can I manage it to get firmware installed? Seems like I updated at a point in time when the firmware was not included. Cheers, Heiko

PS: adb devices -> unauthorized

SkewedZeppelin commented 1 year ago

@hbarthel you need to manually adb sideload the latest version, should get you back going without any loss since you're unlocked

fix your adb, to access fastboot use volume up + power, to access recovery use volume down + power

also to force most modern devices off can usually use volup+voldown+power, and next time don't wait a week before asking for help :wink:

hbarthel commented 1 year ago

Thanks a lot. volup+voldown+power worked to power it off, stupid me (yes, could have asked or searched earlier, but had little time) could get into fastboot afterwards (with loaded battery it worked) and updated firmware, that I extracted from latest build. My phone works again. Thank you very much, I am so happy!

PS: they have the wrong keys: https://wiki.lineageos.org/devices/guacamole/#special-boot-modes

SkewedZeppelin commented 1 year ago

@hbarthel firmware is included to be clear, simply installing the update will ensure you're on the correct firmware

bbczeuz commented 1 year ago

Can we sum up this thread?

(I ran into the no-touchscreen issue with my OP7 Pro upgraded from Resurrection Remix (Android 10) to Divested 20, then Bricked it, got OOS11 running, with the locked-only bootloader, den MSM-Tool downgraded to OOS10 (Android 11) and unlocked the bootloader)

What is the current recommended way to install Divested 20 on Oneplus 7 pro?

SkewedZeppelin commented 1 year ago

@bbczeuz Firmware is included in DivestOS, just follow the steps: https://divestos.org/pages/bootloader#fastboot

bbczeuz commented 1 year ago

@SkewedZeppelin Thanks. Works smoothly. (Had some issue with fastboot install getting stuck; switched USB ports and problem solved)

Procedure: Use MSM Tool to install OOS10 (A11), Unlock bootloader, flashboot Divestos, sideload Divestos, works Thanks for your works!

Tecol87 commented 1 year ago

My touchscreen did not work on slot a (but on slot b) after the first installation. I re-did the installation and re-formatted /data multiple times, after then it works now on both slots.

Is there an easy way to restore locking-support? I consider a locked outdated-device more secure than an unlocked device. I don't mind building it myself.

SkewedZeppelin commented 1 year ago

@Tecol87 locking is not supported, and I won't ship outdated firmware please follow the correct steps to ensure both slots are synced:

You cannot simply just downgrade the firmware, you have to downgrade the kernel and the vendor blobs to match it which is non-trivial.

Tecol87 commented 1 year ago

@SkewedZeppelin Thank you very much