Some of the information below also applies to the 37MiB update, but I have no idea what, so don't ask me. Do, however, feel free to give any extra information you have regarding the 58MiB patch.
- It is not possible to use the AIO tool to root your phone while the 58MiB patch is applied.
- It is possible to downgrade by flashing the 299MiB update.zip, but this tends to mess up the screen, needing an HDMI cable to actually do anything
- Both recovery from this state and obtaining a 58MiB-patched rooted OSD are possible, and that is the subject of the next part of this post.
Recovery from the flashing-screen state is probably easiest to do by using fastboot to apply the 58MiB patch. This is the method I'm going to suggest, but it's also doable by changing the GPU drivers in use (which has the advantage that it's not necessary to apply the dreaded patch) or by using HDMI output to OTA-upgrade (which has the advantage of not needing to have fastboot installed on your PC). That said, the purpose of this post is to provide information about the patch, so that's the only method we'll discuss here.
THIS IS SLIGHTLY TECHNICAL, but frankly I don't think the rooted 58MiB-patched version of the ROM is ready for use by those who can't handle a bit of technical stuff yet (and if you disagree, feel free to update the AIO tools and drop me a link so I can put it in my mirror of such things).
IF YOU ARE A NON-TECHNICAL PERSON, STICK TO STOCK ICS (with as many changes using the AIO tools as you like)
So, to obtain a patched-yet-rooted phone (the same principle, adjusted as appropriate, should work for the 37MiB patch (but why would you bother?)):
- Gather your tools:
- Ensure that you have both adb and fastboot installed on your PC. As mentioned, I'm writing for a relatively-technical audience, so I'm sure you can work out how. Bear in mind that fastboot will need the "-i 0x8087" option and under Linux may need to be run as root. If your phone is in the bootloader and fastboot still hangs on "<waiting for device>", try running it as root.
- Make sure you have both the Xolo stock ICS 299MiB update.zip and the corresponding 58MiB update.zip.
Both can be found on my server at http://darael.tpchq....ego/updatezips/ if you don't have them already. Unfortunately my mirror suffered a hard drive failure and I no longer have these files. See post 7 in this thread for another way to get the 58M update.zip. The former you'll only need to get back to stock if you aren't there already, but hey, it can't do any harm (unless you really can't afford to download 299MiB)
- Disable anything you applied with the AIO tool that is listed in this post's final section as not working with the patched ROM. Fail to do this and you will be stuck in a bootloop and have to use fastboot to get out of it - if you find yourself in that situation, follow the advice on doing this whole thing a second time, hidden in my explanation for the use of fastboot in Step 5.
- Back everything up. You shouldn't need to, but it's safest, just in case anything goes wrong.
- Enable USB debugging. If you haven't done that automatically knowing what we're doing... shame on you.
- The next two steps can be skipped if you run through this process a second time (or more) on a given phone, as the changes made will persist pretty much whatever you do to it.
- Now you need a root ADB shell. If you've applied the 58MiB update, then the first time you do this you'll need to downgrade and use the AIO tool to change the graphics drivers in use, or use an HDMI display to re-root. Sorry. There are guides elsewhere on this forum.
- Having obtained a rooted, stock-ICS phone, you can begin your prep. su and busybox are in /system/xbin/. You're going to need spare copies of these, because the 58MiB update will remove the suid and sgid permissions from su and may delete busybox. As such, you need to stick copies somewhere that a) doesn't ignore suid and won't be overwritten by the update. A quick look at the output of "mount" on the phone suggests /config is a good bet (and it is. I tried it. It works.). Problem is, it's mounted read-only. As such, we'll need to remount it. I'll give the command to do that in a sec, but first: The next thing is to make a new directory in /config - I'll call it reroot - and finally to copy su and busybox there. The commands, in that order (with remounting /config read-only at the end for neatness) are as follows:
mount -o remount,rw - /config mkdir /config/reroot cp /system/xbin/su /system/xbin/busybox /config/reroot/ mount -o remount,rw - /config
- It's time to apply the update. We're going to use fastboot rather than anything while the phone is booted, because it's much easier the second and later times one runs through this process due to not needing the screen to be usable (fastboot "update" to stock, use adb to reboot to the bootloader, fastboot to apply the patch). Now, you can get the phone into the bootloader by powering it off, then on while holding the volume-down button, sure, but there's an easier way. Issue "adb reboot-bootloader" on your computer. This will also work if the dash is replaced with a space.
- Now that you're in the bootloader, flash the update. I'm going to use /path/to/58M/update.zip as a shorthand, but if you're on Windows then you need to use Windows-style paths with backslashes and a drive letter if appropriate... obviously. This is done as follows: "fastboot -i 0x8087 flash update /path/to/58M/update.zip"
- The phone should reboot, and you'll be in a fully-functional (but unrooted) patched ICS. If you get bootlooped instead, you applied some mod or other that disagreed with the patch. Use fastboot as above to revert to stock ICS, then immediately again to patch it - YOU DO NOT NEED TO REDO STEPS 1-4, which means you also do not need to be able to see what you're doing as you can use adb to get into the bootloader since USB debugging should still be enabled. After we're done here you can apply the mods from the tool one at a time to see which caused the bootloop, and get back to me so I can add it to the incompatible-mods list.
- Finally, it's time to regain root. Here's how. First, get an adb shell. It won't be a root shell but that doesn't matter right now. Then issue the following commands:
/config/reroot/su #this should work, and the last character of the prompt change to # - you're acting as root mount -o remount,rw - /system #mount /system read-write cp /config/reroot/su /config/reroot/busybox /system/bin #note NOT /system/xbin. Don't know why but that no longer works. reboot #not strictly necessary but does no harm and keeps things clean exit #you may or may not get the chance before the reboot terminates the shell anyway exit #see above (first exited su, second exited adb shell)
Be aware that you can skip everything past the hash (#) in those lines *or* leave it in. They're comments and will have no effect either way.
- Your phone will reboot. Congratulations; you have a rooted 58MiB-patched phone, and root-using apps should work fine (including insecure ADB, SuperUser, &c.).
Now, three more things and then I'll shut up for a bit.
Firstly, some of the options in the AIO tool are irrelevant to a phone in the state we've just got to - rooting, especially, would be kind of pointless since it's already rooted. Don't bother! I'll mention others
The following options from the AIO tool are confirmed to work on a rooted phone with the 58MiB patch - if something's not listed here or in the next list I for one would be grateful if someone would try it out and see whether or not it works:
- Brick-fixing (of course; it works regardless of the ROM on the phone. Just uses fastboot.)
- Reverting to stock Xolo
- Flashing boot logos
- Enabling the µSD card slot
- Swapping the internal storage and the card in the µSD slot
- Probably others. More testing needed.
The following I know NOT to work after applying the 58MiB patch and rerooting (and if anyone wants to provide fixes, I am happy to host them, but dev discussions should probably go in the main dev thread, or threads of their own, rather than here):
- The "enable both SD card" option. This WILL bootloop the phone. Personally I suspect framework-res.apk rather than MediaProvider.apk to contain the conflict but I haven't the skill to prove anything.
- Probably others. More testing needed.
Edited by Darael, 14 March 2014 - 12:24 PM.