Strolling the dark alleys of the Internet for the difference between Firmware and Software?
You’ve finally knocked on the right door, in the next couple minutes, that questions gets answered once and for all.
What is the Difference between Firmware and Software?
Firmware and software aren’t completely unrelated, instead, they are very much the same thing with just some very distinct differences.
Consider them two brothers, with different attitudes, choices, and hobbies. Let’s start with the most-basic possible differences between firmware and software, something that a 5th grader can understand-
The answer actually lies in the question as well. Going by nomenclature:
- FIRMware: Denotes something that is “Firm”, meaning something that’s harder than something “soft” but not as hard as “HARD” (as in Hardware).
- SOFTware: Denotes something that is softer than FIRMware.
Following the same definition, we can say that Software is something that can be easily changed, upgraded and in other words is more prone to change than Firmware.
Firmware on the other hand, being firmer than software, isn’t as easy to change or upgrade, but isn’t totally rigid as hardware either and can be changed with slightly more advanced skills.
So, Software is more temporary as compared to Firmware, pertaining to the fact of the hardships and complexities that arise when changing a firmware as compared to changing a software.
The prime purpose of the software is to be used by people like us. The firmware however is more of a “backstage help“. It does its own thing, without requiring manual interaction. It facilitates much without us even knowing of it.
Also, what we do with a software depends on the user using the software. You can use the same software to achieve many different things. In the case of Firmware, it generally has a fixed set of tasks. The user can’t choose to do something else with the given firmware.
Just so you aren’t confused, a firmware too does many things. But, it’s just that the user doesn’t control what the firmware does in the everyday use scenario.
Also, Software often runs on the CPU and primarily utilizes the RAM. On the other hand, Firmware doesn’t use the RAM that often, rather, it makes use of micro-processors, generally dedicated to some parts of the hardware.
Now that’s a basic, laymens’ definition. In case you aren’t satisfied yet, here are some better explanations of the differences between Firmware and Software.
A More Technical Approach
Wikipedia defines software as- “software is a part of a computer system that consists of data or computer instructions”
And for firmware, it says- “firmware is a type of computer program that provides the low-level control for the device’s specific hardware”.
So the one difference between firmware and software we can make right from the definitions is that software deals mostly (although not always) with other software (like with the OS), while firmware is a component more directly associated with the hardware for which it’s built.
The software is generally mega or gigabytes in size, firmware on the other hand generally sits in the Kilobytes brackets, making it comparatively much lighter than software.
(Although it shouldn’t be a concrete comparison metric, as it’s more like a general scenario but firmware in the range of MBs and GBs exist today as well).
Although the irony here is, even though software is generally the heavier one, it’s easier to change while firmware even though being the lighter component isn’t as easy.
Another fact worth singling out here is that, software is more commonly used and interacted with by users, while firmware is something you don’t generally directly encounter while using a computer or any other system.
During my research for a better answer, I actually pinned this question to my friend Chris who is a software engineer, and he gave me a very logical and calculated answer.
After translating his explanation in words we all can understand, it reads “Software designed for specific hardware is firmware”.
So that gets us another difference that firmware is designed for pre-set, specific hardware while software is more liberal and might run on more than one type or model of hardware.
Also, software is made to accept frequent updates, and changes. For e.g. you may update the version for your Ms-Word or Photoshop frequently, but firmware is rarely updated and isn’t generally built with the expectation of it ever requiring an update.
Software serves a wider range of features and purposes, just like Paint, Ms-Word, Google chrome etc. While firmware has a more specific, pin-pointed purpose, that of assisting a certain hardware perform a certain function.
So in a nutshell, the only primary, absolutely concrete line that can be drawn between a firmware and software is based on where the “code” resides. If it resides on a chip or on a hardware (e.g. EEPROM or Flash memory), it’s firmware, if it’s on a storage device such as hard-disk, it’s software.
This last point also brings out another difference between firmware and software that , because a firmware is stored on EEPROM or flash memory, it isn’t removed from memory once the hardware is turned off, as it’s permanent memory.
But the software, in most cases and in the general meaning ceases to exist for as long as the hardware is turned off as it resides on the hard-disk.
Note that the installation process of Firmware too differs vastly from that of Software. While most software can be installed directly from an executable file, installing firmware generally requires “flashing” the firmware which isn’t as simple.
When not done correctly, it results in the router being bricked rendering the router (or any other device) useless.
This is why we’ve included pre-flashed routers from FlashRouters in our router reviews. This ensures you can get your hands on more advanced version of the same router without risking bricking the router on a manual upgrade.
Also, Firmware is often written in C, assembly, or other low-level language. This is done to keep things simple, lightweight, and easy to access. On the other hand, software can be written in any number of language(s). Also, software with higher level of language is often considered better or more advanced. However, the opposite is desired for firmware.
Also, there are two major types of firmware. While software too can be classified into many different types, the difference are more stark and definite with firmware. There’s the Extensible Firmware Interface or it’s also known as EFI. And then there’s BIOS.
EFI is used to provide the first instructions to the CPU. It’s generally used for starting up. BIOS is more directly connected to the hardware, it reads, checks, and basically ensures proper functioning of the hardware.
To sum it all up, let’s just say that software is meant to be used by users, while firmware is primarily meant to be used by your hardware.
While firmware may be what keeps a system running, it’s software which takes a lot longer to be created.
Also note that even though most everyday users aren’t aware of firmware, and do not interact with it, the use of existence of software will actually be crippled without firmware. So in other words, the firmware which generally resides behind the scenes is in most ways more important than the software we use.
How are software and firmware connected?
We’ve scribbled down so many differences between firmware and software, but the reality is, both firmware and software are rigorously connected.
Firmware is software as well. Software is just a “broader” term, which denotes any and all software, while firmware is the software designed and embedded into specific hardware.
The above definition might make firmware look like the underdog; well it’s not the case. In fact, firmware is what makes the use of software possible by the hardware.
Firmware is just the low-level (basic) software, which makes the basic functionalities of the hardware possible, without the hardware functioning properly; there won’t be a platform for the software to run.
Also, a Firmware is built into the device at the time of its manufacture and helps the hardware to run, the functionalities of an OS (operating system) are similar as well, as it helps other software to run on a system.
So bottom line, firmware is also a type of software, with its own features and attributes.
Why is Firmware Needed?
We’ve pondered over the differences between firmware and software, now let’s talk see why a Firmware is needed to begin with, right?
When any CPU (be it for a computer, mobile phone, PDA or anything else) boots, it generally fetches data from memory.
Now because the general software is offline at the moment, the hardware can’t use that data to boot or make its binary choice.
That’s where firmware comes to the rescue, because the firmware is pre-programmed into a specific address on the CPU, it’s this data that let’s the CPU do something on its own without using any other software.
So in other words, a firmware can be used while or for loading an OS (which is a software), or as in the case of cell-phones, both the OS and the firmware are stored at the same location, and the boot-time code of the firmware is used to load the OS.
Earlier, firmware used to reside in un-modifiable ROM, but since EEPROMs and memory cards came to common hands, now it’s mostly placed in flash memory and allows for modifications.
Bottomline, a firmware isn’t a full-featured software (it’s complete it itself, but just not as wide or diverse as a software) and simply works as the ignition for the hardware. It either initializes the hardware, blocks certain sectors or performs any other “basic” function.
Some examples of the importance of firmware are, they determine how fast or slow our hard-disks should spin, our hard-disks and graphics cards wouldn’t be detected without firmware, or even a WiFi card wouldn’t be able to detect a radio frequency without it.
Our TV remotes wouldn’t know which button is being pressed or which channel to tune in to without firmware either.
Most Commonly used Firmware and its Usage
It’s worth noting that nearly every electronic device, that boots up, or uses an automated kind of system, most likely has a firmware inbuilt.
Some common examples are timers in washing machines, timers in traffic lights, or most smartphones these days are able to function because of the existence of firmware.
We, as users, do not often need to change or upgrade our firmware, except some very rare and unique cases.
One such case is encountered when flashing our routers. It’s the process of upgrading our router from its stock firmware (the default firmware) to a more advanced, better alternative.
The stock firmware that comes inbuilt with most routers isn’t as advanced as a third-party firmware, and often also imposes restrictions, and so most users flash (install) their routers with a third-party firmware.
The two most popular and commonly used firmware for router flashing are DD-WRT and Tomato.
DD-WRT is a firmware that is more feature rich as compared to Tomato, but it’s also harder to setup.
Tomato on the other hand, is comparatively less feature-rich, but easier to setup.
Anyway, you can read more about the two firmware on this detailed guide on DD-WRT vs. Tomato.
Can You Uninstall Firmware?
From the explanations above, it may seem like Firmware is pretty untouchable. I mean it’s embedded in the Hardware and all that stuff huh? So can it be deleted or Uninstalled?
Unfortunately (or fortunately) it’s true. They can’t exactly be “deleted”. If and when you do manage to get rid of them somehow, you’d render your device useless. As mentioned earlier, they’re crucial for the proper functioning of a device. This is true regardless of you talking about a router, a phone or anything else.
However, if you specific firmware version has issues you sure can “change” it. The easiest way is to look for upgraded or more recent versions of your firmware. Once those are downloaded onto your device, the older versions are removed.
The upgrade-package, used to upgrade the device isn’t left on the device either. This ensures no more space than actually required by the firmware is eaten up.
So in a nutshell, you can’t (and shouldn’t) delete or uninstall Firmware, but it can (and should) be upgraded.
Can Firmware be Hacked?
With all the explanation above, Firmware seems pretty basic or “analogue” (for the lack of a better word) doesn’t it? So the question lingers, can it be hacked? Well it totally can be. However, the method to do so slightly differs from how software is generally hacked.
In most cases, Firmware is hacked when pushing new updates to it. Or when installing third-party, more advanced firmware which indeed is a Trojan horse or malware of some kind.
Infact, the Equation Group (a state-sponsored group of Cyber-talent/hackers) alleged to be working for/with the NSA has already been found to develop a HDD—hack. This hack allows data to be stored on a rather permanent basis. Or in other words, the data isn’t deleted after deleting, or even formatting the disk.
And then there’s Mark Shuttleworth, who said, and I quote “firmware on your device is the NSA’s best friend”.
Mark Shuttleworth is the founder the company which developed Ubuntu, so something tells me he knows what he’s talking about.
All in all, to answer the question in the shortest possible sentence, yes Firmware can be and is often hacked. I’d advise you to get a more secure OS just to be safe.
Final words on Difference between Firmware and Software
So let’s wrap this article on the difference between firmware and software up. I’m sure I’ve scribbled down more than enough differentiation and explanations on how the two components differ from each other.
It’s important to understand that both the components are the two sides of the same coin, it’s just that they’re engraved and embedded differently.
To wrap conclude the difference between firmware and software, all I can personally say is, firmware is the component which is embedded in a hardware and doesn’t need frequent changes, while software is manually installed by the user (generally) and is changed more often.
Although there still are some more differences between firmware and software you could dig up, so if you do come across such differences do let us know, it helps us make these pieces better.