What is firmware?
Firmware is a type of program that is embedded deep into hardware by the manufacturer to help the device start up and run correctly. All computing devices, from IoT (internet of things) gadgets to keyboards to supercomputers, have firmware — without it, a machine is just a collection of individual electronic parts with no instructions on how to work together.
Because firmware is so crucial to the proper functioning of the device, it is usually stored in the device’s non-volatile memory — static random access memory that doesn’t need a continuous power source to retain information. This way, the device can be restored to full functionality even after draining its battery or suffering a power outage.
Although most firmware is proprietary, the term “firmware” does not actually refer to programming owned by “firms.” Instead, the term was likely coined by Ascher Opler in the 1967 Datamation article “Fourth-Generation Software” to describe microcode placed between “hard” physical components and “soft” programming — firm, but not unyielding.
How does firmware work?
Firmware works by issuing lower-level machine language instructions to the device’s components. The goal of firmware is to get a device up and running.
Here’s what happens. When you turn the device on, its firmware automatically starts sending instructions to the processor. These instructions range from checking if all the hardware components are working (the power-on self-test or POST routine) to designating which programs must be loaded into memory and executed.
For simple devices that have no software (like a computer mouse), the firmware then continues running to provide functionality to the user. But for more complex devices (such as a smartphone, tablet, or a laptop), the firmware works to load their operating system — once that is done, it takes a backseat to the installed software.
Types of firmware
Each version of firmware is unique to its microprocessor — the instructions are designed for a particular device model and won’t work if installed on another. However, it’s still possible to distinguish several broad types of embedded firmware based on the level of machine architecture that they operate in.
As the name implies, low-level firmware deals with the most basic functions required to run the device. Think of it as the machine equivalent of a heart.
Low-level firmware is usually kept in read-only memory (ROM), which cannot be overwritten once set. Consequently, this means that low-level firmware can never be deleted by the user. In effect, it is an intrinsic part of the device, much like its physical components.
High-level firmware is typically built on top of low-level firmware and focuses on implementing more advanced machine functions. Following our low-level firmware example above, it’s equivalent to our own body’s central nervous system.
High-level firmware usually resides in flash memory chips, which means that it can be overwritten. When we talk about updating firmware, we’re specifically talking about installing new versions of high-level firmware to improve the device’s functionality and security.
Subsystems are semi-independent components (or even whole devices) within larger systems. As such, subsystem firmware must not only ensure that its host functions correctly on its own but also that it is capable of interacting with the other parts to support the parent system.
In our human body analogy, subsystem firmware would be installed in the kidneys, diaphragm, or liver — vital to our wellbeing, but working quite happily without our direct input.
Subsystem firmware is frequently embedded into flash chips, central processing units (CPU), or liquid crystal display (LCD) units of their host subsystem. Like high-level firmware, subsystem firmware can be updated by the manufacturer for improved functionality, most often to let the component interact with a new hardware device that has been installed.
Firmware vs. software
Having read so far, you might be thinking — if both firmware and software refer to programming that tells a machine what to do, aren’t they basically the same? While superficially similar, important differences between firmware and software set the two apart.
- User access. Firmware is intentionally hidden from the user by the manufacturer. It’s easy to see why — messing with firmware can result in the user completely bricking their device, leaving it nothing more than an expensive paperweight. To access your device’s firmware, you need special tools, such as firmware rootkits or manufacturer-issued flash drives. By contrast, you can typically inspect or even alter the code of software using the tools already present on most operating systems.
- Operation. Firmware interacts directly with hardware using low-level machine code — binary instructions that the device can understand without the need for translation. Software, on the other hand, is written in high-level programming languages by human beings and must be translated into binary for hardware to perform the desired function. The operating system communicates software requests to firmware, which in turn tells the physical parts of the machine what they need to do.
- Storage. As we’ve already discussed, firmware is so critical to the proper functioning of a device that it is stored permanently in the latter’s non-volatile memory. The fact that it usually consists of simple instructions without the need for any visual components (because it is not intended for human eyes) also means that firmware takes up very little space. By contrast, your device typically stores software on a hard (or solid state) drive, where you can uninstall it at will. Some software applications can also take up multiple gigabytes of space due to images, sound, and videos.
Examples of firmware
We already know that firmware is found in all computing devices — basically, if it’s more complicated than a switch or lightbulb, it is run by firmware. To understand just how ubiquitous it is, here are some examples of firmware that you’re sure to encounter in your daily life.
- Your laptop. A personal computer (PC) needs firmware to load the operating system and make sure everything is ready for use. This firmware typically sits embedded on a small memory chip found in the computer’s motherboard. The most common kinds of firmware used for PCs are the Basic Input/Output System (BIOS) and the Extensible Firmware Interface (EFI).
- Your car. Modern automobiles are no longer just horseless carriages — each car is a collection of tiny computers in charge of its various subsystems. Each of these components, from the AC system to your car’s proximity sensors, has firmware installed on it to run properly.
- Your phone. Mobile phones are basically just small handheld computers. The operating systems of mobile devices (such as Android, iOS, or Linux) are reliant on firmware to load all systems properly.
- Your fridge. Smart household appliances (like most modern refrigerators) have firmware installed to make sure the various subsystems work in concert and can respond to any changes in the user settings.
What is a firmware update?
A firmware update (or firmware upgrade) is the act of overwriting the existing version of firmware with a newer one, typically to iron out bugs or fix security vulnerabilities. Like we discussed, you can only update high-level and subsystem firmware — low-level firmware is a permanent fixture of your device.
A firmware update is typically accomplished through flashing — erasing the stored version of the firmware on the memory chip and replacing it with a different one. Note that this process is different from software patching, which may involve only making small alterations to existing code without the need to delete the application entirely.
Because firmware forms the foundation of all device operations, you typically can’t just install it while your operating system is running — that would be akin to pulling the tablecloth away while everyone is having dinner. In some cases, you may even need to connect your device to an external machine with a copy of the firmware to initiate the process.
Why are firmware updates important?
Firmware updates are important because, put simply, they keep your devices relevant even as the technology around them continues to evolve. Here are just a few examples of how a timely firmware update can help your device function better as time goes on.
- Security updates. While firmware is typically hidden from regular users, that doesn’t mean it can’t be compromised. A savvy hacker can use special firmware malware or exploits to install a modified version of firmware on your device, taking control of your device’s most basic functions. Firmware upgrades help prevent this nightmare scenario by closing off discovered vulnerabilities or shoring up defenses against newly-discovered attack vectors.
- Bug fixes. Sometimes the greatest danger to your device is not malice, but oversight. Even the most talented programmers can leave errors in the code that can cause your device to behave erratically or simply crash. These bugs are usually discovered and reported by users after the product has been released to the public, prompting the manufacturer to fix the issue and release a firmware update for the device in question.
- Improved functionality. As new technologies are developed, your device may find itself unable to interact with the newest gadgets or subsystems. While a firmware update won’t magically turn your mini-USB port into a USB-C one, it can help your PC recognize your shiny new graphics card or give your CD-ROM the ability to burn new types of images.
How to prevent firmware attacks
According to a 2021 Microsoft survey, over 80% of all enterprises interviewed admitted to suffering at least one firmware attack in a two-year timeframe. Successful firmware attacks can completely brick your device, or worse — hijack it for the hacker’s own ends. To prevent firmware attacks, follow these tips.
Update your firmware regularly
You already know why firmware updates are important. Manufacturers often release security patches as soon as a new vulnerability is discovered to prevent firmware attacks against their products.
To protect your gadgets, get in the habit of regularly checking the manufacturer’s page for new updates. Be careful, though — because each model uses a different version of firmware, make sure that you only download the update meant for your device. Installing the wrong update can lead to the same result as a successful firmware attack, leaving you holding an expensive brick.
Download updates from trusted sources
Manufacturers are keen to protect their reputation. They don’t hide firmware updates behind confusing menus or paywalls — once a security patch or bug fix is out, it will be promptly made available for download. By registering your hardware device on the manufacturer’s official website, you’ll receive automatic notifications when a new version of firmware is released for your device.
Downloading firmware updates from unofficial sources is not only unnecessary but also exposes you to similar risks to software piracy — you can’t be 100% sure that what you’re downloading is not just malware in disguise or even matches the description.
Be cautious when using storage devices
You can store firmware data on USB sticks and external hard drives to save space and facilitate the update process — in fact, some devices only allow firmware updates from connected external media. The trouble is storage devices can just as easily house corrupted firmware updates that will compromise your device.
Criminals know that curiosity killed the cat. They’ll leave unattended storage media like USB keys in public places, hoping that curious victims will plug them in to check their contents. Once it’s inserted, the drive will disgorge its payload and attempt to infect your device with firmware malware — or go straight to initiating a dangerous firmware update.
Use firmware with automatic defenses
As firmware attacks gain traction, manufacturers have begun to fight back with built-in firmware security. The most common defense mechanism is enabling automatic firmware updates, patching identified security vulnerabilities without the user’s input (and sometimes even without their knowledge). Examples of firmware security include Dell’s Enhanced BIOS Verification and Intel’s Hardware Shield.