Команда lspci в Linux — незаменимый инструмент, когда вам нужно узнать о драйверах, с которыми возникают проблемы (или просто посмотреть, что на самом деле установлено в вашем компьютере), а также команда lsusb для USB-устройств.
Эти команды дают вам четкое представление обо всем оборудовании, установленном на вашем компьютере под управлением Linux, и вместе они предоставляют информацию практически обо всем, что физически подключено к нему. Команда lspci покажет вам шину PCI и связанные с ней устройства. С другой стороны, команда lsusb отображает каждый USB-контроллер, а также все устройства, подключенные к их портам.
Обе эти команды происходят из одного и того же семейства программ, которые извлекают данные непосредственно из ядра. Обе команды могут безопасно запускаться обычным пользователем; они работают одинаково в большинстве дистрибутивов. Ниже я расскажу вам о двенадцати реальных примерах того, как я использую эти две команды в своей повседневной административной работе. Я продемонстрировал каждый пример с использованием RHEL, Rocky Linux и Ubuntu.
Совет:
lspci и lsusb лишь сообщают о том, какое оборудование имеется. Ни lspci, ни lsusb не могут изменять настройки, загружать драйверы или физически взаимодействовать с проверяемыми устройствами. Если вы хотите использовать эти команды для просмотра активных процессов, использующих данное оборудование, ознакомьтесь с документацией по команде ps.
Синтаксис
lspci [ОПЦИИ]
Вывести список всех USB-устройств lsusb
Подробный вывод для одного устройства:
lspci -v -s 00:02.0
| Флаг | Полная форма | Описание |
|---|---|---|
-v |
--verbose |
Показать подробную информацию о каждом устройстве |
-vv |
Еще более подробная информация, включая возможности и биты состояния | |
-vvv |
Максимальная подробность, выводит все, что предоставляет ядро | |
-t |
--tree |
Показать устройства в виде дерева по иерархии шин |
-k |
Отображение используемого драйвера ядра для каждого устройства (lspci) | |
-nn |
Показать цифровые идентификаторы производителя и устройства рядом с именами | |
-s |
Фильтрация вывода по конкретному адресу шины/слота (lspci) | |
-d |
Фильтрация по идентификаторам производителя и устройства | |
-D |
Показать номер домена PCI (lspci) |
lspci vs lsusb простым языком
Представьте себе lspci как команду внутренней проверки аппаратного обеспечения (например, видеокарт, сетевых контроллеров и т. д.), расположенного на материнской плате. Представьте себе lsusb как команду проверки всех устройств, подключенных к системе через USB: клавиатуры, мыши, камеры/веб-камеры, принтеры, портативные дисководы/внешние диски. Сам чип контроллера находится на шине PCI, поэтому отображается как «устройство» в lspci. Однако все периферийные устройства (т. е. клавиатуры/мыши/камеры и т. д.), подключенные через этот контроллер, отображаются в lsusb.
Основная команда lspci в Linux: список всех устройств PCI
Команда lspci показывает все устройства PCI, видимые ядру. Это самый быстрый способ получить обзор внутреннего оборудования вашей системы. Каждая строка состоит из адреса шины для устройства PCI, затем класса устройства, за которым следует краткое описание производителя для устройства PCI.
Пример вывода:
00:00.0 Мост хоста: Intel Corporation 8th Gen Core Processor Host Bridge 00:02.0 VGA-совместимый контроллер: Intel Corporation UHD Graphics 630 00:14.0 USB-контроллер: Intel Corporation Cannon Lake PCH USB 3.1 xHCI 00:17.0 Контроллер SATA: Intel Corporation Cannon Lake PCH SATA AHCI Controller 00:1f.6 Контроллер Ethernet: Intel Corporation Ethernet Connection (7) I219-V 02:00.0 Сетевой контроллер: Intel Corporation Wireless-AC 9560
Примечание:
Первое поле (например, 00:1f.6) — это PCI-адрес в формате bus:slot.function. Вы будете использовать этот адрес позже при фильтрации с помощью -s.
Отображение подробной информации с помощью режима lspci Verbose
Если добавить -v к lspci, однострочная сводка о PCI-устройстве превратится в полный отчет. Эта опция предоставляет дополнительную информацию об устройстве, включая используемый модуль ядра, IRQ (запрос прерывания), области памяти и поставщика подсистемы. Это одна из наиболее часто используемых мной опций, когда устройство, по-видимому, неисправно.
Пример вывода (сокращенный):
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (rev 02)
Subsystem: Dell UHD Graphics 630
Flags: bus master, fast devsel, latency 0, IRQ 139
Memory at a2000000 (64-bit, non-prefetchable) [size=16M]
Memory at 90000000 (64-bit, prefetchable) [size=256M]
I/O ports at 5000 [size=64]
Kernel driver in use: i915
Kernel modules: i915
Совет:
Добавьте флаг, чтобы углубиться. lspci -vv добавляет блоки возможностей, а lspci -vvv выводит почти всё, что знает ядро. Для очень подробного вывода обычно требуется права root для некоторых полей, поэтому добавьте префикс sudo. См. руководство по настройке sudo, если вам нужно освежить память, и официальную справочную страницу lspci.
Отображение дерева шин PCI
Опция -t преобразует плоский список в дерево, позволяя увидеть, какое устройство находится за каждым мостом. Это может быть полезно на серверах с несколькими доменами PCI или если у вас есть проблемы с пропускной способностью, связанные с конкретным слотом.
Пример вывода:
-[0000:00]-+-00.0 Intel Corporation Host Bridge
+-02.0 Intel Corporation UHD Graphics 630
+-14.0 Intel Corporation USB 3.1 xHCI Controller
+-17.0 Intel Corporation SATA AHCI Controller
+-1c.0-[02]----00.0 Intel Corporation Wireless-AC 9560
\-1f.6 Intel Corporation Ethernet I219-V
Примечание:
Объединение -t с -v (в виде -tv) сохраняет форму дерева, но добавляет краткое описание для каждого узла, что, как правило, и требуется.
Отображение числовых идентификаторов производителя и устройства
Хотя строка с именем производителя может дать вам представление о том, где искать, часто для поиска драйвера требуется шестнадцатеричное представление числовой пары производитель:устройство. Опция -nn отображает как имя, так и числовой идентификатор устройства в одной строке.
Пример вывода:
00:02.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 630 [8086:3e9b] 00:1f.6 Ethernet controller [0200]: Intel Corporation I219-V [8086:15bc] 02:00.0 Network controller [0280]: Intel Corporation Wireless-AC 9560 [8086:a370]
Совет:
Пара в квадратных скобках (например, [8086:3e9b]) — это значение, которое нужно искать в списках рассылки ядра и в pci-ids.ucw.cz, когда устройство отображается как «Unknown».
Проверьте используемый драйвер ядра с помощью lspci -k
Если устройство отображается в lspci, но не работает, первым делом я проверяю, привязано ли к нему драйвер ядра. Об этом вам сообщит флаг -k. Он предоставит информацию о модуле или модулях, связанных с конкретным устройством, а также о драйвере.
Пример вывода:
02:00.0 Network controller: Intel Corporation Wireless-AC 9560
Subsystem: Intel Corporation Wireless-AC 9560
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
00:1f.6 Ethernet controller: Intel Corporation I219-V
Kernel driver in use: e1000e
Kernel modules: e1000e
Примечание:
Если строка «Используемый драйвер ядра» отсутствует, это означает, что к устройству не привязан драйвер. Обычно это означает, что вам необходимо установить прошивку, занести конфликтующий модуль в черный список или включить правильный модуль ядра.
Проверка отдельного устройства PCI по адресу
Вместо того, чтобы пролистывать весь список, вы можете указать, на каком устройстве сосредоточиться, с помощью флага -s команды lspci в сочетании с -vv для получения максимальной детализации.
Пример вывода:
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (rev 02)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
Latency: 0, Cache Line Size: 64 bytes
Capabilities: [40] Vendor Specific Information: Len=0c
Capabilities: [70] Express Root Complex Integrated Endpoint
Kernel driver in use: i915
Совет:
Вы также можете фильтровать по классу или производителю с помощью -d. Например, lspci -d 8086:: выводит только устройства Intel, а lspci -d ::0300 — только VGA-контроллеры.
Список всех USB-устройств с помощью lsusb
Теперь давайте посмотрим на USB. Команда lsusb предоставит вам список всех устройств, перечисленных ядром, каждое из которых указано в отдельной строке. В каждой строке будет номер шины, номер устройства, идентификатор vendor:product в шестнадцатеричном формате и имя устройства в виде строки.
Пример вывода:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 046d:c534 Logitech, Inc. Unifying Receiver Bus 001 Device 003: ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak Bus 001 Device 002: ID 0bda:58f4 Realtek Semiconductor Corp. Integrated Webcam Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Примечание:
Записи с поставщиком «Linux Foundation» и именем «root hub» не являются физическими устройствами. Это виртуальные концентраторы, которые Linux создает для каждого USB-контроллера. На современном оборудовании вы всегда увидите как минимум два из них (USB 2.0 и USB 3.0).
Отображение USB-устройств в виде дерева с помощью lsusb -t
Если вы хотите просмотреть схему топологии, показывающую, как каждое устройство связано с концентраторами, за которыми оно находится, и их скорости, используйте lsusb с опцией -t. Это позволит вам быстро определить, почему устройство USB 3, похоже, не работает на заданной скорости; возможно, оно просто подключено к порту USB 2 вместо порта USB 3.
Пример вывода:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
|__ Port 2: Dev 2, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 2: Dev 2, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 6: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 9: Dev 4, If 0, Class=HID, Driver=usbhid, 12M
Совет:
Обратите внимание на скорость в конце каждой строки. 5000M означает USB 3.0, 480M — USB 2.0 высокой скорости, а 12M — USB 1.1. Если USB 3-устройство отображается с 480M, попробуйте другой порт или кабель.
Получение полной информации об USB-устройстве с помощью lsusb -v
Чтобы вывести полный дескриптор для каждого отдельного устройства с помощью lsusb, используйте опцию -v. Из-за объема информации, генерируемой этой опцией, ее обычно сочетают с -s, чтобы отобразить информацию только для одного устройства. Кроме того, из-за ограничений доступа к определенным частям дескрипторов вам потребуется запустить эту команду с повышенными привилегиями.
Пример вывода (сокращенный):
Bus 001 Device 004: ID 046d:c534 Logitech, Inc. Unifying Receiver Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 idVendor 0x046d Logitech, Inc. idProduct 0xc534 Unifying Receiver iManufacturer 1 Logitech iProduct 2 USB Receiver bNumConfigurations 1
Примечание:
Адрес, используемый с -s для lsusb, — это bus:device, а не адрес в стиле PCI, используемый lspci. Эти два числа можно сразу прочитать в первом поле простого вывода lsusb.
Фильтрация вывода lsusb по поставщику или продукту
Если вы хотите сократить время, затрачиваемое на просмотр информации из lsusb, используйте опцию -d, которая позволяет фильтровать по заданному идентификатору vendor:product.
Пример вывода:
Bus 001 Device 004: ID 046d:c534 Logitech, Inc. Unifying Receiver
Совет:
Оставьте поле ID продукта пустым после двоеточия (046d:), чтобы найти все продукты этого производителя. Вы также можете передать полный список через grep, если хотите: lsusb | grep -i logitech.
Поиск конкретного оборудования с помощью grep
Если вы запускаете много серверов одновременно, в списке может быть много устройств. Нет более простого способа ответить на простые вопросы о вашей системе, такие как «Установлена ли у меня сетевая карта?» или «Работает ли моя веб-камера?», кроме как передачи lspci или lsusb через grep для быстрого поиска нужного вам элемента без необходимости просматривать каждую строку.
Пример вывода:
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (7) I219-V 02:00.0 Network controller: Intel Corporation Wireless-AC 9560
Примечание:
Тот же принцип работает и для USB. Попробуйте lsusb | grep -i webcam или lsusb | grep -i storage. Для более глубокого изучения фильтрации стоит прочитать руководство по команде find.
Обновите базу данных PCI и USB ID с помощью update-pciids
Вы также можете встретить записи с пометкой «unknown device» (неизвестное устройство), за которой следует идентификатор поставщика. Это просто означает, что ваша локальная база данных в данный момент не содержит информации об этом новом устройстве. Запустив update-pciids (для чего, как правило, требуется также запустить update-usbids), вы можете загрузить новый список идентификаторов, что позволит отобразить правильное название устройства там, где ранее оно было неизвестно.
Пример вывода:
Downloaded daily snapshot dated 2026-03-14 03:15:02 % Total % Received % Xferd Average Speed 100 320k 100 320k 0 0 412k 0 0:00:00 --:--:-- 412k Done.
Совет:
В Debian и Ubuntu база данных USB-идентификаторов поставляется с пакетом usbutils и обновляется через диспетчер пакетов. В RHEL и CentOS update-pciids обрабатывает PCI, а список USB обновляется через dnf update или yum update. Ознакомьтесь с руководством по командам yum, если эта часть для вас нова.
Опасность — не извлекайте PCI-карты из работающего сервера:
Чтение информации об оборудовании с помощью lspci и lsusb безопасно, но не всегда безопасно действовать на основании полученных данных. Отключение внутренних PCI- или PCIe-карт при включенном питании системы, скорее всего, приведет к повреждению данных, сбою ядра или повреждению как карты, так и материнской платы. Для USB-устройств правило менее строгое. Подключение клавиатур, мышей и флешек «на лету» не представляет опасности. Просто отмонтируйте USB-устройство хранения перед тем, как его извлечь.
Комментарии (2)