On Windows it was always pretty easy. You’d right-click My Computer, select Properties, and open the Devices tab. There you’d get a nice tree view of all the hardware in your system: mice and keyboards, monitors, hard drives, and the succulent central part — the Video Adapter.
On Linux, the default way is through the terminal. The tool is called lspci. It shows the PCI devices your system has detected — everything from GPUs to network cards — and it even tells you which driver is in use. Remember when I said the Linux kernel comes bundled with hundreds of thousands of drivers? With lspci
you can see exactly which one is being used. And unlike on Windows, you usually don’t manage driver versions yourself. They’re part of the kernel — whether you’re on 5.15, 6.8, or the upcoming 6.17, you get whatever drivers ship with that kernel.
Running:
lspci -k
might give you something like:
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
Subsystem: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU
Subsystem: Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
Subsystem: Advanced Micro Devices, Inc. [AMD] Device 1453
Kernel driver in use: pcieport
Decoding the numbers
Don’t be intimidated by the numbers at the beginning of each line — they’re actually pretty simple:
-
Bus number → like the street where the device lives.
-
Device slot → the building number on that street. Each bus can hold up to 32 devices.
-
Function → the floor in that building. A single device can expose multiple functions.
GPUs are a good example: most modern cards show up with both a VGA function (the actual video output) and an audio function (HDMI sound). Even on Windows you’ve probably seen HDMI audio outputs listed among playback devices.
Sometimes you’ll also see all available drivers, not just the one in use:
Kernel driver in use: nvidia
Kernel modules: nouveau, nvidia_drm, nvidia
What about storage?
For disks, the tool is lsblk. It lists block devices — storage devices that read and write data in blocks (as opposed to byte-by-byte).
Output typically looks like:
-
/dev/sda
,/dev/sdb
,/dev/sdc
, etc. → SATA or SSD drives -
/dev/nvme0n1
,/dev/nvme1n1
→ NVMe drives
Back in the day, hard drives showed up as /dev/hda
, /dev/hdb
, etc. But with the arrival of SATA and SSDs, Linux switched to /dev/sdX
. NVMe later introduced its own naming scheme.
And graphical tools?
Here Linux is still a bit fragmented. There isn’t a single “Device Manager” equivalent.
-
KDE’s System Settings shows some hardware, but split across separate sections (audio, networking, printers, etc.), not in one unified tree.
-
GNOME is similar — some info is available, but not everything.
The closest “all-in-one” tool is HardInfo2. It actually dates back to 2003 but is still maintained today. It gives you a Windows-like overview of your system, though it’s not installed by default on most distros.
So in short: Linux gives you powerful command-line tools like lspci
and lsblk
for hardware visibility, but the GUI side is scattered. If you’re used to Windows’ neat Device Manager tree, you’ll miss that — though projects like HardInfo2 help fill the gap.