For novel ideas about building embedded systems (both hardware and firmware), join the 40,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.

By Jack Ganssle

Firmware. it's not so firm anymore

Published 12/28/2001

Nikon's brand new Coolpix 5000 has a crippling firmware bug that can render the camera completely useless. According to c|net ( and substantiated by Nikon (, if a user turns the device off with the lens cap installed the camera will fail. Bummer.

Nikon very quickly responded with a firmware upgrade, with extensive instructions about how to download and install the patch via a USB connection. If the bug has already manifested itself, though, there's no way to install the fix. Customers must then return the unit for warranty repair.

There's no assurance that users with functioning cameras won't destroy the firmware by installing the upgrade. The company admits that a PC crash (not the most unlikely of events in the Windows world) during the USB download could trash the camera, again necessitating a return. Also quoted as possible problems during the download: the camera turning itself off, the USB cable coming adrift, or "performing the update in a place where there is excessive electrical noise," a suitably vague circumstance probably not controllable by most non-techies.

A Nikon spokesperson commented "If you look at our history and our competitors, I think we've all had at least one firmware upgrade in the life of each product." I'm sure that's true; I have a collection of similar stories in all segments of the embedded world.

There's nothing new here. I tried to explain this to my dad last week when he complained that pictures he pastes into documents appear on the monitor with lines through them. His video drivers were originals, and we know that darn near every PC shipped goes with buggy drivers. He was appalled that the computer industry ships flawed products and treat customers so shabbily. I've gotten used to these annoying upgrades and haven't thought about them in years. But he's right.

In the pre-Flash days firmware was all but impossible to upgrade. Fewer products suffered from customer-discovered bugs. Did the horrific cost of a field upgrade make developers more careful in their tests? Are time-to-market pressures pushing products out the door before their time? Or is it possible that our products are so complex now, with so much code, that bugs are inevitable?

I worry that Flash might be an enabler. After all, when it's "easy" to do an upgrade, the temptation to ship early is powerful. Only a very strong team, with enlightened support from management, can resist the ship-urge.

I see a parallel with the auto industry of the 70s. Then, Detroit expected dealers and customers to resolve long lists of problems. The Japanese came to America and showed the error of those ways, and almost destroyed the domestic car industry. Today PC users, and it seems more and more embedded systems consumers, are also expected to work their way through punch-lists of defects.

In the 70s American automakers and consumers thought there was no practical solution to the problem of shoddy cars. Consumers were resigned to a series of dealer visits during the first few months of new ownership. If we today assume that big systems are inherently buggy, will some brilliant upstart prove us wrong? America is the world's largest exporter of software. Is that hegemony as tenuous as we found Detroit's to be?