By Noor Ibrahim
At a fundamental level, two main components comprise a computer—software and hardware. The software is your operating system (OS) and any programs and apps you have installed on it. Your motherboard, RAM, mouse, keyboard, printer, and anything else physical connected to your computer make up the hardware.
Without any help, the software doesn’t know how to talk to your hardware and vice versa. Hardware drivers are bits of software that teach your OS, programs, and apps how to work with your devices. Imagine your OS speaks English, and your hardware speaks German. Hardware drivers, then, are the language interpreter converting English to German and back again.
Manufacturers Make Drivers; Software Developers Use Them
Since drivers handle hardware translation, you might think that means the manufacturers that make hardware make the drivers. That’s true some of the time; chances are the manufacturer made your graphics driver, for instance. But that isn’t always true.
Microsoft (and some manufacturers) provides universal drivers that anyone can use. These drivers offer cost savings and consistency in performance across devices. Skipping the driver creation process empowers the manufacturer to tune its hardware to a well known thoroughly tested driver with specifications that fit the company’s needs. Your mouse, keyboard, and USB drives are likely using generic Microsoft-made drivers, for instance.
Some devices can use generic drivers but may perform better with device-specific drivers. For example, your computer’s graphics card (GPU) can output your desktop to a display with generic drivers, but it needs drivers from its manufacturer—NVIDIA, AMD, or Intel—for optimal 3D gaming performance.
Regardless of who makes the driver, software developers take advantage of and use them. Your text editor or word processor calls the print driver to work with the printer and the graphics driver to display text. Without those drivers, your program doesn’t know how to talk to the printer or monitor to accomplish essential functions like printing and changing the font size. Hardware drivers give software developers a leg up though; they don’t have to learn the ins and outs of hardware language to use the hardware.
The software developer doesn’t have to spend a ton of time reinventing the wheel. If an app needs to print, its developer can implement a basic print function and trust the system’s printer drivers to handle the details. Otherwise, the software developer might need to design a print operation for HP printers, then Brother Printers, and so on.
Software sometimes uses multiple drivers to work with a device, passing the data through each. To return to our language barrier example, imagine your Software speaks English, and your Hardware speaks German. Unfortunately, the first device interpreter on hand only speaks English and Italian. That’s enough to facilitate communication. Now, imagine a second interpreter arrived who spoke Italian and German. By sending down the line through the two interpreters, eventually, communication would work. The same basic concept occurs when multiple drivers are in use between software and hardware.
(Approved by Millenial Engineers).