Neptun maintenance series part 1: Driver updates on your laptop

Killian Keller

28 June 2017


Drivers are an important part of our system, yet not many people know what they are, or what they do. Our computers work with a two-level abstraction: the kernel space level and the user space level. Users interact with the user space directly (GUI, applications), while the kernel controls all the input and output of the system, interacts with periphery and with the different storage elements in your computer. The drivers tell the kernel how to communicate with each periphery device, with each storage element and every other element connected to your computer.

That’s why it’s important to install drivers for your computer and keep them up to date. If they aren’t installed, a new device you attached to your computer may not work and if they are not updated, the periphery may not work properly. There are a couple more problems which can show up with out-of-date drivers. There may be security loopholes, allowing attackers to exploit your hardware and gain access to your system (e.g. NVidia vulnerabilities in Windows GPU drivers, 2015). Furthermore, if the wrong drivers or outdated ones are installed, hardware can completely misbehave, like a mouse slowing down the whole system because it tries to allocate more and more memory for its purpose.

Driver Implementation in different operating systems

Every operating system has its own way to handle drivers.

Windows, on the one hand, has a naked kernel: The drivers and the kernel are installed separately. They all have to be distributed to the system in order for a device to work. Drivers in Windows are managed by an IO manager, which surveils all communication from the user space to the kernel space.

Most Linux systems, on the other hand, are delivered with a multitude of drivers already preinstalled in their kernel. These drivers are implemented as modules, which can be loaded, removed and activated dynamically. This allows the user to switch out drivers for one device to see which one works best.
Devices connected to a Linux machine are accessible over its filesystem. In contrast to Windows, where the drivers are managed by an IO manager, the access to the modules in linux is direct, allowing faster communication with the hardware.

In the Mac OS X operating system, the user usually doesn’t need to worry about drivers. As the hardware supported by Apple is very limited and mostly created by themselves, most drivers are already included in the system, providing hassle-free usage of peripherals created by Apple. However, there are a couple of exotic devices, for which drivers are not pre-installed in the operating system. Drivers for those devices need to be installed manually, but the manufacturers often provide binary installation packages.

Updating and installing drivers

Updating and installing drivers in Mac OS X:

Updating software in Mac OS X systems is pretty straightforward: Either the updates come in the form of an operating system upgrade or they are available over App Store updates. The App Store is installed on all newer versions of Mac OS X. The updates can be started by opening the App Store and clicking on the Updates Tab.

Installing drivers on MacBooks is often not necessary. But if it occurs please refer to the instructions of the manufacturer of your peripheral or device.

Updating and installing drivers in Linux systems:

Updating and installing drivers in Linux is a little bit trickier. There are three major ways to install, update and remove drivers from your system.
The first one is via a binary. For popular devices used by many Linux users, someone may have written a binary installer for the drivers of these devices (e.g. printers from HP, HPLib). This method is often hassle-free and can be performed without problems by inexperienced Linux users.

The second method is via kernel updates (or system updates). By updating your kernel, you will update your existing drivers and overwrite any changes you made to your system or that a manufacturer made for you. (Link not up to date, kernel described is old).

The third method gives you full control over your drivers. You can load and remove drivers you compiled yourself (modules) to/from the kernel. By doing so, you have a large degree of freedom. However, with this degree of freedom, you can also make some bad mistakes (which can be reversed most of the time). How to load and remove drivers is described here in the Ubuntu Documentation and right here.

Updating drivers in Microsoft Windows:

Of all three operating systems, keeping your drivers up-to-date is probably the most important in Windows systems. As Windows systems only come with a very small amount of pre-installed drivers, all the drivers have to be installed after the initial installation of Windows on your device.
If you buy your laptop from a major company like HP or Lenovo, they will have taken care of the drivers for you, there will be no need to install any drivers after buying a laptop with a pre-installed Windows system. If you buy a laptop without operating system and install Windows yourself, you have to install the missing drivers yourself. Updating is always a task the user has to take care of. Fortunately, keeping drivers up-to-date in Windows can be very easy.

In general, most drivers for your devices are installed over the Windows Update utility. Windows Update gets a notification as soon as a new device is plugged in and automatically searches in the Microsoft database for the corresponding drivers.
If Windows Update comes up empty-handed, drivers for most devices can be downloaded from the manufacturer’s web page in the form of an installation binary. These binaries do everything for you. They install the drivers in the correct place and tell Windows when to use them.

If the manufacturer of your device doesn’t provide an installation binary, he will most likely provide a driver in form of an .inf file. These files need to be installed using the Device Manager. Open your device manager, right-click on your new device, and select properties. In the Drivers Tab, select Update Drivers. Browse My Computer and select your .inf file. After the installation process is done, you will have successfully manually updated the driver for this device.

The third option are driver managers. Big companies like Lenovo or HP like to provide driver managers for their customers. Those managers keep all the drivers for your system up-to-date and install missing ones. These tools often come with even more functionality, which will not be discussed in this text.

Lenovo has three different software solutions to keep your system up-to-date. The first one is the Lenovo Companion. It manages the system and driver updates for you. It is the tool with the most features. The second tool is the ThinkVantage System Update. Just like the Companion, System Update will download and install any missing drivers. Both tools can be used interchangeably. The third tool is the Lenovo Service Bridge. The Service Bridge automatically detects your model and serial number via Lenovo’s device support web page, allowing Lenovo quick access your drivers. The Lenovo Companion app is preinstalled on Lenovo laptops, however we recommend using the ThinkVantage System Update program to keep your drivers up to date.

HP also offers two tools to keep your system up-to-date. The first tool is the HP Support Assistant. It checks your system for out-of-date drivers and tools from HP. Furthermore it surveils your system for problems and helps during self-support. The other tool from HP is the HP Softpaq Download Manager. This tool manages updates for your computer and provides a overview over the available packages. The HP Support Assistant and possibly the Softpaq Download Manager are pre-installed on HP Laptops. We recommend using the Softpaq Download Manager to keep your system up to date.
Owner of Microsoft Surface devices don’t need to install any additional tools: Their driver manager is the Windows Update service.

Updating drivers in HP Printers

While they aren’t called drivers, printer firmware also needs to be updated from time to time. Printers manufactured after 2010 with internet services can be updated with the printer interface itself. It then downloads an update and installs it. If the printer has been manufactured before 2010 or has no internet access, it can be updated locally with the HP Download and Install Assistant. It requires a connection with a host computer where the assistant has been launched and where the appropriate firmware has been downloaded.