WEBVTT

00:00:00.000 --> 00:00:05.440
Typically, we think of hardware and software as separate entities that work together to

00:00:05.440 --> 00:00:09.880
provide us with the computing experience that we know and tolerate.

00:00:09.880 --> 00:00:15.680
Hardware is the tangible stuff you can touch, like a keyboard or a hard drive, while software

00:00:15.680 --> 00:00:21.320
is the lines of code that tell the computer to make games, tweets, and CD-doings actually

00:00:21.320 --> 00:00:27.120
appear on your screen. But you may have also heard the word firmware tossed around a fair bit.

00:00:27.120 --> 00:00:31.680
So what is that? Is it something you buy to show off your buns of steel after spending enough time at the

00:00:31.680 --> 00:00:38.040
gym? No. Firmware is often thought of as something in between the software and the hardware.

00:00:38.040 --> 00:00:41.920
It's actually a specific kind of software.

00:00:41.920 --> 00:00:46.720
But unlike your operating system or any other kind of program, it does not typically sit

00:00:46.720 --> 00:00:55.560
on a hard drive or an SSD. Instead, firmware can usually be found on dedicated memory chips, and it's that fact

00:00:55.560 --> 00:01:00.080
combined with that it sits very close to the metal that leads people to think of it

00:01:00.080 --> 00:01:04.480
as kind of like a hardware-software hybrid unit.

00:01:04.480 --> 00:01:07.640
But then, what does close to the metal mean exactly?

00:01:07.640 --> 00:01:14.000
Well, the code that makes up firmware communicates very directly with your hardware, unlike

00:01:14.000 --> 00:01:19.400
a regular program which has to go through APIs, the operating system, and device drivers.

00:01:19.400 --> 00:01:24.680
And the reason for this is that it's meant to provide a fundamental basic link and method

00:01:24.680 --> 00:01:33.760
of control for the system's hardware. For example, inside of a PC, there's a chip that stores the system's UEFI or BIOS, which

00:01:33.760 --> 00:01:37.640
are specific types of firmware that you can learn more about right up here.

00:01:37.640 --> 00:01:42.360
The BIOS starts running as soon as you press the button on your computer, initializing

00:01:42.360 --> 00:01:46.440
the hardware depending on how you've got it configured and checking for any errors.

00:01:46.440 --> 00:01:51.680
Once all that's done, the BIOS hands virtually all of its control over to a much more complex

00:01:51.680 --> 00:01:54.800
operating system, such as Windows or macOS.

00:01:54.800 --> 00:01:59.960
However, the BIOS and older systems provided a simple, reliable link between peripherals

00:01:59.960 --> 00:02:05.080
like the keyboard and system software even after the operating system started running.

00:02:05.080 --> 00:02:09.480
Other types of firmware take a much more active role in how a system functions.

00:02:09.480 --> 00:02:14.800
Your desktop monitor has to decode the digital signal that's sent over an HDMI or display

00:02:14.800 --> 00:02:19.320
port cable to create the image that you see, which requires processing.

00:02:19.320 --> 00:02:22.940
So therefore, it needs some firmware to run the show.

00:02:22.940 --> 00:02:27.680
When you bring up that on-screen menu to change the brightness on your monitor or whatever,

00:02:27.680 --> 00:02:33.040
what you're seeing there is the firmware acting as the monitor's entire operating system.

00:02:33.040 --> 00:02:38.480
So even very simple devices like TV remote control need firmware to turn your button

00:02:38.480 --> 00:02:42.520
meshes into infrared beams that your TV can comprehend.

00:02:42.520 --> 00:02:47.480
So because firmware is so important to these fundamental linkages, it does sometimes need

00:02:47.480 --> 00:02:52.200
to be updated in order to provide extra functionality or to fix bugs.

00:02:52.200 --> 00:02:57.040
A great example is how BIOS updates are issued from other boards so that they can support

00:02:57.040 --> 00:03:00.880
a new CPU that uses the same socket, for example.

00:03:00.880 --> 00:03:05.600
But because most electronics cannot function without firmware, it's often recommended

00:03:05.600 --> 00:03:11.000
to leave it alone unless there's a specific problem that you know would be fixed with

00:03:11.000 --> 00:03:17.120
an update. Because if the update fails due to something like a power outage, the system can end up

00:03:17.200 --> 00:03:24.880
being permanently bricked. Now unlike a corrupted OS, which can just be wiped and reinstalled, corrupted firmware

00:03:24.880 --> 00:03:30.120
often can't be fixed as the system can no longer even understand that you want to wipe

00:03:30.120 --> 00:03:34.680
and reinstall a firmware. It needs not corrupted firmware for that.

00:03:34.680 --> 00:03:39.560
And while some modern systems try to avoid this problem by having like a second BIOS

00:03:39.560 --> 00:03:43.280
or firmware as a failsafe, many gadgets lack this option.

00:03:43.280 --> 00:03:46.800
So make sure that you use caution when you're updating your firmware.

00:03:46.800 --> 00:03:51.560
Make sure the battery is charged, use a UPS for your desktop PC or your television, and

00:03:51.560 --> 00:03:55.960
also verify that you're getting firmware from a reputable source like the manufacturer

00:03:55.960 --> 00:04:00.440
itself. Then there's other firmware that can't be updated at all, either because it's stored

00:04:00.440 --> 00:04:05.880
on ROM or read-only chips that physically cannot be updated, or because there's some

00:04:05.880 --> 00:04:12.800
kind of a software lock. Some devices simply don't need firmware updates, like a really simple USB stick, while others

00:04:12.800 --> 00:04:17.200
use firmware to store proprietary features, making them harder for competitors to figure

00:04:17.200 --> 00:04:22.200
out. However, software restrictions on firmware can often be easily bypassed, either by installing

00:04:22.200 --> 00:04:27.280
custom firmware that can sometimes enable additional functionality, or by malicious

00:04:27.280 --> 00:04:30.360
actors that use firmware as an attack vector.

00:04:30.360 --> 00:04:34.860
Firmware often has no encryption whatsoever, and developers have mostly been concentrating

00:04:34.860 --> 00:04:39.760
on making operating systems and applications secure instead, making firmware a target for

00:04:39.760 --> 00:04:47.040
both hackers and spy agencies. And especially because a firmware hack would obviously survive reformatting the hard drive

00:04:47.040 --> 00:04:54.440
and can be very difficult to detect. And because firmware directly controls hardware, hacked firmware can actually cause physical

00:04:54.440 --> 00:04:59.840
damage even. There was a proof-of-concept on a few years ago where a researcher hacked the firmware

00:04:59.840 --> 00:05:05.360
of an Apple MacBook battery to cause it to overcharge and permanently break.

00:05:05.360 --> 00:05:08.880
Hopefully no one will be able to figure out how to hack the firmware of the smart pizza

00:05:08.880 --> 00:05:12.880
cutter I just bought. Can you imagine?

00:05:12.880 --> 00:05:19.160
I can't, I have no idea where we were going with this. So thanks for watching guys, like, dislike, check out our other videos, and leave a comment

00:05:19.160 --> 00:05:26.320
with a suggestion for a future fast as possible. We would love to cover it for you so that when you're subscribed, make sure you do that

00:05:26.320 --> 00:05:27.600
too, you will see it.
