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

Kill the kill switch - "ST - yy"

Search This thread

Dashwood Foxe

Senior Member
Dec 23, 2014
159
54
Strange, My old tablet is still working, days after the first killswitch incident.. I'm on stock firmware (3.1) that's been rooted, custom recovery and kernel. I'm not sure why my old tablet hasn't died yet, it's been a few days since I activated my new replacement (which of course I have reboxed after making sure everything was functioning until such a time warrants me to use my replacement). It could be the fact I factory flashed kitkat prior to activating my replacement and pushed the full OTA through TWRP... Could that be something keeping my old tablet alive?
 

Bogdacutu

Senior Member
Nov 5, 2012
407
833
Strange, My old tablet is still working, days after the first killswitch incident.. I'm on stock firmware (3.1) that's been rooted, custom recovery and kernel. I'm not sure why my old tablet hasn't died yet, it's been a few days since I activated my new replacement (which of course I have reboxed after making sure everything was functioning until such a time warrants me to use my replacement). It could be the fact I factory flashed kitkat prior to activating my replacement and pushed the full OTA through TWRP... Could that be something keeping my old tablet alive?

As mentioned in the OP, the urgent OTA doesn't get sent out immediately (I have 2 serial numbers from people who have had their new tablets activated for a few days, but who don't have the urgent OTA waiting for them yet)
 
  • Like
Reactions: dexpid

Keithn

Senior Member
Feb 24, 2011
859
242
Good work, I'm glad you could figure it out. For the most part it was doing about what I expected that they would try. I opened up the TegraOTA.apk a few days ago but I didn't get anywhere with it. Good find for newer/non-defective tablets too.
 

tecnoworld

Senior Member
Jul 17, 2011
74
1
I applied the zip from cwm. Now i can't find the whole path (system/app/tegraotg). Is this normal? Thx.
 

tecnoworld

Senior Member
Jul 17, 2011
74
1
Thanks! I thought it would delete just the apk or the inner folder.

Thanks again for your time and efforts.

P.s. a friend asks if with a non stock rom like blisspop he is safe.
 

Keithn

Senior Member
Feb 24, 2011
859
242
As mentioned in the OP, the urgent OTA doesn't get sent out immediately (I have 2 serial numbers from people who have had their new tablets activated for a few days, but who don't have the urgent OTA waiting for them yet)

Do you know if the older updater has the capability of pushing "urgent" updates as well? I'd just remove it either way to be sure, but it could explain if the risk is still there for people on older versions.
Also could you tell me what you used to extract the blobs? Thank you.
 

Bogdacutu

Senior Member
Nov 5, 2012
407
833
Do you know if the older updater has the capability of pushing "urgent" updates as well? I'd just remove it either way to be sure, but it could explain if the risk is still there for people on older versions.
Also could you tell me what you used to extract the blobs? Thank you.

It does not, but I wouldn't trust it anyway. For all we know, they might also be pushing this update disguised as a normal Android OTA (they can't install it automatically on older versions, but they can trick you into thinking it's a normal update). For unpacking the blob, I used blobunpack from here: https://github.com/AndroidRoot/BlobTools
 
Last edited:
  • Like
Reactions: dexpid and Keithn

Shorty88jr

Senior Member
Jun 6, 2015
73
17
when I flashed this on my tablet I assumed I couldn't get OTA updates anymore correct. Will urgent or non urgent updates possibly be able to create the folder again? If the folder is created again we should run the zip again correct? I really appreciate all the work you have done on this. I have flashed this on my new tablet but not my old one because my old one has bliss pop. I did flash it on my new one because of the security problems.
 

Bogdacutu

Senior Member
Nov 5, 2012
407
833
when I flashed this on my tablet I assumed I couldn't get OTA updates anymore correct. Will urgent or non urgent updates possibly be able to create the folder again? If the folder is created again we should run the zip again correct? I really appreciate all the work you have done on this. I have flashed this on my new tablet but not my old one because my old one has bliss pop. I did flash it on my new one because of the security problems.

You won't be getting any OTAs at all anymore, and TegraOTA won't reappear unless you flash the recovery image, or an OTA, or similar. You'll also have to flash full OTAs from now on if you want to update to newer versions released by Nvidia (and remove TegraOTA again afterwards, although things might change until then, so probably best to wait for someone here to take apart the OTA first).
 
  • Like
Reactions: dexpid

Shorty88jr

Senior Member
Jun 6, 2015
73
17
You won't be getting any OTAs at all anymore, and TegraOTA won't reappear unless you flash the recovery image, or an OTA, or similar. You'll also have to flash full OTAs from now on if you want to update to newer versions released by Nvidia (and remove TegraOTA again afterwards, although things might change until then, so probably best to wait for someone here to take apart the OTA first).
Ok I only did it on my new tablet for security reasons so I should be ok to flash new OTA files right away since I shouldn't have to worry about the kill switch for that one correct?
 

Dashwood Foxe

Senior Member
Dec 23, 2014
159
54
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?
 

sinichi21

Senior Member
Oct 14, 2010
1,170
345
Los Angeles
Nope. You need either root so that you can remove it manually through a file manager (somewhat risky if it's connected to the internet), or a custom recovery so that you can use the provided ZIP.

So I just need to delete the file right? I do not need to flash any custom recovery just the root the device right? If I may ask what is the path that I need to delete? thank you very much for this finding
 

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