Firstly I need to say that I know this topic has been discussed many times but none of answers helped and I think this question is somewhat different than the others.
I have tried to root my Android 4.2.1 phone trying various automatic methods, where all of them failed. Also rooting using update.zip
does not work due to "Invalid OTA, missing scatter" error.
However I am able to get root access using "adb root
" command so I have tried to root my phone manually:
- '
adb root
' and 'adb remount
' commands to gain access to system partition - downloaded newest su binary (version 3.1.1)
- pushed it to '
/system/xbin/su
' - set suid and sgid bit:
'chmod 6755 su'
-->ls -l
displays'-rwsr-sr-x root root 380532 2008-02-29 02:33 su'
- linked '
/system/xbin/su
' to '/system/bin/su
' - installed newest Superuser from Google play (3.1.3)
- installed busybox (though this is not necessary if I understand correctly?)
Now it gets interesting:
When I 'adb shell
' into my phone, I can use 'su
' command and automatically get root privileges ($ changes to # and I can access root's files), and it is logged in Superuser app with originator as 'Shell'. BUT when I try application that needs root, it takes long (10 seconds) and then it fails (I have tried 'Root Checker Basic' from the store).
The Superuser app never shows any popup, also it is not in the log. It seems that it automatically denies all requests.
So here is my question: Have I done all steps correctly? (maybe I am missing something very important)
I am quite desperate right now (spent nearly 2 whole days trying to have this done), so I would even resort to solutions as editing some Superuser config files and enabling root access for app manually.
PS: If you need additional info, just ask, I will try to fill information if possible
Further investigation:
- setting auto-allow in Superuser does not work either
- running
su
from terminal throws exception: java.lang.SecurityException: broadcast asks to run as user -1 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS. So I need to set this permission somewhere..
su
be owned bysystem:system
? AFAIK there's no user "root" on Android devices (hence the "invalid" negative userID, I guess). Maybe you trychown system:system /system/xbin/su
and see if that does the trick. Please report back: if it works, I'll make this an answer.id
command. // Btw, I just checked on one of my devices, and have to take back my previous guess:su
shows up as-rwsr-sr-x root root
, just the size differs (104800 2013-12-31 23:32 su
on my ICS device). Maybe your Superuser has an issue? Checkls -l /system/app/Super*
, mine gives me-rw-r--r-- root root 570342 2012-01-01 04:41 Superuser.apk
.su
. I have tried several 3 or 4 versions and none matched in size. Could you please checksu -v
for its version? And whichSuperuser
app are you using (by which I mean from who)?1.86:SUPERSU
) on a 4.0.3 LG O4X here (that's the device I've checked). AFAIR I've got chainfire's superuser on my other devices.