
In
computing
Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes, and development of both hardware and software. Computing has scientific, ...
, firmware is a specific class of
computer software that provides the
low-level control for a device's specific
hardware. Firmware, such as the
BIOS of a personal computer, may contain basic functions of a device, and may provide
hardware abstraction services to higher-level software such as
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
s. For less complex devices, firmware may act as the device's complete
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
, performing all control, monitoring and data manipulation functions. Typical examples of devices containing firmware are
embedded systems (running
embedded software), home and personal-use appliances, computers, and
computer peripherals.
Firmware is held in
non-volatile memory
Non-volatile memory (NVM) or non-volatile storage is a type of computer memory that can retain stored information even after power is removed. In contrast, volatile memory needs constant power in order to retain data.
Non-volatile memory typ ...
devices such as
ROM,
EPROM,
EEPROM, and
flash memory. Updating firmware requires ROM
integrated circuit
An integrated circuit or monolithic integrated circuit (also referred to as an IC, a chip, or a microchip) is a set of electronic circuits on one small flat piece (or "chip") of semiconductor material, usually silicon. Transistor count, Large ...
s to be physically replaced, or EPROM or flash memory to be reprogrammed through a special procedure. Some firmware memory devices are permanently installed and cannot be changed after manufacture. Common reasons for updating firmware include fixing bugs or adding features.
History and etymology
Ascher Opler coined the term ''firmware'' in a 1967 ''
Datamation'' article,
[
] as an intermediary term between "hardware" and "software".
In this article, Opler was referring to a new kind of computer program that had a different practical and psychological purpose from traditional programs from the user's perspective.
As computers began to increase in complexity, it became clear that various programs needed to first be initiated and run to provide a consistent environment necessary for running more complex programs at the user's discretion. This required programming the computer to run those programs automatically. Furthermore, as companies, universities, and marketers wanted to sell computers to laypeople with little technical knowledge, greater automation became necessary to allow a lay-user to easily run programs for practical purposes. This gave rise to a kind of software that a user would not consciously run, and it led to software that a lay user wouldn't even know about.
Originally, it meant the contents of a writable
control store (a small specialized high-speed memory), containing
microcode
In processor design, microcode (μcode) is a technique that interposes a layer of computer organization between the central processing unit (CPU) hardware and the programmer-visible instruction set architecture of a computer. Microcode is a laye ...
that defined and implemented the computer's
instruction set
In computer science, an instruction set architecture (ISA), also called computer architecture, is an abstract model of a computer. A device that executes instructions described by that ISA, such as a central processing unit (CPU), is called an ' ...
, and that could be reloaded to specialize or modify the instructions that the
central processing unit
A central processing unit (CPU), also called a central processor, main processor or just processor, is the electronic circuitry that executes instructions comprising a computer program. The CPU performs basic arithmetic, logic, controlling, an ...
(CPU) could execute. As originally used, firmware contrasted with hardware (the CPU itself) and software (normal instructions executing on a CPU). It was not composed of CPU machine instructions, but of lower-level microcode involved in the implementation of machine instructions. It existed on the boundary between hardware and software; thus the name ''firmware''. Over time, popular usage extended the word ''firmware'' to denote any computer program that is tightly linked to hardware, including
BIOS on PCs,
boot firmware on smartphones,
computer peripherals, or the control systems on simple
consumer electronic devices such as
microwave oven
A microwave oven (commonly referred to as a microwave) is an electric oven that heats and cooks food by exposing it to electromagnetic radiation in the microwave frequency range. This induces polar molecules in the food to rotate and produce ...
s,
remote controls.
Applications
Computers

In some respects, the various firmware components are as important as the
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
in a working computer. However, unlike most modern operating systems, firmware rarely has a well-evolved automatic mechanism of updating itself to fix any functionality issues detected after shipping the unit.
The BIOS may be manually updated by a user via a small utility program. In contrast, firmware in mass storage devices (hard-disk drives, optical disc drives, flash memory storage e.g. solid state drive) is less frequently updated, even when flash memory (rather than ROM, EEPROM) storage is used for the firmware.
Most computer peripherals are themselves special-purpose computers. Devices such as printers, scanners, webcams, and
USB flash drives have internally-stored firmware; some devices may also permit field upgrading of their firmware.
Other instances of computer firmware include:
* The
(U)EFI-compliant firmware used on
Itanium systems, Intel-based
Macs, and many newer PCs
*
Hard disk drive,
solid-state drive or
optical disc drive
In computing, an optical disc drive is a disc drive that uses laser light or electromagnetic waves within or near the visible light spectrum as part of the process of reading or writing data to or from optical discs. Some drives can only r ...
firmware
*
Video BIOS of a
graphics card
A graphics card (also called a video card, display card, graphics adapter, VGA card/VGA, video adapter, display adapter, or mistakenly GPU) is an expansion card which generates a feed of output images to a display device, such as a computer moni ...
*
Open Firmware, used in
SPARC-based computers from
Sun Microsystems
Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, the ...
and
Oracle Corporation
Oracle Corporation is an American multinational computer technology corporation headquartered in Austin, Texas. In 2020, Oracle was the third-largest software company in the world by revenue and market capitalization. The company sells da ...
,
PowerPC
PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple Inc., App ...
-based computers from Apple, and computers from
Genesi
*
ARCS, used in computers from
Silicon Graphics
*
Kickstart, used in the
Amiga line of computers (
POST, hardware init +
Plug and Play auto-configuration of peripherals,
kernel, etc.)
*
RTAS (Run-Time Abstraction Services), used in computers from
IBM
* The
Common Firmware Environment (CFE)
Home and personal-use products
, most
portable music player
A portable audio player is a personal mobile device that allows the user to listen to recorded audio while mobile. Sometimes a distinction is made between a ''portable'' player, battery-powered and with one or more small loudspeakers, and a ''p ...
s support firmware upgrades. Some companies use firmware updates to add new playable file formats (
codecs). Other features that may change with firmware updates include the GUI or even the battery life. Most
mobile phone
A mobile phone, cellular phone, cell phone, cellphone, handphone, hand phone or pocket phone, sometimes shortened to simply mobile, cell, or just phone, is a portable telephone that can make and receive telephone call, calls over a radio freq ...
s have a
firmware over the air firmware upgrade capability for much the same reasons; some may even be upgraded to enhance reception or sound quality.
Automobiles
Since 1996, most
automobile
A car or automobile is a motor vehicle with wheels. Most definitions of ''cars'' say that they run primarily on roads, seat one to eight people, have four wheels, and mainly transport people instead of goods.
The year 1886 is regarded ...
s have employed an on-board computer and various sensors to detect mechanical problems. , modern vehicles also employ computer-controlled
anti-lock braking systems (ABS) and computer-operated
transmission control units (TCUs). The driver can also get in-dash information while driving in this manner, such as real-time fuel economy and tire pressure readings. Local dealers can update most vehicle firmware.
Other examples
Other firmware applications include:
* In home and personal-use products:
** Timing and control systems for
washing machines
** Controlling sound and video attributes, as well as the channel list, in modern
television
Television, sometimes shortened to TV, is a telecommunication Media (communication), medium for transmitting moving images and sound. The term can refer to a television set, or the medium of Transmission (telecommunications), television tra ...
s
* In
routers,
switches, and
firewalls:
**
LibreCMC
LibreCMC is a Linux-libre distribution for computers with minimal resources, such as the Ben NanoNote, ath9k-based Wi-Fi router
A wireless router is a device that performs the functions of a router and also includes the functions of a wire ...
a 100%
free software
Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, ...
router distribution based on the
Linux-libre kernel
**
IPFire an
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
firewall/router distribution based on the
Linux kernel
The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ope ...
**
fli4l an open-source firewall/router distribution based on the Linux kernel
**
OpenWrt an open-source firewall/router distribution based on the Linux kernel
**
m0n0wall an embedded firewall distribution of
FreeBSD
**
Proprietary firmware
* In
NAS systems:
**
NAS4Free
XigmaNAS is network-attached storage (NAS) server software with a dedicated management web interface (written in PHP). It is free software under the terms of the Simplified BSD license.
XigmaNAS is a continuation of the original FreeNAS code, ...
an open-source NAS operating system based on FreeBSD
**
Openfiler
Openfiler is an operating system that provides file-based network-attached storage and block-based storage area network. It was created by Xinit Systems, and is based on the CentOS Linux distribution. It is free software licensed under the GN ...
an open-source NAS operating system based on the Linux kernel
**
Proprietary firmware
*
Field-Programmable Gate Array (FPGA) code may be referred to as firmware
Flashing
''Flashing''
involves the overwriting of existing firmware or data, contained in
EEPROM or
flash memory module present in an electronic device, with new data.
This can be done to upgrade a device or to change the provider of a service associated with the function of the device, such as changing from one mobile phone service provider to another or installing a new operating system. If firmware is upgradable, it is often done via a program from the provider, and will often allow the old firmware to be saved before upgrading so it can be reverted to if the process fails, or if the newer version performs worse. Free software replacements for vendor flashing tools have been developed, such as
Flashrom
Flash memory is an electronic non-volatile computer memory storage medium that can be electrically erased and reprogrammed. The two main types of flash memory, NOR flash and NAND flash, are named for the NOR and NAND logic gates. Both use t ...
.
Firmware hacking
Sometimes, third parties develop an unofficial new or modified ("aftermarket") version of firmware to provide new features or to unlock hidden functionality; this is referred to as
custom firmware. An example is
Rockbox as a firmware replacement for
portable media players. There are many
homebrew
Homebrewing mainly refers to small-scale, non-commercial manufacture of a drink, typically beer.
Homebrew or home brew may also refer to:
Computing
* Homebrew Computer Club
* Homebrew (package manager), for macOS and Linux
* Homebrew (video game ...
projects for various devices, which often unlock general-purpose computing functionality in previously limited devices (e.g., running
Doom on
iPod
The iPod is a discontinued series of portable media players and multi-purpose mobile devices designed and marketed by Apple Inc. The first version was released on October 23, 2001, about months after the Macintosh version of iTunes ...
s).
Firmware hacks usually take advantage of the firmware update facility on many devices to install or run themselves. Some, however, must resort to
exploit
Exploit means to take advantage of something (a person, situation, etc.) for one's own end, especially unethically or unjustifiably.
Exploit can mean:
* Exploitation of natural resources
*Exploit (computer security)
* Video game exploit
*Exploita ...
s to run, because the manufacturer has attempted to lock the hardware to stop it from running
unlicensed code.
Most firmware hacks are
free software
Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, ...
.
HDD firmware hacks
The Moscow-based
Kaspersky Lab discovered that a group of developers it refers to as the "
Equation Group" has developed
hard disk drive firmware modifications for various drive models, containing a
trojan horse that allows data to be stored on the drive in locations that will not be erased even if the drive is formatted or wiped. Although the Kaspersky Lab report did not explicitly claim that this group is part of the United States
National Security Agency
The National Security Agency (NSA) is a national-level intelligence agency of the United States Department of Defense, under the authority of the Director of National Intelligence (DNI). The NSA is responsible for global monitoring, collectio ...
(NSA), evidence obtained from the code of various Equation Group software suggests that they are part of the NSA.
Researchers from the Kaspersky Lab categorized the undertakings by Equation Group as the most advanced hacking operation ever uncovered, also documenting around 500 infections caused by the Equation Group in at least 42 countries.
Security risks
Mark Shuttleworth, the founder of the company
Canonical, which maintains the
Ubuntu Linux distribution, has described
proprietary firmware as a security risk, saying that "firmware on your device is the
NSA's best friend" and calling firmware "a trojan horse of monumental proportions". He has asserted that low-quality,
closed source firmware is a major threat to system security:
"Your biggest mistake is to assume that the NSA is the only institution abusing this position of trust in fact, it's reasonable to assume that all firmware is a cesspool of insecurity, courtesy of incompetence of the highest degree from manufacturers, and competence of the highest degree from a very wide range of such agencies". As a potential solution to this problem, he has called for declarative firmware, which would describe "hardware linkage and dependencies" and "should not include
executable code". Firmware should be
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
so that the code can be checked and verified.
Custom firmware hacks have also focused on injecting
malware
Malware (a portmanteau for ''malicious software'') is any software intentionally designed to cause disruption to a computer, server, client, or computer network, leak private information, gain unauthorized access to information or systems, depri ...
into devices such as smartphones or
USB devices. One such smartphone injection was demonstrated on the
Symbian OS at
MalCon, a
hacker convention. A USB device firmware hack called
BadUSB was presented at the
Black Hat USA 2014 conference, demonstrating how a
USB flash drive microcontroller can be reprogrammed to spoof various other device types to take control of a computer, exfiltrate data, or spy on the user. Other security researchers have worked further on how to exploit the principles behind BadUSB, releasing at the same time the source code of hacking tools that can be used to modify the behavior of different USB devices.
See also
*
Bootloader
*
Computer hardware
*
Coreboot
*
Custom firmware
*
Microcode
In processor design, microcode (μcode) is a technique that interposes a layer of computer organization between the central processing unit (CPU) hardware and the programmer-visible instruction set architecture of a computer. Microcode is a laye ...
*
Proprietary device driver
*
Real-time operating system
*
ROM image
References
{{Authority control
Firmware