[GUIDE] Fix screen rotation / device sensors - OnePlus X General

If your persist partition gets damaged this can break your sensors. Sometimes that just happens during a faulty operation while flashing.
Some ROMs might even fail to boot and in some weird situations the screen may rotate to the opposite direction.
To fix persist you can try these methods. If none of them work flash the lastest OxygenOS (v3.1.4) and try again. This doesn't work with all ROMs.
Sensors can be checked using apps like CPU Info (Google Play), CPU Info (F-Droid) or SatStat (F-Droid).
Method A) Restore an older TWRP backup of persist
If this does not work or you never made a backup, keep reading for advanced options.​Method B) Flash the lastest OxygenOS and reboot.
OxygenOS can recreate missing sensor calibration data. Some custom ROMs can but not all of them.​If this does not work, keep reading for advanced options.​
Once everything works again take a TWRP backup of persist you can always return to.
While you're at it, back up EFS as well if you don't know where to find a backup or you never made one.
More about what every partition does, including EFS and persist.
Congrats, you're done!
If you need to move to the advanced methods, take a TWRP backup of your current persist and keep it no matter what.
If none of them fixed your issues, restore this backup of persist before trying any other approach.
Copy the backup to your PC now to make sure you don't lose it on accident!
To open a shell on TWRP go to Advanced > Terminal or run adb shell on your PC.
If you really can't use TWRP or another custom recovery for this you can also try the following methods at runtime if your ROM is rooted.
Do this at your own risk.
If you can't take a TWRP backup of persist, e.g. because it is unmountable:
cd /sdcard; backup=persist_$(date +%Y-%m-%d_%H-%M-%S)_broken.img
dd bs=64k if=/dev/block/platform/msm_sdcc.1/by-name/persist | gzip > "$backup".gz
sha256sum /dev/block/platform/msm_sdcc.1/by-name/persist "$backup".gz > "$backup".sha2
To restore:
(gzip -d | dd bs=64k of=/dev/block/platform/msm_sdcc.1/by-name/persist) < <backup>.gz
sha256sum -c <backup>.sha2
Copy the backup to your PC now to make sure you don't lose it on accident!
These methods were tested with TWRP v3.4.0-0
Method C) Repair the filesystem on persist
- This may or may not work. This can help if you get the TWRP error Failed to mount '/persist'​- Make sure that Persist is unchecked in the Mount section in TWRP.​e2fsck -f /dev/block/platform/msm_sdcc.1/by-name/persist​If e2fsck asks questions you don't know how to answer cancel with Ctrl+C and ask someone for help. Otherwise just try whatever is available, restore your backup and try again if needed.​mount /persist (this should give no errors)​- Reboot​Method D) Restore file permissions
- This may or may not work. This only works if persist is mountable.​- It is possible that this method works better at runtime on a rooted ROM.​- If you want to know what file contexts are​mount /persist (this should give no errors)​restorecon -R /persist/sensors/ /persist/sns.reg​chmod u+rwx /persist/sns.reg; chmod 775 /persist/sensors/; chmod u+rw /persist/sensors/*​- Reboot​It is recommended to try the following methods with OxygenOS 3.1.4 installed. Not all custom ROMs are able to regenerate sns.reg
Method E) Delete sensor related files from persist
- This may or may not work. This only works if persist is mountable.​mount /persist (this should give no errors)​rm -fr /persist/sensors/ /persist/sns.reg​- Reboot​Method F) Reformat persist, if all else fails, known to work
This method was tested to fix sensors without creating obvious issues but wiping persist could have unknown side-effects in the long run.
Only do it if you have to. Make sure you know what persist if used for so you can recognize possbile issues if they occur and keep your initial backup around.
- Tested with OxygenOS 3.1.4 and TWRP v3.4.0-0​- This will get you a completely fresh start. This helps if you get the TWRP error Failed to mount '/persist'​- Make sure that Persist is unchecked in the Mount section in TWRP.​make_ext4fs /dev/block/platform/msm_sdcc.1/by-name/persist​reboot​- Note: Recent TWRP builds for the OnePlus X store settings in /persist/.twrps and /sdcard/TWRP/.twrps and will reset when wiping both at the same time.​
That's it!
Remember to take a backup of EFS and Persist now if everything is working or restore the backup you took at the start if you're still having issues and want to try other solutions.

Related

[RESOLVED] assistance needed - chmod /data/data/

Hi guys, I recently used the 'fix permissions' option in ROM Manager, which caused my SMS contact pictures to disappear. I then was trying to fix this by doing:
Code:
su
chmod 666 /data/data/com.android.providers.contacts/files/*
in Terminal Emulator on the device and dropped it right at :
Code:
su
chmod 666 /data/data/
anyways, long story short......./data/data/ is now 666, the device just constantly force closed eveything and is now in a constant boot loop. So any advice in the best way to fix this? I have tried booting into recovery and doing 'fix permissions' but this does not fix it.
Would fastboot allow me to connect to PC and chmod /data/data/ to the correct permissions? (and what would those be??) Or is it screwed and do I need to factory reset?
Many thanks for any hrlp guys
Have you tried re-flashing your ROM form recovery, this should reset the permissions
To be honest I'm new to Android and don't know which img that would be or how to go about doing it. Would doing this wipe any of my data? I was hoping there would be a simple way of getting a terminal through my pc and chmod from there (if I knew the correct permissions).
fubofo said:
To be honest I'm new to Android and don't know which img that would be or how to go about doing it. Would doing this wipe any of my data? I was hoping there would be a simple way of getting a terminal through my pc and chmod from there (if I knew the correct permissions).
Click to expand...
Click to collapse
fix permissions will do it for the files within the folder so if it where that simple I think it you would have fixed it 666 gives read/write permissions to everyone so I don't see that would have caused your problems, what ROM are you currently running? If it's a custom one simply reflash it, which should preserve all your Data if not you may need to run an RUU for your vendor/market which will wipe everything
ghostofcain said:
fix permissions will do it for the files within the folder so if it where that simple I think it you would have fixed it 666 gives read/write permissions to everyone so I don't see that would have caused your problems, what ROM are you currently running? If it's a custom one simply reflash it, which should preserve all your Data if not you may need to run an RUU for your vendor/market which will wipe everything
Click to expand...
Click to collapse
Thanks for the reply, I'm running stock ROM with eng hboot, recovery obviously and custom kernel. The reason I ask about fastboot chmod is because I'm not 100% 'fix permissions' is working via recovery.
Also, just for knowledge sake, what .img would be for what from my backup?
- .android_secure.img
- boot.img
- cache.img
- data.img
- nandroid.md5
- recovery.img
- system.img
Re-reading your original post, something weird is going on here as running 'fix permissions' shouldn't have caused any grief in the first place, possibly your OC is too aggressive for your CPU? (although it shouldn't be).
Plenty of people have come across the same issue when running 'fix permissions' from ROM Manager. It causes contact pictures to not display in the SMS apps in some cases.
Also, I remember running an option from recovery and it did nothing (even though reported completed) hence why I want to overrule the fix permissions from CM Recovery 2.5.1.3 and try to run commands into the device someway (via fastboot if possible or another method).
I just need to know what permissions should be for /data/data/ and how I would go about running commands to the device. And failiing that, what .img would be needed flashed to get a working device again with as little data lost as possible nd how to go about flashing it... fastboot or recovery update.zip?)
fubofo said:
Plenty of people have come across the same issue when running 'fix permissions' from ROM Manager. It causes contact pictures to not display in the SMS apps in some cases.
Also, I remember running an option from recovery and it did nothing (even though reported completed) hence why I want to overrule the fix permissions from CM Recovery 2.5.1.3 and try to run commands into the device someway (via fastboot if possible or another method).
I just need to know what permissions should be for /data/data/ and how I would go about running commands to the device. And failiing that, what .img would be needed flashed to get a working device again with as little data lost as possible nd how to go about flashing it... fastboot or recovery update.zip?)
Click to expand...
Click to collapse
assuming you are running cM 2.5.1.3 recovery?, have you a nandroid backup to fall back ON, restoring that, from recovery, would be my first step. If not Modaco has a stock ROM that you could try flashing from recovery which should retain your data
ghostofcain said:
assuming you are running cM 2.5.1.3 recovery?, have you a nandroid backup to fall back ON, restoring that, from recovery, would be my first step. If not Modaco has a stock ROM that you could try flashing from recovery which should retain your data
Click to expand...
Click to collapse
Yeah I have backups but from a while ago (first boot to be honest lol). But what should I restore and how? (system.img or data.img? as its /data/data/ that seems screwed)
fubofo said:
Yeah I have backups but from a while ago (first boot to be honest lol). But what should I restore and how? (system.img or data.img? as its /data/data/ that seems screwed)
Click to expand...
Click to collapse
Not sure how a partial restore would go, I normally do a full restore via recovery
OK so I have managed to get it working again. Ran backup form recovery which seemed to allow me to gain adb shell once the backup was completed. From there I chmod 777 /data/data/ and this allowed me to boot the device.
Everything seems to be gone, like contacts and such, but my apps are all there inc. Titanium backup. I have restored all system data from the Titanum backups and am currently running Rom Manager 'fix permissions' to see if that will add the correct permissions to /data/data/ again.
Hopefully I just now need to add my Google / exchange / etc. accounts again to be back to normal.
[UPDATE] - everything now seems to be working fine (except the original SMS contact pictures issue) and my entire device is back to the way it was last week (from Titanium backup I presume).
[UPDATE 2] - have now successfully ran chmod 666 /data/data/com.android.providers.contacts/files/* (after Rom Manager 'fix permissions' and reboot) and SMS contact pictures are all working again. Everything is syncing now so should be back to normal soon!!
on a side note, this obviously shows there is an issue with fix permissions, looks like it needs updated.
I too had the "contact picture" issue after performing the mentioned "fix permissions" command in ROM Manager. By the way, I simply fixed it by manually re-assigning the picture for each contact -- fortunately I have just a couple dozen contacts with picture so it didn't take too long.
capt_harlock77 said:
I too had the "contact picture" issue after performing the mentioned "fix permissions" command in ROM Manager. By the way, I simply fixed it by manually re-assigning the picture for each contact -- fortunately I have just a couple dozen contacts with picture so it didn't take too long.
Click to expand...
Click to collapse
Yeah I tried that too first but it didnt seem to work for me, removed image then reassigned for a number of contacts but nothing worked. It's fixed now so I'll just let this die here for future similair issues.

Failed EFS restore

Ok, I'm officially in trouble. I have a SM-G900F rooted with towelroot, SuperSu and BusyBox installed. I tried flashing with Mobile Odin Pro the latest NG2 firmware to keep root and not trip Knox. It failed twice (or three times), both times I was able to restore the original firmware with desktop Odin (http://forum.xda-developers.com/galaxy-s5/help/mobile-odin-pro-4-20-issues-t2834671).
Then something strange happened: I noticed that on 4G I had only data but no signal bars (http://forum.xda-developers.com/galaxy-s5/help/help-4g-data-signal-bars-t2837031). Then I had problems connecting to Wifi and a message appeared telling me I am in "Factory Mode" and some things are limited.
It was clear that my EFS partition is corrupted. I installed Root Explorer and there is nothing in my EFS folder (still I can use the phone in 2G/3G/4G for data and 2G/3G for calls but no Wifi).
I have 2 backups for EFS: one is made using Samsung Tools (http://forum.xda-developers.com/galaxy-s3/development/efs-samsung-tool-universal-support-t2602325) and it's an efs.img file, the other is made using some EFS backup tool and it's just a copy of exactly what was in EFS folder (a few folders and files). I tried using Samsung Tools to restore the backup but no luck. When I restart the phone, EFS folder is still empty.
I rebooted in recovery mode and it said "failed to mount /efs". That's probably why Samsung Tools can't do it's job but I'm not sure. At this moment I'm not sure of anything. I think that someone with some knowledge (knowledge that unfortunately I'm missing) can help me fix this.
I really need for some help, so any ideas are welcomed.
Thank's,
Mihai Raducan
..
fffft said:
No TWRP backup, huh? How did I know that was going to be the case? 10 demerits. Okay, you seem to have been on the right track in recognizing that your EFS partition was unmounted and therefore inaccessible in recovery mode.. but you didn't mount it? You didn't give us much detail to work with, but assuming that you have a custom recovery like TWRP, you could go to the advanced /mount menu and check the mount EFS partition. Or if you don't have that option for some reason, mount it yourself e.g.
.
Click to expand...
Click to collapse
It's only stock recovery, no TWRP or CWM.
I didn't mount the EFS partition before because I didn't know how. I'll follow your guide and report back.
Regarding the exact copy of EFS (efs.img): It's done with Samsung Tools but never had a chance to test it, so... I don't know. But let's take it one at a time. First problem: mount efs partition.
PS: My Windows laptop is playing tricks on me so it's going to take a while to reinstall Windows, adb, etc. But I'll be back.
Thank's.
..
Ok, I installed Adb, phone is recognized.
The first line of code
Code:
# ls -al /dev/block/platform/msm_sdcc.1/by-name
gave me a list with the location of efs (and more). EFS is at dev/block/mmcblk0p12.
The second line of code
Code:
# /sbin/mount /dev/block/mmcblk0p12 /efs
gives me : tmp-mksh: /sbin/mount: not found
Am I missing something?
is img of /efs partition enough for restore?
here, it says, that we need to have 3 partitions for full restore..??..: http://forum.xda-developers.com/showthread.php?t=2737448
dd if=/dev/block/mmcblk0p12 of=/mnt/sdcard/efs.img.ext4
dd if=/dev/block/mmcblk0p13 of=/mnt/sdcard/modemst1.bin
dd if=/dev/block/mmcblk0p14 of=/mnt/sdcard/modemst2.bin
but Samsung tool only makes efs.img..??.. who is right who is wrong?
..
fffft said:
Personally, if an EFS backup program made an image (.img} file and it was the same size as your EFS partition I'm sure that it was an exact copy and try writing it back. It's unlikely to make anything worse. But don't blame me if it somehow goes wrong. I'm just describing an option of last resort and commenting on what I would do with my own phone.
You can check the size of your EFS partition with the cat command (EFS should be partition 12)
Code:
$ su
# cat /proc/partitions
.
Click to expand...
Click to collapse
I checked the size of my efs.img and the size of the partition with the command you gave me. They are both 14MB but on a closer look, adb shows 14336 and Windows reports 14680kb. So I don't know....
fffft said:
You're using ADB instead of a terminal emulator app which is a new variable. There are a lot of ADB variants around and I have no idea what your command interpreter (mksh) or you have done with the shell environment.. which may require syntax adjustments.
Not found implies that the /system partition isn't mounted. But it could also be an ADB syntax quirk, path or symlink error, a typo or.. well, could be a lot of things. Perhaps try the syntax below. Or run the command from a terminal emulator instead of ADB shell.
Code:
$ su
# adb shell mount /system
# adb shell mount /efs
.
Click to expand...
Click to collapse
I installed Android Terminal Emulator and Shell Terminal Emulator (PlayStore) but I got the same thing. What's strange is that in both of them when I run the command "adb devices" they both give me nothing while in adb shell on desktop I get a number (as it should).
I understand that the syntax is for a specific terminal emulator. Tell me please what is that terminal emulator (that you know syntax is correct) so I can try with that one.
..
fffft said:
Try this terminal emulator app.
If you have continued difficulties, you should describe step by step what you are doing. In exhaustive detail or as close as you can get to that. Then someone in the forum will have a good basis to see where you are going astray. Or alternately where I made a typo or whatever the impediment turns out to be.
.
Click to expand...
Click to collapse
This is one the apps I tried with.
I'm describing step by step what I do. What I start with: SM-G900F rooted with towelroot, stock recovery, SuperSU and BusyBox installed, Knox 0x0.
I download and install https://play.google.com/store/apps/details?id=jackpal.androidterm.
Using this app:
Code:
su
and it changes to [email protected]:/#
I enter:
Code:
# ls -al /dev/block/platform/msm_sdcc.1/by-name
and it gives me a list with paths to different things. EFS apears to be at /dev/block/mmcblk0p12
I enter
Code:
# /sbin/mount /dev/block/mmcblk0p12 /efs
and it says: "tmp-mksh: /sbin/mount: not found"
When I try
Code:
adb devices
it gives me no number.
I attached a file where you can see what I did.
One more thing: when I enter (stock) recovery, every time it says "Installing system update" for about 20 seconds and then enters recovery where it says "failed to mount/efs : invalid argument". The CSC part is apparently ok.
..
It doesn't work. From ADB it says "mkdir failed for /efs, File already exists".
And from terminal emulator, (with busybox) it asks for an argument (pic atached).
Is there any way of using Odin to fix this, because it seems that nothing works.
fffft said:
Who is right about what? You didn't give much of a context for your question. The OP said that his EFS was corrupt, so we have been talking about EFS which is self contained in partition 12 or exported as efs.img.
Click to expand...
Click to collapse
i thought there could be more to the problem, not just /efs partition, since he said it was clear to him, and not beeing 100% fact..
..
Thank's for your time. I'm flashing now the original firmware (so I can start fresh) and I'll document every step I take. I'll report back.
Ok, I tried flashing the original firmware (ANE2) and this time I can't even get pass the Samsung authentication screen (the first time you boot your phone and asks for language, Google account, etc), It asks me for the Samsung account and password that this phone was registered with) and it tries for a couple of minutes to verify the credentials (on data network) then it fails saying it is a network error.
I tried wipe cache/factory reset (from recovery) and reinstall a different firmware. Same thing. It seems now it's really messed up.
As mentioned earlier, we did not expect a firmware image to fix your EFS. And the EFS is critical to normal phone operation.
The purpose of stock firmware is so that your phone is stable, reduce variables that might interfere and facilitate fixing your EFS. So I'm not why you apparently expected it to be an outright fix in and of itself?
Having installed the stock firmware should help you achieve your remaining goals. Now you need to decide if you are going to install a custom recovery or not. A custom recovery will increment your Knox flag if it isn't already. That affects very little, but it's your decision. It may affect the private mode feature or warranty claims, however many carriers don't care about Knox and E.U. legislation bars Samsung from invalidating a warranty unless they can demonstrate that root damaged your phone.
Whether or not you install a custom recovery, you will want to try writing your 14 MB EFS backup image to your phone. I believe that you'd find it easier to do so with a custom recovery. But it can be done with a stock one too, you will just have to deal with a bit more syntax in the latter case.
.
fffft said:
As mentioned earlier, we did not expect a firmware image to fix your EFS. And the EFS is critical to normal phone operation.
The purpose of stock firmware is so that your phone is stable, reduce variables that might interfere and facilitate fixing your EFS. So I'm not why you apparently expected it to be an outright fix in and of itself?
Having installed the stock firmware should help you achieve your remaining goals. Now you need to decide if you are going to install a custom recovery or not. A custom recovery will increment your Knox flag if it isn't already. That affects very little, but it's your decision. It may affect the private mode feature or warranty claims, however many carriers don't care about Knox and E.U. legislation bars Samsung from invalidating a warranty unless they can demonstrate that root damaged your phone.
Whether or not you install a custom recovery, you will want to try writing your 14 MB EFS backup image to your phone. I believe that you'd find it easier to do so with a custom recovery. But it can be done with a stock one too, you will just have to deal with a bit more syntax in the latter case.
.
Click to expand...
Click to collapse
I didn't expect to fix the problem, I wanted a fresh start so I can try again the adb/terminal emulator commands. But what I didn't expect was not being able to, basically, start the phone. When you first start a new phone (or after a factory reset) it asks you language, Wifi, Google account and, in my case, for a Samsung account that this phone was paired with.
If I try to connect to a Wifi network the phone reboots itself. If not, it tries via data connection. Google credentials are ok but when it tries to verify Samsung credentials it gets stuck saying that it's a network problem and it doesn't go futher. So I get stuck at this point, between booting and actually being able to use the phone. I can't install anything, I can't receive or make phone calls (like before). I can't go to USB debugging so ADB doesn't see the phone.
I don't want to install a custom recovery because my Knox is 0x0 and my warranty is intact. I live in EU but in this case, it's clear that root access is what got me in trouble and brought the phone in this state. Actually not root access got me in trouble, but what I did with root access
raducanmihai said:
I didn't expect to fix the problem, I wanted a fresh start so I can try again the adb/terminal emulator commands. But what I didn't expect was not being able to, basically, start the phone. When you first start a new phone (or after a factory reset) it asks you language, Wifi, Google account and, in my case, for a Samsung account that this phone was paired with.
If I try to connect to a Wifi network the phone reboots itself. If not, it tries via data connection. Google credentials are ok but when it tries to verify Samsung credentials it gets stuck saying that it's a network problem and it doesn't go futher. So I get stuck at this point, between booting and actually being able to use the phone. I can't install anything, I can't receive or make phone calls (like before). I can't go to USB debugging so ADB doesn't see the phone.
I don't want to install a custom recovery because my Knox is 0x0 and my warranty is intact. I live in EU but in this case, it's clear that root access is what got me in trouble and brought the phone in this state. Actually not root access got me in trouble, but what I did with root access
Click to expand...
Click to collapse
The only way to get your phone to work again and gain access to networks/wifi is by installing a new motherboard if you can`t restore the old EFS folder somehow.
Next time try this method to backup and restore your EFS folder http://forum.xda-developers.com/showthread.php?t=2737448 if you are rooted.
raducanmihai said:
I didn't expect to fix the problem, I wanted a fresh start
Click to expand...
Click to collapse
Sorry that you found it a surprise.. but if reinstalling the stock firmware eliminated your phones problems, that would make it a solution, whereas it's a stepping stone. I did try to explain this earlier, where I told you that installing the firmware would not fix your EFS. And the EFS is essential to normal phone operation.
Regardless of the surprise, you are now on a better footing to finish fixing your phone. But for clarity, your problem started when your EFS got corrupted somehow. And your EFS needs to be restored before the problem will be resolved.
On the positive side, you appear to have a EFS backup, even if the backup app won't easily restore it to you phone. If you stick with it.. you just have some minor hurdles remaining - syntax or whatever - in getting your 14 MB EFS backup restored (written) to your EFS partition.
If you want that done painlessly, then pack a case of beer and your phone into a box and ship it to me. And I'll return it fixed. As it seems unlikely that you'd do that though.. then try to provide as much info as you can here and someone will try to help you finish fixing your phone in this thread.
.

Apps Cannot Access Internal Memory after TWRP Recover

Background:
Trying out ROMs here and there, making backups along the way in TWRP. Turn out I had my favorite ROM from the start, so clean all the slates and performed a restore to Hybrid X Series 1.07. Everything is as it was...almost.
Apps are complaining about not being able to download to internal memory, there not being enough space, etc (there's plenty). Switching the download directory of these apps to the extSdCard is my current workaround.
What I've tried:
Fix Permissions from TWRP
Repair partition /data from TWRP using e2fsck
recursive busybox chown to 1001 on /data/media
restorecon on /data/media/0
This Fix Script Also found a similar flashable ZIP which did the same thing, but to no avail
None of these seem to have any effect. Also, trying to change permissions from Root Browser works on /sdcard, but not on any subfolders. Error returned is "Changing permissions was not successful. Please note that some file systems do not allow permission changes."
Any thoughts
funkeywoookey said:
Background:
Trying out ROMs here and there, making backups along the way in TWRP. Turn out I had my favorite ROM from the start, so clean all the slates and performed a restore to Hybrid X Series 1.07. Everything is as it was...almost.
Apps are complaining about not being able to download to internal memory, there not being enough space, etc (there's plenty). Switching the download directory of these apps to the extSdCard is my current workaround.
What I've tried:
Fix Permissions from TWRP
Repair partition /data from TWRP using e2fsck
recursive busybox chown to 1001 on /data/media
restorecon on /data/media/0
This Fix Script Also found a similar flashable ZIP which did the same thing, but to no avail
None of these seem to have any effect. Also, trying to change permissions from Root Browser works on /sdcard, but not on any subfolders. Error returned is "Changing permissions was not successful. Please note that some file systems do not allow permission changes."
Any thoughts
Click to expand...
Click to collapse
First off, this is an ownership issue, not a permissions issue
Second, chown 1001 gives ownership to Radio, not System. Chown to 1000 for System ownership
I never did find a solution to this problem. In my attempts to correct the problem, I ran chown on the entire /data partition by accident. The ROM booted, but everything crashed. After this, I just decided to salvage what little I might be able to save and move on with life.
The problem even persisted through wipe/reinstall of the ROM.
Finally, as a last resort, I had flash the stock version through Odin and start over from scratch.

How to do full system backup to PC?

Before I handing in my OnePlus 6T for repair, I want to create a full system backup and reset the phone to factory defaults. Afterwards, I want to restore the original state. My phone is rooted with Magisk.
How do I do a full system backup?
What I tried:
adb backup -apk -obb -shared -all -system: This finishes, but at 5.5GB, even if compressed, the backup file is suspiciously small. According to the settings app, my phone uses 55GB of storage, so ten times that!
OK, so I thought adb root needs to be run before. However, that doesn't work: adbd cannot run as root in production builds
So I installed the adb_root module. But now when I run the above backup command, then it simply quits. No backup is created.
feklee said:
Before I handing in my OnePlus 6T for repair, I want to create a full system backup and reset the phone to factory defaults. Afterwards, I want to restore the original state. My phone is rooted with Magisk.
How do I do a full system backup?
What I tried:
adb backup -apk -obb -shared -all -system: This finishes, but at 5.5GB, even if compressed, the backup file is suspiciously small. According to the settings app, my phone uses 55GB of storage, so ten times that!
OK, so I thought adb root needs to be run before. However, that doesn't work: adbd cannot run as root in production builds
So I installed the adb_root module. But now when I run the above backup command, then it simply quits. No backup is created.
Click to expand...
Click to collapse
Do you have TWRP on your device? If so, just backup everything with it and copy the TWRP backup folder elsewhere.
ALSO (with the help of PC) copy the /sdcard (emulated sdcard; media storage). TWRP itself does not do that.
Done.
The reinstall TWRP in your device and restore everything. And copy back /sdcard
By the way, this is not Magisk related. For more information, better ask in your device specific section.
wilsonhlacerda said:
Do you have TWRP on your device? If so, just backup everything with it and copy the TWRP backup folder elsewhere.
Click to expand...
Click to collapse
Thanks for pointing me in the right direction! Here's how I proceeded in the end:
Downloaded TWRP for my device.
Rebooted the phone into fastboot mode by pressing volume down plus the power button and following the menu displayed on the phone. Note the process of entering fastboot mode varies from phone to phone.
Connected the phone to the PC, then booted TWRP from the Windows command line (cmd.exe):
Code:
fastboot boot twrp-3.4.0-0-fajita.img
I installed fastboot as part of the Chocolatey package adb.
In TWRP, I entered my password, then selected Backup.
Backed up all partitions to internal storage. See also the TWRP FAQ: What should I back up in TWRP?
Note that not all partitions need to be backed up, and in fact, according to the TWRP FAQ, it may be a bad idea to restore certain partitions. Still, it doesn’t hurt to have the backup of all of them.
Not included is /data/media (internal storage). This needs to be backed up separately. See the TWRP FAQ: What is EXCLUDED from a TWRP backup?
With TWRP running, I connected the phone via USB to my PC. Then I moved the following folder to my PC, which contains the TWRP backup of the phone:
Code:
This PC\OnePlus A6013\Internal Storage\TWRP
This step is not strictly necessary as in the following step I did back up the entire internal storage. However, it makes the next step execute faster as less data needs to be copied. The next step does not give feedback about progress.
For backing up internal storage I decided on the method found in Tadej Janež’s article Backing up Android's /data/media (i.e. internal storage) using adb and TWRP. From the Windows command line I ran:
Code:
adb exec-out "tar --create data/media/0 2>/backup-errors.txt | gzip" >internal_storage.tar.gz
After completion, to check for errors, I ran (no errors):
Code:
adb shell cat /backup-errors.txt
To leave TWRP, I rebooted the phone. Note that it is not necessary to install TWRP.
Restoration still needs to be tested.
By the way, this is not Magisk related. For more information, better ask in your device specific section.
Click to expand...
Click to collapse
I thought there was a Magisk way of doing a full system backup, making use of root privileges. Now I know better.
you can also try Migrator of vr25.
{Mod Edit: TG link removed}
https://github.com/VR-25/migrator
Just use Migrate
End of story.....
datsoy said:
you can also try Migrator of vr25.
{Mod Edit: TG link removed}
https://github.com/VR-25/migrator
Click to expand...
Click to collapse
Thanks! This looks nice, but I already backed up with TWRP. The idea was to get a 1:1 binary backup, and the backup did work. However, I am running into issues during restore of the Data partition: Error 255 when trying to restore Data

[SOLVED] Restore decrypted nandroid backup of FBE

Tried restoring a nandroid backup of the data partition with twrp.
also copied the /data/media partition back from an external copy.
when booting up the phone immediately reboots back into twrp with an error message:
Android Rescue Party...
The reported problem is:
'--reason=set_policy_failed_:/data/vendor'
the vendor partition seems to be intact and i do have a backup of it taken at the same time as the data backup, restoring it doesn't yield results..
i'm wondering if FBE is throwing it off, as the backup was taken when the phone was decrypted (within twrp) however the data on the partitions is referencing some sort of encryption key?
you may also exhibit the following error upon bootup of a restored nandroid backup.
immediately after booting, the phone reboots back into recovery.
viewing the log in twrp will show:
Android Rescue Party...
The reported problem is:
'--reason=set_policy_failed_:/data/bootchart'
1. the solution to this is editing fstab.​​under twrp or other recovery​mount /vendor from the mount icon.​​in twrp: Advanced > File Manager > /vendor/etc/fstab.qcom​select edit file under userdata, find where it says fileencryption=ice​rename fileencryption to encryptable.​​Original​
Code:
/dev/block/bootdevice/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check,fileencryption=ice,quota,reservedsize=512M
​​Modified​
Code:
/dev/block/bootdevice/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check,encryptable=ice,quota,reservedsize=512M
​save file.​
2. next delete the following directories:​
/data/unencrypted
/data/misc/vold/user_keys
3. Lastly delete any of the existing files from /data/system/ :​
locksettings.db
Gatekeeper.password.key
gatekeeper.pattern.key
locksettings.db-shm
locksettings.db-wal
recoverablekeystore.db
password.key
pattern.key
4. Reboot and re-encrypt​​
At this point rebooting from recovery will result in a running and successfully recovery backup.
one thing to note is the data and data/media partitions are at this point unencrypted
TRYING TO REINCRYPT NOW WILL FAIL to reencrypt got to settings > security > re set your pin or password for the phone
(optional) then select encryption and there will be an orange button to encrypt device.
the encryption process will take quite a while as it will reencrypt your entire phone.
The above doesn't work as it's trying to accomplish FDE, and the fstab line for encryptable=ice, isn't compatible with this.
i could not find an fstab string to follow the same option but for FBE.
​
Thanks for sharing, nice guide to disable forced FBE encryption! I think this applies to Android 12+ in general, not just OnePlus devices.
I ended up with the same problem on my Mi 10 Ultra with MIUI 13 after a /data partition restore and it was a real pain to solve ("set_policy_failed:..." rescue party error for different directories). It's strange though why it fails to set the fscrypt policy for existing directories with no policy, correct permissions and SELinux context...
(Btw: whether a fscrypt policy is applied to a directory ("is this directory encrypted?") can be checked with fscryptpolicyget in terminal.)
Unfortunately, this didn't directly solve my TWRP backup restore problem and I still had to do a manual restore, but now I can at least disable FBE and it's always nice to have actual control over the device you paid money for (you should really have control by default, but oh well...)
(Some of) the troubleshooting I did:
Like I mentioned, I first thought the issue might be with the SE linux context, so I tried running restorecon, but this didn't help - I eventually found that in init.rc, restorecon is usually already automatically run during each boot for directories under /data/... so running it manually makes no difference.
To edit /vendor/etc/fstab.qcom (or /system) on my device, I had to first disable the shared blocks EXT4 optional feature. I followed this nice guide to unpack/repack super.img. But this is missing the step for disabling shared blocks: when I tried to mount any of the unpacked images (e.g. vendor.img) as R/W, it failed with the useless generic error:
wrong fs type, bad option, bad superblock on ...
Click to expand...
Click to collapse
Then dmesg gave me another clue, but at the same time was still cryptic and not immediately helpful:
EXT4-fs (loop*): couldn't mount RDWR because of unsupported optional features (4000)`.
Click to expand...
Click to collapse
So I guess 4000 is the code for shared blocks and you can disable these with e2fsck -E unshare_blocks <your .img file or loop device> (and probably need a filesystem check with e2fsck -yf <file>). Again very annoying that these numerical feature codes are not mentioned anywhere in the e2fsck manual pages for example.
Anyway, I was finally able to either:
1. mount vendor.img on my PC (mount -o loop vendor.img /mnt/vendor) and edit the /mnt/vendor/etc/fstab.qcom right there before repacking the .img and flashing the new edited super.img to my device
or
2. just repacking the vendor.img with shared blocks disabled and size increased (resize2fs vendor.img <new size>) and flashing the new super.img without other modifications - this way /vendor can also be mounted as r/w in Android and changes made later (mount -o remount,rw /vendor).
The worst part is that in the end, even with decryption disabled and the keys deleted, the device still wouldn't boot after a /data restore from TWRP (and after multiple days spent on debugging )... I still had to manually extract the TWRP backup and move directories/files individually - thankfully no issues with app/ or data/ - I think the problem was with some files in either system/ or misc/, but idk for sure. I just manually went through and kept only what seemed important (saved wifi APs, BT devices, SMSs etc, but not saved accounts). And after this it finally booted with all my apps and (most of) my settings!
(Btw2: a TWRP/nandroid backup is apparently just a bunch of separate tar.gz files, not a split archive, so you can just extract them with for file in ../data.f2fs.win*; do echo "extracting $file..."; busybox tar -xzf $file; done)

Categories

Resources