Stuff goes wrong – it is a fact of life. Embedded devices are typically very reliable, but not immune to failure. A common failure mode is a lock-up – the device freezes and will not respond to any user interaction. This could be caused by either a software or a hardware problem. In any case, I recently wrote about how a device can perform a self test and how software can preempt its own failure.
But freezes happen, and what do you do? …
So far today, while I have been working on this blog post, I have had two embedded systems fail. My dishwasher got stuck somewhere on its cycle and my broadband connection went down, with a light on the router flashing to say it was looking for a signal. What did I do? You guessed it: I turned off the power, waited about 10 seconds, and switched the power back on again. The 10 second wait is necessary because capacitors in the power supplies of many devices will keep them alive for a short time after losing power. This strategy worked in one case anyway. [No hand washing-up for me!]
Killing the power on a device is a little drastic, but it will very frequently address the problem of a freeze – at least temporarily, as the root cause may still be lurking. If the software was stuck in a loop, the resulting reset will cause the code to start over. If the cause of the looping was a software error, chances are that it will happen again. If it was a hardware fault – a peripheral not responding or a memory glitch – it may be transient and the power cycle will have cleared it for good.
If the device has a power cord, then this drastic solution is a possibility. But what about the battery-powered devices that we all have: cell phones, MP3 players, digital cameras, GPS devices, TV/media remote controls? It used to be common for such devices to have a Reset button. This was typically recessed down a tiny hole and you would need a paper-clip to press it. It would normally have much the same effect as a power down – indeed, in some cases it might have actually interrupted the power, but I guess that asserting a general reset line was more likely.
Modern devices have no such reset facility. I just scoured my house looking for an example of something that did and it took a while. Nowadays, it is usually a matter of finding the instruction manual, which will suggest something like “Press the Menu and the Vol+ buttons and hold for 7-10 seconds”. And, most of the time, the device is reset and all is well.
But this new approach has two drawbacks. First off, you need to know what arcane button pressing/holding sequence to perform. Second, it might not work. I am unsurprised that this approach does sometimes fail, as it has an in-built complexity which leads to just one more thing to go wrong. The detection that two buttons have been pressed and held for a specific time period requires either software [which may have crashed] or some somewhat complex hardware [which may also fail].
Fortunately, there is often another option: pop the back off of the device, remove the battery, pause for a few seconds, then replace it. However, this is not always an option. Bring back the Reset button is what I say!