WEBVTT

00:00:00.000 --> 00:00:04.480
These days, we're used to just plugging things into our computers and having them simply work

00:00:04.480 --> 00:00:09.200
right away. And while it's true that you might need to install drivers for an odd couple of

00:00:09.200 --> 00:00:14.880
things like a chipset or RGB, Windows does a remarkably good job of knowing exactly what's

00:00:14.880 --> 00:00:19.440
connected to the PC and using appropriate drivers. But it wasn't always like this.

00:00:19.440 --> 00:00:24.000
Back before the days of plug-and-play hardware, you had to manually configure

00:00:24.000 --> 00:00:28.560
how the system would assign resources to whichever gadget you were installing.

00:00:28.560 --> 00:00:33.840
Every piece of hardware needs to be assigned addresses for memory and IO access so the system

00:00:33.840 --> 00:00:39.440
knows where to send data. These days, it's almost always handled automatically by the operating

00:00:39.440 --> 00:00:46.320
system. But back in the day, you had to find free addresses yourself and possibly even set switches

00:00:46.320 --> 00:00:52.080
or do soldering on the actual hardware, not things that lend themselves well to novice users.

00:00:52.080 --> 00:00:57.120
Plug and Play came to save us with the release of Windows 95. You might remember how it would

00:00:57.120 --> 00:01:04.160
try and automatically set up hardware when you first installed the OS. Although there were other

00:01:04.160 --> 00:01:09.360
prior technologies that tried to enable automatic hardware setup, the Windows 95 launch marked the

00:01:09.360 --> 00:01:14.640
first time consumers experienced widespread support for the technology. Of course, that didn't

00:01:14.640 --> 00:01:20.240
necessarily mean that it worked well. Although Windows 95 could recognize some devices without a

00:01:20.240 --> 00:01:26.320
hitch, there still wasn't a universal plug-and-play standard that all device manufacturers used.

00:01:26.320 --> 00:01:32.240
And to complicate matters, the BIOS had to be on the same page as the device and the OS as well.

00:01:32.960 --> 00:01:37.440
Furthermore, this was back when the internet was in its infancy and tons of users running

00:01:37.440 --> 00:01:42.640
Windows 95 didn't even have an internet connection, meaning that while Windows came with some drivers

00:01:42.640 --> 00:01:48.160
preloaded, it couldn't cover everything as the OS was unable to pull drivers off the server and

00:01:48.160 --> 00:01:52.560
oftentimes the system wouldn't know what to do with the new gadget. This led users to

00:01:52.640 --> 00:01:57.840
derisively refer to the technology as plug-and-pray, as you never quite knew if the system would

00:01:57.840 --> 00:02:03.040
automatically recognize the device or not when you first plugged it in. Indeed, Microsoft actually

00:02:03.040 --> 00:02:08.240
had an infamous egg on their face moment during the Windows 98 demo that featured Bill Gates himself.

00:02:08.240 --> 00:02:12.640
They plugged in a scanner in an attempt to show how the new OS supported plug-and-play

00:02:12.640 --> 00:02:15.280
and the system blue screened as soon as it was connected.

00:02:15.840 --> 00:02:26.240
But as time went on, the industry figured out improvements to the technology. The ACPI

00:02:26.240 --> 00:02:31.040
standard, which started becoming widespread in the early 2000s, gave Windows a more standardized

00:02:31.040 --> 00:02:35.920
way to connect devices rather than relying on firmware support from the BIOS, which was more

00:02:35.920 --> 00:02:40.960
inconsistent. ACPI allowed the motherboard to tell Windows automatically what hardware was connected,

00:02:40.960 --> 00:02:45.680
which was a big step in the right direction. Manufacturers of other devices also started

00:02:45.680 --> 00:02:50.000
baking in more information that the system could read to automatically tell what was plugged in.

00:02:50.000 --> 00:02:55.760
For example, PCI adapter cards, including ones that use the later PCI Express protocol,

00:02:55.760 --> 00:03:00.960
have a configuration space that contains information about what kind of device it is,

00:03:00.960 --> 00:03:05.280
who made it, and what its capabilities are so that the system can react accordingly.

00:03:05.280 --> 00:03:10.640
Similarly, USB devices have controller chips inside them that also contain identifying information

00:03:10.640 --> 00:03:16.000
so that Windows can fetch the right drivers. And as we alluded to earlier, the ubiquity of high

00:03:16.000 --> 00:03:21.120
speed internet connections has made it feasible for Windows itself to take these hardware identifiers

00:03:21.120 --> 00:03:26.560
and match them with a large repository of up-to-date drivers that manufacturers send to Microsoft,

00:03:26.560 --> 00:03:31.920
making it trivial for the OS to grab a needed driver in most cases. Although this is extremely

00:03:31.920 --> 00:03:37.600
convenient, part of me does still miss the days when you had to insert a floppy disk with a driver

00:03:37.600 --> 00:03:43.280
and listen to it make all sorts of ungodly noises. Oh yeah. That's the good stuff.

00:03:45.360 --> 00:03:49.040
So thanks for watching TechWiki. If you liked this video, give us a like, hit subscribe,

00:03:49.040 --> 00:03:52.400
and be sure to hit us up in the comments section with your suggestions for topics that we should

00:03:52.400 --> 00:03:53.680
cover in the future.
