What is firmware and why is it in all electronic devices?

You can also be interested in these:

Firmware is a term that many people confuse or are completely unaware of its meaning. For that reason, in this article you will be able to know more closely everything that this low-level code means, in addition to understanding what it is for, why it is important to update it, in which hardware devices it is present, etc.

What is firmware?

Firmware is something intermediate between software and hardware. Some include it as a special software, others include it within what is hardware. It is something intermediate, as I have said, that is a code with elementary routines or simple program at a very low level that is stored in a non-volatile memory (EERPOM, flash, etc.) and that serves so that the hardware can perform all the functions for which it has been designed.

Currently, firmware has approached or integrated with drivers or controllers, which usually include it to make it easier to update and manage by the user. In addition, it implies less risks when modifying it than when it is directly recorded on the hardware at the time of manufacturing.

It seems that the American computer scientist Ascher Opler coined the term firmware in a 1967 edition of the publication Datamation. He used the term to describe a type of microprogram between hardware and software. Its name comes from firm or signature.

As you know, this firmware is present in many hardware devices, such as mobile devices, IoT devices, CPU, graphics cards, optical units, routers, NAS, peripherals, etc. We will analyze its uses later, but it is important that you understand its importance for everything to work as it should, since without it it would not be possible.

Firmware is one more layer that would be found between the device drivers or controllers and the hardware. However, it is important to highlight what I have already commented on previously, and that is that much of the current firmware is implemented within the drivers or kernel modules themselves to make it easier to update. Although it is true that during the startup it is usually loaded into the hardware memory so that the device in question can function.

What is the difference between firmware vs driver

There are notable differences between a driver or controller and firmware. Although in some cases the difference seems to dilute and when downloading the drivers you are also downloading the firmware, the truth is that there are notable differences:

  • Firmware is a routine or low-level program that operates for a specific hardware in addition to providing an API/ABI for the high level, that is, for drivers.
  • Drivers or controllers provide a means or interface for the operating system to use that API/ABI exposed by the firmware.
  • A device driver or controller is a high-level software that allows the operating system to communicate with the devices or hardware and manage their resources.
  • Firmware is a special program within the device that allows to perform the functions of the I/O hardware, etc. They are usually loaded in a non-volatile memory like an EEPROM or flash.
  • Drivers or controllers are specific to the operating system and dependent on the hardware.
  • Firmware is independent of the operating system, as well as closely related to the hardware.

What is the difference between firmware vs software

As I have commented before, some consider firmware as a kind of software, but it is different. To differentiate between conventional software and firmware of lower level, we can analyze these statements:

  • Firmware is very elementary code, just routines or a program with basic low-level instructions for the hardware to work and communicate with the rest of the software. However, there is more complex firmware such as BIOS/UEFI.
  • The control that firmware does is low-level, just controlling the elementary functions of the hardware.
  • Software is designed for users to interact with it easily. And it can have very diverse functions.
  • Firmware is something much more specific and generally hidden from the user.
  • Software is of higher level.
  • Firmware is of low level, almost working intimately with the hardware.
  • A software can be changed without having to replace a hardware component.
  • Firmware cannot be replaced in many cases without replacing the accompanying hardware. It can only be updated in some cases where this is allowed.
  • Firmware is integrated into non-volatile memory chips or loaded on the hardware device during boot.
  • Software is not integrated into any hardware component. It is only stored on the secondary storage unit and will be loaded into RAM to be executed when necessary and the kernel of the operating system needs to run that process.

Types of firmware

There are several types of firmware that can be found in different hardware devices. Not all firmware is the same, and we must differentiate between:

Low-level firmware is an intrinsic or inseparable part of hardware. It is often stored in non-volatile memory chips, such as read-only memories like a ROM, and therefore cannot be rewritten or updated. In other words, low-level firmware has programmable memory that is programmed after its manufacture and remains unaltered during the device’s lifetime. High-level firmware, on the other hand, allows for updates and is generally more complex than low-level firmware. This type of firmware resides in flash memory chips, which can be flashed, such as a BIOS/UEFI. Subsystem firmware comes as part of an integrated system. It is similar to high-level firmware in that it can be updated and is more complex than low-level firmware, although it is usually less complex than high-level firmware. For example, the ACPI that manages power.

Firmware Applications

As you can imagine, there are various applications of firmware that you use daily without realizing that this code or routines are there, as it works completely transparently. The most well-known cases are:

  • Computers: it can be the BIOS or UEFI itself, which is integrated into a small flash memory chip on the motherboard and is responsible for checking the operation of components and peripherals during startup and performing all the routine for the equipment to start, including loading the operating system searching it between the different storage media. Peripherals, such as graphics cards, routers, optical drives, printers, webcams, card readers, mouse, keyboard, etc., also contain their own firmware. Even the CPU has its firmware or microcode included within the CPU chip or in the BIOS/UEFI. On the other hand, many storage devices, whether internal or external, also contain firmware. As you know, hard drives or SSDs have it, as well as USB drives or NAS devices.
  • Mobile devices: these, as small computers that they are, also contain firmware that allows the hardware to work correctly. In this case, it is usually updated with the operating system itself, as when OTA updates arrive for Android or iOS. And it can be in various parts that make up these mobile devices, such as screen controllers, flash storage units, card readers, SoC, etc.
  • Others: it is also present in many other devices and technologies that we use daily and that you had not even considered that they could contain firmware, in addition to hardware and software.

Other applications of firmware are:

  • Vehicles: they contain many integrated systems, sensors, and small computers that contain firmware that allows them to perform their designated tasks.
  • Appliances: dishwashers, washing machines, small appliances, kitchen robots or vacuums, televisions, etc., are among the appliances that contain firmware. The firmware helps the machine communicate with the computer used to set up machine settings and control its operation.
  • Smart cards: many smart cards have instructions built into a chip that provides the basic functionality of the card, as well as authentication and encryption.

In other words, firmware is present in many devices with electronics and is essential for their proper functioning. Without it, they could not be used.

What is a firmware update?

Of course, updating firmware is as vital as updating software, and even more important in some cases. This will depend on the proper functioning of the hardware devices that you use at home.

With exceptions, the firmware of devices is usually updated together with updates of the operating system itself or with drivers or controllers. Only in some cases this is not the case, and it has to be done independently, such as in the case of BIOS/UEFI, which is updated separately.

Firmware updates can occur sporadically, such as once every few years, or more frequently. In some cases, firmware is not updated, either because it is perfect or because the developer does not take the trouble to update it. For this reason, I always recommend choosing the most popular manufacturers and with the most frequent firmware updates to avoid problems.

Why do we need firmware updates?

Firmware updates are vital, as I have commented before, and without them serious problems could arise in the hardware. For example, updates can:

  • Solve problems or errors that affect the hardware’s operation.
  • They can add support or compatibility for other related devices.
  • Patch vulnerabilities that affect security and can be exploited for attacks.
  • Add new features to the device that it lacked before the update, although for this it is necessary that the hardware is capable of carrying them out.
  • Improve performance. Many times they are optimized to improve speed. For example, in routers you can see improvements in speed or coverage, in GPUs they are optimized to improve behavior, etc.

For this reason, it is important that you do not neglect your firmware and that you review it from time to time to see if there are available updates. If there are, it is recommended to update. Only in the case of the motherboard’s BIOS/UEFI, you may not need an update in many cases.

Tips on firmware

To finish, I would like to give some tips for updating firmware safely:

  • Always check the version of firmware that is currently installed to see if there is a later version to update.
  • Always follow the manufacturer’s instructions for updating firmware.
  • Do not download firmware from third-party sites, as it may be modified or infected. Always do it from the official website of the hardware manufacturer. For example, you can find updates for the BIOS/UEFI on the website of the OEM computer manufacturer or motherboard manufacturer.
  • Updates that come with the operating system itself are also a reliable source.
  • Keep the equipment always plugged in (better if there is a UPS) or with enough battery to avoid cuts while updating the firmware.

    More stories like this