Команда lspci позволяет задействовать одноименную утилиту, предназначенную для вывода информации о PCI-шинах и подключенных к ним устройствах. Она поддерживает все разновидности PCI-шин: классическую шину PCI (Peripheral Component Interconnect), ее серверный вариант PCI-X и ее современный вариант PCIe (PCI-Express). Обычно к данной шине подключаются такие устройства, как графические, звуковые и сетевые карты, Wi-Fi и Bluetooth-адаптеры, SSD-накопители, а также множество других устройств. Она реализована как в настольных компьютерах, так и в ноутбуках и некоторых встраиваемых системах. Каждое из устройств имеет пару 16-битных идентификаторов: идентификатор производителя (Vendor ID) и идентификатор устройства (Device ID), которые следует использовать для идентификации устройств и поиска драйверов в случае их отсутствия в ядре ОС, а также несколько дополнительных идентификаторов, устанавливаемых производителем. В составе дистрибутивов Linux имеется файл базы данных устройств, содержащий названия устройств с известными идентификаторами. Данная команда крайне полезна для идентификации и диагностики устройств компьютера. Она выводит результаты в формате списка, который может фильтроваться с помощью утилиты grep.
Базовый синтаксис команды выглядит следующим образом:
$ lspci [параметры]
Утилита может вызываться как без параметров, так и с ними. Наиболее полезными параметрами являются параметры -m и -mm, предназначенные для вывода установленных производителем идентификаторов устройств, параметр -t, предназначенный для вывода информации в древовидном формате, параметр -v для вывода подробной информации об устройствах, параметр -n для вывода идентификаторов устройств, а также параметры -s и -d для вывода информации об устройствах в заданных слотах и с заданными идентификаторами соотвественно.
Для вывода списка PCI-устройств достаточно использовать утилиту без каких-либо параметров. Прав суперпользователя для ее работы не требуется.
$ lspci
00:00.0 Host bridge: Intel Corporation 4 Series Chipset DRAM Controller (rev 03)
00:01.0 PCI bridge: Intel Corporation 4 Series Chipset PCI Express Root Port (rev 03)
00:1b.0 Audio device: Intel Corporation NM10/ICH7 Family High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 1 (rev 01)
00:1c.1 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 2 (rev 01)
00:1c.2 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 3 (rev 01)
00:1d.0 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #1 (rev 01)
00:1d.1 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #2 (rev 01)
00:1d.2 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #3 (rev 01)
00:1d.3 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #4 (rev 01)
00:1d.7 USB controller: Intel Corporation NM10/ICH7 Family USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
00:1f.2 IDE interface: Intel Corporation NM10/ICH7 Family SATA Controller [IDE mode] (rev 01)
00:1f.3 SMBus: Intel Corporation NM10/ICH7 Family SMBus Controller (rev 01)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Oland [Radeon HD 8570 / R7 240/340 / Radeon 520 OEM]
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series]
03:00.0 Ethernet controller: Qualcomm Atheros AR8131 Gigabit Ethernet (rev c0)
05:00.0 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 61)
05:00.1 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 61)
05:00.2 USB controller: VIA Technologies, Inc. USB 2.0 (rev 63)
05:01.0 Multimedia video controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)
05:01.2 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05)
Вывод достаточно объемный, но имеет строго регламентированную структуру. По сути, параметры устройств разделены пробелами. Возьмем последнюю строку в качестве примера:
Несложно убедиться, что все строки имеют схожий формат. При этом в списке отражена информация как о вставленных в PCI-слоты, так и встроенных в материнскую плату устройствах.
Для того, чтобы вывести подробную информацию о PCI-устройствах, следует использовать комбинацию параметров -v и -mm:
$ lspci -v -mm
…
Slot: 01:00.0
Class: VGA compatible controller
Vendor: Advanced Micro Devices, Inc. [AMD/ATI]
Device: Oland [Radeon HD 8570 / R7 240/340 / Radeon 520 OEM]
SVendor: Bitland(ShenZhen) Information Technology Co., Ltd.
SDevice: Oland [Radeon HD 8570 / R7 240/340 / Radeon 520 OEM]
Slot: 01:00.1
Class: Audio device
Vendor: Advanced Micro Devices, Inc. [AMD/ATI]
Device: Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series]
SVendor: Bitland(ShenZhen) Information Technology Co., Ltd.
SDevice: Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series]
…
Slot: 05:01.0
Class: Multimedia video controller
Vendor: Conexant Systems, Inc.
Device: CX23880/1/2/3 PCI Video and Audio Decoder
SVendor: Unknown vendor 8920
SDevice: CX23880/1/2/3 PCI Video and Audio Decoder
Rev: 05
Slot: 05:01.2
Class: Multimedia controller
Vendor: Conexant Systems, Inc.
Device: CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port]
SVendor: Unknown vendor 8920
SDevice: CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port]
Rev: 05
Вывод сокращен, но несложно заметить, что дополнительно выводится информация об идентификаторах устройства, заданных непосредственным производителем.
Для вывода числовых идентификаторов PCI-устройств предназначен параметр -n.
$ lspci -n
00:00.0 0600: 8086:2e30 (rev 03)
00:01.0 0604: 8086:2e31 (rev 03)
00:1b.0 0403: 8086:27d8 (rev 01)
00:1c.0 0604: 8086:27d0 (rev 01)
00:1c.1 0604: 8086:27d2 (rev 01)
00:1c.2 0604: 8086:27d4 (rev 01)
00:1d.0 0c03: 8086:27c8 (rev 01)
00:1d.1 0c03: 8086:27c9 (rev 01)
00:1d.2 0c03: 8086:27ca (rev 01)
00:1d.3 0c03: 8086:27cb (rev 01)
00:1d.7 0c03: 8086:27cc (rev 01)
00:1e.0 0604: 8086:244e (rev e1)
00:1f.0 0601: 8086:27b8 (rev 01)
00:1f.1 0101: 8086:27df (rev 01)
00:1f.2 0101: 8086:27c0 (rev 01)
00:1f.3 0c05: 8086:27da (rev 01)
01:00.0 0300: 1002:6611
01:00.1 0403: 1002:aab0
03:00.0 0200: 1969:1063 (rev c0)
05:00.0 0c03: 1106:3038 (rev 61)
05:00.1 0c03: 1106:3038 (rev 61)
05:00.2 0c03: 1106:3104 (rev 63)
05:01.0 0400: 14f1:8800 (rev 05)
05:01.2 0480: 14f1:8802 (rev 05)
Едва ли данный режим работы утилиты понадобится большинству пользователей.
Для того, чтобы вывести информацию о заданном PCI-слоте и устройствах в нем достаточно использовать параметр -s и передать утилите идентификатор интересующего слота:
$ lspci -s 05:01
05:01.0 Multimedia video controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)
05:01.2 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05)
Что касается информации об устройствах, то совместно с параметром -d может использоваться как идентификатор производителя:
$ lspci -d 14f1:
05:01.0 Multimedia video controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)
05:01.2 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05)
Так и идентификатор устройства:
$ lspci -d :8800
05:01.0 Multimedia video controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)
Не стоит забывать о двоеточии, которое указывает на используемый идентификатор: идентификатор производителя должен иметь двоеточие в конце, идентификатор устройства — в начале.