Drivers are the translation layer between software – more specifically, Windows or whatever your operating system is – and the hardware. Firmware is the software that runs on the hardware itself, managing it since it is its own separate circuit board with its own chips on it.
Firmware is software designed to run on, and manage, a specific hardware device. It’s software, but it’s the kind of software that wouldn’t work on any other model of hardware because it’s designed to manage this exact circuit board.
Your motherboard’s firmware is usually called the BIOS, or UEFI these days.
Devices like a digital desk telephone, a network router or access point, or any “smart” device, usually have firmware.
Cell phone’s firmware will include the basic apps that come with the phone… the home screen, Google’s apps, the Settings tool, and so on and so forth, but it includes software to manage the hardware that is on this specific phone. If you loaded it onto any other phone it probably will not run, or if it did it might not have cellular access, the touch screen might not work at all, or other things are broken.
Firmware lives on the hardware and exists to let the hardware do its job. Not getting detailed/accurate on this example, but firmware on a fancy LED keyboard might involve setting the right voltages and routing it to the LEDs.
Drivers live in your operating system and exist to tell your operating system what data to send to the hardware. On a fancy LED keyboard the driver might include codes that need to be sent to activate certain colors (and might live on top of the universal keyboard driver that lets your OS understand which codes coming from the keyboard correspond to which keypresses)
You’ve got the right idea for drivers, serving as a translation layer.
Firmware is the software that runs on the device– it’s what’s on the other end of the driver. On one end it’s talking to your operating system which talks to applications on your computer, but on the other end it talks to the firmware running on the device.
In addition to communication the firmware runs the device itself. For example, the firmware on a printer might run the display, listen to the buttons, and control the motors that advance the page and move the printer heads around. Firmware on a mouse might deal with running the RGB LEDs to make sure you know you’re a gamer, while running the optical sensor that tracks how the mouse moves.
Essentially Firmware and Drivers are both sides of the same coin.
The Firmware is the code that runs on the hardware, and the drivers are the code that runs on your machine. Only the drivers understand how to talk to the firmware, the operating system does not on its own understand how to talk to hardware.
There’s a lot of different layers of “computer” inside a computer, it’s real trippy.
For example, a hard drive is a computer! It has its own “controller”, which is basically a CPU. When your computer wants to read stuff from the hard drive, it basically writes a letter to the “controller” describing what it wants, then it has to wait around to get the response. The way the OS “writes a letter” is dictated by the “driver”: it’s the interface between the OS and a piece of hardware.
But inside that hard drive, the “controller” has to follow a program to do that. It needs to know how to actually read the data it’s been asked to produce. That program is called “firmware”. It’s internal to the hard drive, but it’s still a program that is the interface between the “controller” and the actual data storage.
The way the names were picked goes like this:
**Hardware** is physical objects like RAM and disk drives. The only way to change it is to swap it out with a new part. That is tough, and can involve having to turn off the entire computer and update a lot of things.
**Software** is the programs that the computer runs. It’s easy to move around, swap, and modify, that’s why it’s “soft”.
**Firmware** is in between. It’s software that is used by a piece of hardware. It’s not part of the OS, and not as easy to update or change as software. But it CAN be updated without removing or swapping physical parts. So it’s not “hard”, and it’s not “soft”, so it’s something in between: firm.
Firmware is software that runs the device itself, drivers are what allow it to communicate with a computer and are installed on the computer. An internet connected device could have firmware that receives updates even if it’s not connected to computers and such. Say a smart thermostat. It’ll have firmware that gets updated, but a printer will have both firmware that controls the printer’s operating and drivers that allow computers connected to it to communicate.
Drivers are software that tells the hardware how to interact with each other.
Firmware tells the hardware it’s a part of how to act. It operates lights and mechanisms on the device.
User says “do this”
The computer’s software interprets that and tells the driver “I want to do this”
The driver translates that to what the other device can understand and says “do this”
The firmware gets those instructions, and does the thing.
Your computer has three main software layers:
* The firmware that runs the low-level hardware
* The operating system
* The applications you run
Drivers do translate between software and hardware, but they can be in the operating system or the firmware. Just the fact that you can boot into your firmware to change settings means it has video, USB, and keyboard drivers in it. But they can be more than that. For example, the Apple Mac firmware lets you restore your OS from an external disk or network, so it has disk and network drivers in it too.
But for example the firmware video driver will be very primitive, no acceleration, just enough to display what it needs. The video driver in your operating system is much more complicated and gives you acceleration for the OS and applications.
Now these lines are quite blurred when it comes to phones.
Latest Answers