How the Nintendo Switch prevents firmware downgrades
hackernoon.com
hackernoon.com
It actually is litte bits of wire inside silicon that get over-current'ed and do burn away. And then a read operation returns "Disconnected".
There's no way to 'reconnect' a eFuse, in the way there's no way to reconnect an automotive fuse. So yes, eFuses are a form of hardware destruction.
Whether or not that is descriptive of the physical process that's occurring, it certainly seems to be a reasonable term for anybody to use to talk about the functionality of eFuses.
EPROM back in the day used to work like this. You’d use an ultraviolet light to remake all the fuses when you wanted to wipe and start again.
Flash came along then and made these technologies obsolete.
Doesn't make it right. It does not sound like a design decision made on the behalf of the consumer. This is planned obsolescence.
At least when Microsoft forced people to update to Windows 10, you could still install Windows 7 later if you really wanted.
But your iPad or phone can go from being fairly usable and fast, to being slow and useless with the last update. And it almost always does.
What on Earth makes you think this?
I could have gotten many more years of usability out of it, but they nearly bricked it with an update that I could not say no to.
After all, this doesn't prevent people from NOT upgrading, it just prevents them from un-upgrading. It adds the ability for the company to release whatever they want as the "last" upgrade and be sure that no one (of ordinary consumers) would be able to undo it. That last upgrade COULD be wondrous and happy...or it could be a massive degradation of performance. In the former case, there's not much of an argument for forcing people to be unable to leave it. But effort was expended to make that the case, so planned obsolescence seems a reasonable conclusion.
More generically, this feature exists so the company can change the product after you purchase it and you can't undo that change. Planned obsolescence is your product not longer working "as well" as it did initially, forcing a replacement. Those concepts seem awfully close.
iOS10 is far too slow for her iPad 4, to the point where the onscreen keyboard lags severely. And many of her favorite apps no longer work.
I somehow doubt that it would be in any company's best interest to leave older devices on the market that compete with new devices.
Secondly, I've seen this happen to other iOS devices, in a clear progression.
I can at least understand game console developers doing this. But it has become standard practice now.
I forgot my new pin on my iPad, and Apple forced me to take an update that I didn't want in order to restore it, which broke several features that I liked[1]. After iOS8, there is no way to decline updates, they will just keep getting downloaded.
My mother and grandmother both had their iPads hobbled by destructive updates as well. My Mom was going to give her old iPad 4 to one of her students so they could use this learning app, but Apple updated her iPad while she was sleeping one night, and iOS10 is so slow it is barely usable.
Can we please stop excusing this behavior by using neutral language? Companies clearly know that these updates are unwanted, or else they would let your roll them back. Retroactively removing features and damaging devices that people have paid for should be illegal.
No reason for constant feature updates to keep the cyber world secure. It's a shame some software vendors bundle them together inseparably.
That is totally sustainable. It's effortful — and they can get away without doing it — "when they can just tell everyone to upgrade to the latest build". Just because they can do something doesn't mean its alternative is not "sustainable".
> Less required QA, less wasted engineering time.
For the vendor yes. More headaches for the user when features they liked are removed or features they didn't like or want are pushed on them. But that was already accepted as inevitable when buying into the Apple ecosystem, which brings me back to my original point: non-user-hostile software.
In any case, I'm not sure why anyone should care about saving money for Apple. As a consumer I should look for the best deal for me, not ways to funnel more money into their pockets. They are very capable of taking care of that themselves.
LineageOS, a free, volunteer-run open source mobile OS, maintains and backports security patches for n-2, n-1, and n Android versions for phones.
Red Hat, the maker of RHEL, a paid, open-source OS — and its free, open-source duplicate CentOS — maintains and backports security patches for 10 years.
Microsoft Windows 10, a paid, closed-source OS pushed aggressively by Microsoft to the point of being sued, bundles feature and security updates on users like every real-world installation is for beta-testing. The LTSB branch is not available/accessible to individual users, and it looks like that will also start bundling feature updates with security updates.
Apple's iOS, a paid, closed-source, locked-to-hardware OS that supports devices sold in the past three years bundles feature and security updates and aggressively pushes updates on people's devices. There is no LTS branch of iOS.
It's not like the kernel and drivers are spread across disparate layers of the iOS stack. It's not like iOS doesn't have libraries and system services and thus has to duplicate code across disparate layers of the iOS stack. It's not like Apple can't or doesn't have special code accessible only to Apple's apps and iOS internals.
As of right now, there are only a handful of hardware configurations iOS has to support, and a single software configuration. Compared to the tens of different hardware and software configurations LineageOS has to support, or the hundreds of different hardware and software configurations Ubuntu and Red Hat have to support, or the thousands of different configurations Microsoft has to support, Apple's job here is a lot easier.
The gnu/linux stack is richer and more complex.
Compared to other companies Apple does an amazing job of supporting older hardware.
I feel like it’s a double edged sword, if Apple devices didn’t get updates people would complain, Apple updates older devices and people complain.
I think the route they have chosen is the best for most normal none techie consumers.
iOS devices do not update on their own without any user intervention. In order to schedule an overnight upgrade, you have to agree to it then enter your PIN...
> Companies clearly know that these updates are unwanted, or else they would let your roll them back.
That statement makes no logical sense at all. The reaason they prevent downgrades are to reduce support costs, to ensure broad compatibility, and because of security flaws in older versions.
That's a reason, not the reason. I'm sure you can think of many other reasons a company would want to prevent downgrades that they won't tell you because it's "user hostile".
For example, say an exploit is found in the Nintendo Switch that allows arbitrary code execution. People use that to load emulators, homebrew games, pirated games, you name it into their Switch console. Nintendo does not like this, so they force an upgrade on everyone, lock it from being downgraded, and now anyone who upgraded can no longer do that. They'll chalk it up to security of course, because what company will flat out say they don't want their users to have the ability to run unsigned code on "their" device?
[0] http://en-americas-support.nintendo.com/app/answers/detail/a...
While you might be correct that updates also bring in fixes and new features, major updates can radically change the UI, and you're stuck with it even if you don't like it. Not being able to reset a consumer device to its factory state is a backwards mentality that users should protest at every opportunity.
As for phones slowing down as time goes by, no shit - they're hardly likely to get faster as iOS becomes more complex, but Apple goes to extreme lengths to support older phones in a way that no Android phone manufacturer - including Google itself - even comes close to.
Personally I think it's ridiculous that Apple doesn't at the very least allow developers (i.e., people who have paid the $99 yearly fee) to downgrade their devices to a previous iOS version, but I don't think they're trying to "trick" anyone.
>As for phones slowing down as time goes by, no shit - they're hardly likely to get faster as iOS becomes more complex,
Heres an idea to NOT slow them down - Let the user reset them to the factory state.
> but Apple goes to extreme lengths to support older phones in a way that no Android phone manufacturer - including Google itself - even comes close to.
If slowing down phones to the point of becoming unusable is "supporting them", then I would gladly do without their "support".
>Personally I think it's ridiculous that Apple doesn't at the very least allow developers (i.e., people who have paid the $99 yearly fee) to downgrade their devices to a previous iOS version,
I don't feel like extorting another $99 (on top of the insane profit margin that ends up in a pile of cash - i.e. not invested in creating more products or towards apple employees) is an acceptable solution in the slightest.
As someone who has to share the Internet with your device: good.
If your device is offline and doesn’t have a persistent connection to the Internet, I would understand. But for an iPad or iPhone who spend virtually all of their useful life more or less permanently connected to the Internet? Update. It would be better if there were an option to remain on the current version but with access to anything not on a private network disabled after some period of time (say 6 months).
iOS devices will download a 800M update package over and over again, and then present you with the option of installing the update now, or between 2AM - 5AM the next day, at which point you must enter your pin, and only then, can you decline.
> That statement makes no logical sense at all. The reaason they prevent downgrades are to reduce support costs, to ensure broad compatibility, and because of security flaws in older versions.
They are clearly making an intentional choice with how they deploy updates. The ability to roll back updates is not difficult.
They clearly do not want users to even have a chance to think about whether they want an update. And they certainly are not going to clearly explain how an update would remove features and degrade their UX.
Also, when my iPad ran out of space, it finally stopped downloading updates.
Of course, it would be excellent if I could just say no without having to jump through so many hoops and spend my time on it. This kind of administrative stuff is so exhausting, and I never remember it being this complicated.
Do you have an example?
On Android you're generally free to downgrade at any time, as long as the user data partition is cleared in the process.
Of course, at that point, I moved to one of their currently-supported apps...but it means that my Hangouts conversations are in a different place than my SMS conversations.
This is like when ad agencies say, "well, actually users like it when we inform them about new products, and it's actually a very valuable service..."
No, otherwise people wouldn't be going out of their way to install adblockers. Getting users to update software is hard because they view the process as cumbersome, annoying, and dangerous.
A good rule of thumb is that if you have to resort to dark patterns to do something, you're probably doing not doing it because people want you to.
One of the most underrated (yet killer) features is the transparent LZX file system compression. It's awesome. Use it on read-only stuff like huge .exe and .lib files; it'll lower your space usage dramatically. (You can read these files with Windows 8.1 too, but you'll need to manually find, install, and attach the WoF driver to make that happen.)
LZX file system compression is objectively not a killer feature. If it was a killer feature, Windows wouldn't have had to run an aggressive campaign to trick users into upgrading - they would have upgraded themselves so they could get the amazing new feature that they cared about.
It's certainly good that Windows supports it, and it's definitely an improvement. But improvement isn't a one-dimensional scale - it's possible to build a product that's technically better in some ways that's still overall a worse value proposition for a large portion of its users.
It's like if I poured coffee on your jacket and then said, "well, let me make it up to you by shining your shoes." That's very kind, but the gesture is unrelated to the problem.
I mentioned somewhere else on another post though that I try to recommend Linux to less tech-savy people now, and experiences like this are definitely a contributing part of that.
I spent a fair amount of time setting my Mom up with Ubuntu, and it wasn't particularly easy to get everything the way she wanted it. But then when Ubuntu started pushing Gnome 3 I just kept her on an LTS release and everything was fine - no annoying prompts or stealth upgrades, and she still gets security fixes.
There's no way for me to know for sure which ;)
She seems to like it a lot, but I don't know how much of that is the work I put in before hand. I spent a good week customizing everything from font size to mouse sensitivity to shortcuts and browser plugins before I gave it to her. It was pretty much "what do you want your computer to do", then I built her something that did exactly that.
But that pays off because I don't have to spend a bunch of time on tech support now, and she doesn't have to spend time learning new paradigms. The only time I ever touch it is if she explicitly asks for it to do something new, which is rare. I think better file/photo tagging is the only big thing on my todo list atm.
And it's not just a technical problem, it's a cultural one. It's spread to open source software. When an update from Firefox destroyed certain user's Bookmarks files that they had spent years creating, the official response was that users should have made a backup.
Using computers today is so much work. I have to be so vigilant about making backups because I can't trust that my data won't be destroyed by an update.
They were? I guess service packs were kinda exciting, but for general updates this is news to me! :-)
> And if they didn't work out, you could roll them back.
Yeah, or you could just not decide not to install a particular one in the first place!
Honestly, I think software developers in general (including but not limited to Microsoft) need to realize that they need to stop forcefully shoving updates down people's throats against their wills, and instead write updates that are so good that people will want to install them.
But the original IBM implementation was based on "resisters" which were physically damaged by passing too much current through them.
Technically it's not "burning", as there is no smoke or combustion. Instead it's taking advantage of the electromigration side effect. But blowing is the closest analogy, the silicon is irreversibly damaged, due to too much current.
You can read more here: http://paris.utdallas.edu/ssiri08/Tonti_SSIRI_eFuse_V2.pdf
I have no idea which technology Nvidia used to implement their eFuses.
[1] http://www.tested.com/tech/585-how-efuses-work-and-why-theyr...
Sounds impossible, until you find out that if you don't blow them hard enough you can get fuse re-flow under hot conditions. Good fun to debug.
In theory (untested to my knowledge), if you super cool the chip you could lower the resistance of the fuse and prevent it from blowing and absorb heat around the fuse, but it's probably not all that practical for casual game players.
As for getting to the problem at hand (force downgrading your system), some potential solutions (nothing easy):
* Careful control over the chip's power and you could perform a power supply timing attack, tricking the processor logic. This seems like a bit of a stab in the dark though.
* Assuming the bootloader is loaded into some form of RAM, you could look towards modifying the RAM as the chip boots to contain some kind of "skip" code for set pins. Game consoles have hardly been beyond the realm of needing mod-chips to access different features...
* The other option would be to replace the chip containing the bootloader with a non-upgraded one.
Are there any examples of this being done? Not necessarily on the Switch, just with these sorts of fuses. It can be really interesting to see people repair SoCs, like in this iPhone repair: https://www.youtube.com/watch?v=nap0gtds5tQ
1. Disable firmware digital signature verification (not sure if this is at the hardware level or not)
2. Modify the older firmware such that its reported version is newer than your current version
3. "upgrade" to the older firmware version
That's supposed to be very difficult to do.
The recently discovered bootrom exploits break that chain of trust, allowing unsigned code to execute.
http://switchbrew.org/index.php?title=Fuses#eFuses
as an aside, this is not new information to anyone following switch homebrew development.
Is there something I'm missing here?
Thanks!
But with all seriousness, Nintendo really should learn from the failures in their past, I mean come-on! I can still play Zelda on my original Game Boy Pocket I can even replace the batteries without any tools, come on what were they thinking!
/edit although.. I do like that you damage the switch everytime you put it in the dock, must give them that