• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

Kill the kill switch - "ST - yy"

Search This thread

Bogdacutu

Senior Member
Nov 5, 2012
407
833
For those who are bricked, and since the APX drivers are not available.. would running Kali Linux distro or Wheelie help at all? perhaps going dirty with GRUB? save any chance of reviving a dead tablet?

APX drivers are available, but they aren't of much use, since nvflash requires the SBK which only Nvidia has. (and afaik wheelie doesn't work on our device, and even if it did, wheelie requires the device to work first so that it can get some blob from it)
 
  • Like
Reactions: sinichi21

Dashwood Foxe

Senior Member
Dec 23, 2014
159
54
APX drivers are available, but they aren't of much use, since nvflash requires the SBK which only Nvidia has. (and afaik wheelie doesn't work on our device, and even if it did, wheelie requires the device to work first so that it can get some blob from it)

Not even Kali Linux or GRUB? If you'd like, I can throw my tablet into APX mode and see if I can get Kali to recognize (I find it hard for kali to not recognize anything since the distro can recognize a piece of rock and get it somehow to run.)
 
Last edited:

Bogdacutu

Senior Member
Nov 5, 2012
407
833
Not even Kali Linux or GRUB?

GRUB is a Linux bootloader that doesn't really have anything to do with our device (since first off it doesn't run on our device, and second, even if it did, you can't flash it because you can't get into fastboot), and Kali is just a Linux distro with some "hacking" tools preinstalled. So no, not really.
 

Dashwood Foxe

Senior Member
Dec 23, 2014
159
54
Well worst comes to worst, I use my new tablet.. and seal away my old one until the "OTA death package" ceases distribution.
 

Shorty88jr

Senior Member
Jun 6, 2015
73
17
So this just deletes the file that contains the stuff for OTA updates which stops the kill switch correct? If it only removes the files but does not keep them from being installed what keeps Nvidia from updating a app for the tablet say the shield hub for example to add the files back to the tablet then kill the tablet?
 

Dashwood Foxe

Senior Member
Dec 23, 2014
159
54
Is there any way to get QuickCharge 2.0 working again on the new tablets? Ever since the 5.1.1 update from Nvidia on the old tablet (and now on the new tablet running 5.1.1) my quickcharge 2.0 charger is not charging at the faster rate anymore.

I believe Bogdacutu mentioned this feature was disabled since was it... 2.0? He looked into the source code of sorts which included a devnote from nvidia mentioning that QC was disabled to keep batteries from ballooning.
 
Last edited:
I believe Bogdacutu mentioned this feature was disabled since was it... 2.0? He looked into the source code of sorts which included a devnote from nvidia mentioning that QC was disabled to keep batteries from ballooning.

That could very well be.. Before the recall was announced I beleieve I was still running 2.0 or earlier, and then when I updated for recall is when I lost quickcharge... My battery never got even warm when using it though.
 

Bogdacutu

Senior Member
Nov 5, 2012
407
833
Well worst comes to worst, I use my new tablet.. and seal away my old one until the "OTA death package" ceases distribution.

If your old tablet was already hit by the OTA, it's too late

So this just deletes the file that contains the stuff for OTA updates which stops the kill switch correct? If it only removes the files but does not keep them from being installed what keeps Nvidia from updating a app for the tablet say the shield hub for example to add the files back to the tablet then kill the tablet?

Permissions. Theoretically, other apps don't have the permission to just download and install OTAs whenever they want.
 
  • Like
Reactions: Pelluuuh

sinichi21

Senior Member
Oct 14, 2010
1,170
345
Los Angeles
Yes (forgot to mention that on KitKat system apps don't each have their own folder)

Thanks man your right I have forgot that on 5.0 and up all the system apk have there respective forlder now, I just rooted with king root 4.5 now with breezed and delete the whole folder tegraOTA folder along with the apk inside it. Thanks hope we are right about this and preserve our tablet.
 

Bogdacutu

Senior Member
Nov 5, 2012
407
833

Dashwood Foxe

Senior Member
Dec 23, 2014
159
54
If your old tablet was already hit by the OTA, it's too late

Old tablet still functional and kicking, I flashed your "fix" as a preventative measure. just in case. I may power down this tablet and retire her until a later time when it's safe.

Great work by the way getting this looked at with such attention to details.

Now if we can get a hold of the SBK... or someone talented enough to compile one..
 
  • Like
Reactions: Bogdacutu

Shorty88jr

Senior Member
Jun 6, 2015
73
17
If your old tablet was already hit by the OTA, it's too late



Permissions. Theoretically, other apps don't have the permission to just download and install OTAs whenever they want.
I am not talking about OTA files I am talking about reinstalling the files for the Nvidia OTA application. They could add a download that checks if the folder is there and if it's not it creates it. Apps are allowed to create file or folders and if it was there it could be enough to start the OTA update system. Maybe that's a really crazy scenario but if they couldn't get the files restored they could ask google to allow them to link a file in the app that kills the tablet when the app is updated.
 

Bogdacutu

Senior Member
Nov 5, 2012
407
833
Now if we can get a hold of the SBK... or someone talented enough to compile one..

The Secure Boot Key (SBK) is device-specific and burned onto the chip when it's fabricated, and can only be read by the hardware AES engine (which will gladly encrypt/decrypt for you, but won't give you the actual key), so I doubt that will happen anytime soon. We can still hope though :)
 

Jackill

Senior Member
Jun 3, 2010
406
278
As mentioned in the OP, the update doesn't get delivered immediately after you activate the new tablet. But yes, the old tablet shouldn't get the update before the new one is activated.
I think that might be also something triggered by the delivery company. Most of the replacements are delivered by UPS...so UPS knows exactly when each of the replacements were delivered...they tell nvidia "hey serial 123456 is now delivered", nvidia adds 2-5 days and triggers the switch...
 

Top Liked Posts

  • There are no posts matching your filters.
  • 410
    < include generic disclaimer here >

    TL;DR

    Since update 3.1, Nvidia can force updates (such as the one that bricks your tablet) to be downloaded and installed silently. No guarantees, but:
    • If you're on stock, delete TegraOTA (/system/app/TegraOTA or /system/priv-app/TegraOTA if you're on 5.0 or newer, or /system/app/TegraOTA.apk if you're still on 4.4) before booting into Android (the attached ZIP file does this for you, but please check with the file manager in recovery before rebooting and let me know if it didn't work), then reboot
      Note: you also will need to delete TegraOTA again if you ever install an OTA from Nvidia or a recovery image
    • If you're not on stock, you're probably safe
    EDIT: The urgent OTA is currently not getting sent out to any devices anymore, not even to those who have been getting it before.
    EDIT 2: The urgent OTA is now being delivered again, this time named "ST - yy"!

    What if my tablet is already deactivated?

    Unless you can still boot into fastboot mode (in which case your tablet isn't really deactivated yet), your tablet is probably gone for good. The only way to fix this would be through nvflash, and using it requires the SBK that is unique to each device and that only Nvidia knows, so it's pretty unlikely that we'll ever be able to fix these deactivated tablets.

    What/why/how?

    In the last OTA (Update 3.1), Nvidia has made some changes to their TegraOTA application. The most important/interesting/suspicious of which is the ability for them to mark OTAs as "urgent". What this means is that these updates will be downloaded without ever notifying the user, and they will be installed without asking the user for permission first. If this is how the kill switch is delivered, all users will see is the tablet randomly rebooting and installing an update, then the tablet would never boot again. As some of you might notice, this would match what has been happening to a few users already, both here and on reddit.

    But that's not all. I've been connecting to the OTA servers using various serial numbers (both found and provided to me by a few people) in hopes of actually finding the update that bricks the device. The first serial number I've tried that wasn't mine was the serial number from the screenshot on the recall page. It revealed an interesting "urgent" OTA, named "SHIELD Tablet xx - LTE", which does nothing but flash a blob (which, among other things, contains the bootloader). Many more questions appear now, but the main one is: if this is nothing but a routine bootloader update, why is it marked urgent? And why is it not attached to any Android update? But this by itself is not enough to prove anything, as I could only obtain it with one serial number, so as far as I could have known, it might had just been an internal update or something similar. (update is linked and analysed in the second post below)

    Today, however, one of the serial numbers I've been given by some of the people here (thanks for the help guys!) turned out to have the same update waiting for it the next time it connected to the Internet. This rules out the possibility of an internal update, so the next somewhat obvious possibility is that this is the kill switch. Mind you, I still have no direct way of proving this without flashing the ZIP to see what happens (which I'm not planning to do myself), but I will keep checking on the other serial numbers I've gotten to see if this update turns up for them too.

    The same person who has given me this serial number has also tested running the old tablet on the latest stock Android version but with TegraOTA removed, and, as expected, the tablet is still working perfectly fine now. Your mileage may vary.

    How can I know if the kill switch has been triggered for my tablet?

    Go to http://shield.bogdacutu.me/ and enter the full serial number of your old tablet. If the next OTA returned is "SHIELD Tablet xx" "ST - yy", the kill switch has been triggered for your tablet.
    Warning: the serial number from the box of the tablet and the one etched on the side of the tablet are not complete, as they only contain the first 13 characters of the full (20 characters) serial number. You can get the full serial number from Android (Settings -> About -> Status), from the bootloader (it will be on the screen when you boot into bootloader mode), or from your computer if the tablet is or (in some cases) if it was previously connected, using various tools such as USBDeview. Example: 0413714803249000a4cf (you can try this on the page and it will return that the kill switch is activated).

    Why would I want to also do the fix on my new tablet too?

    The update is signed by Nvidia, and communication with the OTA server does not use HTTPS, so, for example, a malicious WiFi network could MITM your connection and cause this update (as well as any other signed update) to be flashed to your new tablet without your permission, thus permanently disabling it too. If you have the stock recovery, only updates signed by Nvidia can run. The story might be slightly different if your recovery doesn't enforce signature verification (such as TWRP and CWM by default).

    Can I still get updates from Nvidia after doing this?

    Not directly, but people will post OTA download links here on xda when new updates get released. I'd personally recommend that you wait before flashing though until someone here checks the new update to confirm that there's no new way for Nvidia to kill your tablet.


    Many hours of work have gone into investigating this. Even if it doesn't help your specific scenario, consider hitting that Thanks button, so that I can at least know it wasn't for nothing. :)
    I'd also like to thank the people who have given me their serial numbers to use for testing again, this wouldn't have been possible without their help: @Beauenheim, @Jackill, and @runandhide05 (who has even volunteered to test removing TegraOTA with the latest update on his old tablet :highfive:)
    19
    Fragments of code from TegraOTA.apk

    < screenshots temporarily removed >

    Also, from what I've seen so far, the update isn't delivered instantly after activating the new tablet. I don't know exactly what the rule is, but out of the 4 serial numbers that I have, only 2 have this update waiting for them.

    EDIT: One more serial number from the ones I have has gotten the xx update. Only one left...

    EDIT 2: All the serial numbers I have have the urgent OTA waiting for them now.
    18
    "SHIELD Tablet xx" - Update Analysis

    OTA URL: http://ota.nvidia.com/ota/data/post...wf-full_ota-32256_554.0168.20150624152335.zip
    yy OTA URL: http://ota.nvidia.com/ota/data/posted-roms/uploaded/st---yy--092704233775---7294.20150819152732.zip (if you don't know what you're doing, DO NOT DOWNLOAD THIS, it's very likely that this will permanently brick your device upon flashing it!!!) - also attached to this post in case this link becomes invalid

    updater-script is the first file we check:
    Code:
    getprop("ro.product.device") == "shieldtablet" || abort("This package is for \"shieldtablet\" devices; this is a \"" + getprop("ro.product.device") + "\".");
    nv_copy_blob_file("blob", "/staging");
    reboot_now("/dev/block/platform/sdhci-tegra.3/by-name/MSC", "");

    Suspiciously enough, this only flashes a blob to the staging partition. But what exactly does this blob do, you might ask? Well, the blob actually contains data for 9 partitions, which are automatically replaced during the next boot (before the bootloader does anything else at all, so once you've rebooted, there's no going back) with the contents present in this blob. The 9 partitions are as follows (also detailing comparison with files from update 3.1):

    • BCT (Boot Configuration Table) - stores some information that is needed for the device to find the bootloader stored on the other partitions, initialize the RAM and some other stuff
      Status after update: probably corrupted - the previous OTAs have binary BCTs, but this update replaces it with a text file (which, while it does contain somewhat relevant information, is likely not a valid format). If this is corrupted, it's enough for the device not to be able to boot anymore.
    • BMP (boot logo) - intact
    • DTB - intact
    • EBT (part of the bootloader) - has a zeroed out region
    • NVC (part of the bootloader) - intact
    • RBL (part of the bootloader) - has a zeroed out region
    • RP4 (landscape boot logo) - intact
    • TOS (Trusted OS - probably part of the bootloader too) - has a zeroed out region
    • WB0 (related to the boot process, source file is named "nvbootwb0.bin") - has a zeroed out region
    The update also contains a few other files, but those are not used at all (probably leftovers from the 5.1 AOSP update template that they are using).

    DO NOT DOWNLOAD THE ATTACHMENT IF YOU DON'T KNOW WHAT YOU'RE DOING. THIS IS THE XX OTA, NOT THE ZIP THAT REMOVES TEGRAOTA!
    10
    I don't mind the OTA app on my new tablet, but I don't like the ability to just download silent updates. That concerns me, especially considering legitimate tablets getting nuked.

    I made the attached Xposed module if you're running 5.1.1 that will disable the silent download method. It will also mark "urgent" updates as no longer urgent (thus they will show a notification instead). This means you can theoretically have the OTA app installed on your terminated tablet. But you will have a persistent notification for an OTA available. Screenshot of this on my terminated tablet is also attached (for fun, don't do it on yours, I can't/won't be responsible).

    So if you'd like the peace of mind of not having silent updates snuck past you even on your perfectly good tablet, install this Xposed module. I only tested on 5.1.1 by the way.

    Code:
    package biz.underpants_gnomes.android.xposed.mods.nvsilentupdatekiller;
    
    import android.content.Context;
    
    import java.lang.reflect.Array;
    
    import de.robv.android.xposed.IXposedHookLoadPackage;
    import de.robv.android.xposed.XC_MethodHook;
    import de.robv.android.xposed.XC_MethodReplacement;
    import de.robv.android.xposed.XposedBridge;
    import de.robv.android.xposed.XposedHelpers;
    import de.robv.android.xposed.callbacks.XC_LoadPackage;
    
    public class NVSilentUpdateKiller implements IXposedHookLoadPackage {
    
        @Override
        public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) {
            if (!lpparam.packageName.equals("com.nvidia.ota"))
                return;
    
            try {
                final Class<?> mClsRomInfo = XposedHelpers.findClass("com.nvidia.ota.utils.RomInfo", lpparam.classLoader);
                XposedHelpers.findAndHookMethod("com.nvidia.ota.UpdateCheckService", lpparam.classLoader, "silentDownloadUpdate",
                        Context.class, mClsRomInfo, XC_MethodReplacement.returnConstant(null));
    
                final Class mClsArrOfRomInfo = Array.newInstance(mClsRomInfo, 0).getClass();
                XposedHelpers.findAndHookMethod("com.nvidia.ota.utils.RomInfo.FetchInfoTask", lpparam.classLoader, "onPostExecute",
                        mClsArrOfRomInfo, new XC_MethodHook() {
    
                            @Override
                            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                                if ((param.args[0] == null) || (Array.getLength(param.args[0]) == 0)) { return; }
    
                                Object mRomInfo = Array.get(param.args[0], 0);
                                XposedHelpers.setBooleanField(mRomInfo, "urgent", false);
                            }
                        });
            } catch (Throwable t) { XposedBridge.log(t); }
        }
    }
    8
    Got The Urgent one of my my Tablets

    First of all, would like to thank Bogdacutu for all the research and work done.:good::good::good: Never rooted or flashed anything Android, the last experience I had with any type of root/jailbreak was with an Iphone 4 - redsn0w (no longer an Apple user). Anyway, I have 2 Shield Tablets, so did the whole recall process, got my replacements in the mail and left them untouched. I'm not anywhere near developer or programmer level, but I can work my way around PC's (built 5 desktops), but figured someone would figure out how to bypass this killswitch. Honestly I've had my original tablets since last November, and never really had a problem of them getting super hot, so definitely did not want to send these back. Followed Bogdacutu's instructions and with some simple research (Not asking on this thread) I first had to root, flash TWRP, flash 3.1 OTA, then flash nomoreota.zip to remove the TegraOTA folder and TegraOTA.apk, and today, via Bogdacutu's link, noticed one of them is pending the "Urgent update of Death!" So. out of curiosity..just restarted the tablet with the killswitch and booted up fine. :victory:. Been reading this thread since it was only 1 page and haven't really found stating if this actually worked after following Bogdacutu's instructions and then activating the new tablet. Well, so far my tablet restarted and all is well, i'll try again and restart tomorrow to see what happens. And guys, stop asking Bogdacutu how to root, flash, etc. Youtube is an amazing thing nowadays. Follow these links for those instructions and lets keep focused on results! Again, thank you Bogdacutu. Here's youtube links to root, flash, etc. and of course DON'T forget to flash nomoreota.zip (download link via OP) , literally this is all you need.

    https://www.youtube.com/watch?v=Ocar8LJZlt0
    https://www.youtube.com/watch?v=5BZGleRdqPk

    3.1 OTA, click on Download>OTA>Full, pick your model ...
    http://forum.xda-developers.com/shi...k-recovery-images-ota-library-guides-t2988881