The Definition of “Firmware”, According To The iPhone
(No, I’m not going to write/complain about Google as the last couple of our articles have)
Instead, I’m going to complain about Apple. What the iPhone architecture calls “firmware” continues to confuse those looking for a solid definition of the loose term, which has been used to traditionally describe a very specific low-level collection of software for providing hardware interaction.
Here’s Apple’s definition of “firmware” for the iPhone, how it contrasts with the real definition of firmware, and how these contrasts make Apple’s usage of the term both inappropriate and non-standard.
Apple’s Definition of iPhone Firmware
In the colourful world of Apple, the term “firmware” collectively refers to the iPhone operating system, root filesystem, drivers, and in some cases actual firmware images to be burned into memory storage for the device’s peripherals.
…and that is completely wrong.
A filesystem is (surprise) technically a filesystem. Completely separate from firmware. A hard drive has firmware, a filesystem is contained within a hard drive. A filesystem is never considered firmware. Unless you’re Apple. Or on drugs. We have no evidence of the two being related, but there’s always the possibility – and Steve Jobs admits to trying LSD once or twice. Just saying.
An operating system is (surprise again) an operating system – a collection of software, stored on a bootable filesystem, no less, that allows upper-level software to communicate with hardware via hardware abstraction, libraries, and runtimes while controlling the hardware and processing their events via drivers.
And drivers are modules within the operating system (or services, going by Mach’s microkernel design) that control a specific piece of hardware or allow other drivers to do the same. They are usually loadable modules or processes in relevance to the operating system, stored on the filesystem itself, and communicate with firmware stored within the hardware.
Now, Apple’s “firmware” (a name for the software image/package containing all of the above and some actual firmware images) is a .ipsw file. This magic little .ipsw file is really a PKZip (.zip) file with another extension, not unlike other file formats like Microsoft Office 2007’s .docx files.
Rename it to .zip, open her up, and voila – you see the actual “firmware” image (with no extension) and a manifest.plist file, which provides versioning information. The extension-less image file contains all of the above in a specially-packaged manner, including a ramdisk, iBSEC bootloader, and DFU-strapping software for loading the image to a device.
So now you’re more(?) educated on what Apple considers “firmware” for their iPhone/iTouch devices. Now, what is “real firmware”, and why am I so upset about Apple’s abuse of the term, you might ask?
REAL Firmware
The definition of “real” firmware has changed slightly over the years before finally settling on its current definition. It started out as a sort of buzzword coined in the 60’s used to describe the microcode for a CPU’s writable control store, before being slightly broadened to also refer to any microcode in any storage location.
Yawn.
Nowadays, it refers to any non-OS/driver software stored in RAM or ROM, used to interact directly with the registers of the hardware it is stored within the ROM of. This is typically EEPROM, although older devices used chip-upgradable EPROM, PROM, or (you guessed it) ROM.
Translation: firmware is lower-level software stored in chips on your actual circuit board.
Newer firmware-controlled devices (Blu-Ray players, motherboard chips, Internet-connected “smart appliances” and the like) store firmware within flash memory, and provide a method for easily burning a new image into said memory right from an operating system. The iPhone is an example of such a device.
(Sidenote: Richard Stallman, in one of his many rants about Free Software a few years ago, bitched about how Linux kernel developers were writing drivers that simple burned a new image into the firmware memory for a given device, and stated that this broke the bounds of free software.)
The iPhone does contain such software to be burned onto the flash memory of some of its peripherals inside of its .ipsw image file. This, in fact, is true firmware going by the true definition of the term. What is not true firmware, however, is an entire Unix operating system, filesystem, and drivers that are also contained within the image.
In fact, whenever you manually burn an iPhone .ipsw image to a device, the software is first extracted (broken into its separate filesystem, OS and firmware components) before being applied to the recovery-mode device. Once uploaded to the device, the bootloader is applied, executed (this is when you see the Apple logo, which is separately downloaded from iTunes) and the new firmware is burned into peripheral memory before the OS is installed to the storage for the device.
Some tell me that this process is more verbose when done in XCode (the iPhone SDK IDE), which also goes into detail about uploading the iBSEC bootloader, placing the device into DFU mode and uploading the ramdisk. I suspect that the ramdisk is responsible for burning the firmware to memory.
Final Notes
So, all in all, Apple’s .ipsw “firmware” files do contain actual firmware destined to be burned into the iPhone’s firmware storage flash chips, but the very fact that this “firmware” also contains an entire filesystem and operating system is more evidence of Apple trying to rebrand stuff to tailor it for their own devices.
It’s not that surprising – they did the same with “logic board” (motherboard), “genius” (tech support personnel) and “accelerometer” (gyroscope). So all-in-all, we’re more than likely about to see this same term-abuse to continue with the release of their tablet/netbook hybrid (details here), rumored to be called the “Wind” (following their “Air” product name).
That’s all the complaining about THAT out of my system, what to find wrong in the tech industry next…
(and if ZDNet steals this story without giving credit, as they’ve done to us in the past, I’m going to go ape)
Comments (4)
Anthony told me about the product name. He has what he describes as “a very reliable source” regarding Apple insider info, but getting him to name it isn’t going to happen.
Hey, speaking of Wind, what’s your source for them having a product by that codename? It sounds like something I might’ve heard before, but all Google turns up are references to my afforementioned MSI product.
Yeah, I think it’s conceptual. Any device that should just work, like your (smart) toaster or your flat-screen television, you don’t want to think of as booting up into an OS, though they probably do. Phones started out as analog devices, and older mobile phones did have nothing but firmware. That, and Apple wants to reinforce that developers are not to tread in any area considered essential to the proper functioning of the phone.
Stealing the name of the foremost hackintosh platform (MSI Wind netbook, on which I presently type, perversely but quite functionally connected to a 1920×1200 LCD thru VGA), now that’s either a nod or a sign of some deeper affinity.
i guess that the definition comes from the mobile world – in mobile world, all phones have just one system. You cannot have device without system with firmware only, you cannot use a different system on the same device etc. So theoreticaly you are right and there are two systems, but practicaly there is only one and e.g. upgrading one you upgrade the other as well. P.S.: and btw it is mostly known as iPhone OS (3.0), not firmware