Как узнать какие физические устройства в Linux? Команды lspci и lsusb

Команда 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, 480MUSB 2.0 высокой скорости, а 12MUSB 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-устройство хранения перед тем, как его извлечь.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Похожие статьи

Комментарии (2)

Автар по умолчанию