Поиск идентификатора ACPI
Узнайте, какому производителю принадлежит идентификатор ACPI или PNP и, если он стандартный, что это за устройство. Вставьте идентификатор так, как его показывает диспетчер устройств Windows, папка /sys/bus/acpi/devices в Linux или _HID таблицы DSDT, и нажмите Искать.
Принимает ACPI\VEN_INT&DEV_33A1, ACPI\PNP0C0A, INTC1055, PNP0C0A:00, 0x0A0CD041 или только префикс
Примеры:

Как это работает

С помощью таблиц ACPI прошивка описывает устройства, которые операционная система не может обнаружить самостоятельно, например батарею, кнопки, датчики, контроллеры I²C или TPM. У каждого из них есть аппаратный идентификатор (_HID), состоящий из префикса производителя и четырех шестнадцатеричных цифр, которые выбирает этот производитель.

Префиксы назначает UEFI Forum в двух реестрах: в реестре PNP ID (три буквы) и в реестре ACPI ID (четыре символа). Этот инструмент ищет префикс в обоих реестрах, а для стандартных идентификаторов, определенных Microsoft и спецификацией ACPI, также сообщает, что это за устройство.

Примеры

ACPI\PNP0A08Microsoft — PCI Express Root BridgeФормат диспетчера устройств Windows. PNP0xxx — универсальные идентификаторы, которые может использовать любой производитель.
ACPI\VEN_INT&DEV_33A1Intel Corporation — Intel Power Engine Plug-in (Modern Standby)Форма VEN_/DEV_, которую Windows использует в ИД оборудования. Intel использует префикс INT еще с тех времен, когда реестра ACPI ID не существовало.
Name (_HID, EisaId ("PNP0C0A"))PNP0C0A — Control Method Battery — EisaId 0x0A0CD041Строка дизассемблированной таблицы DSDT. Инструмент также принимает сжатое целое число, которое генерирует EisaId.
10EC5640Realtek Semiconductor Co., Ltd.Некоторые производители используют в качестве префикса vendor ID, назначенный им PCI-SIG; в этом случае производитель берется из каталога PCI.

Сценарии использования

  • Определите неизвестное устройство в диспетчере устройств, ИД оборудования которого начинается с ACPI\.
  • Найдите подходящий драйвер для датчиков, кнопок или контроллеров I²C ноутбука по их _HID.
  • Разберитесь в устройствах, объявленных в таблице DSDT или SSDT, при отладке прошивки или написании ACPI-патча.
  • Узнайте, какой компании соответствует трехбуквенный код производителя, который монитор сообщает в своем EDID.

Часто задаваемые вопросы

Где найти идентификатор ACPI устройства?

В Windows — в свойствах устройства в диспетчере устройств, на вкладке «Сведения», свойство «ИД оборудования». В Linux каждое устройство представлено папкой в /sys/bus/acpi/devices с идентификатором в имени, а сам идентификатор содержится в файле hid этой папки. В таблицах прошивки, дизассемблированных с помощью acpidump и iasl, это объект _HID каждого устройства.

Почему находится производитель, но не устройство?

Реестры UEFI Forum назначают только префикс. Значение следующих за ним четырех цифр определяет каждый производитель, и публичного каталога, как для PCI или USB, не существует. Устройство известно только для стандартных идентификаторов, таких как PNP0xxx от Microsoft или ACPI00xx из спецификации, а также для некоторых широко распространенных.

Чем PNP ID отличается от ACPI ID?

У PNP ID префикс из трех букв, и он восходит к Plug and Play девяностых годов; те же коды обозначают производителя монитора в EDID. У ACPI ID префикс из четырех букв или цифр, и это современный формат. В обоих после префикса идут четыре шестнадцатеричные цифры.

Что такое сжатый EisaId?

В языке ASL макрос EisaId преобразует PNP ID в 32-битное целое число: каждая буква занимает пять бит, а номер продукта — два следующих байта. Поэтому при дизассемблировании таблицы вместо PNP0C0A иногда встречается число вроде 0x0A0CD041. Инструмент принимает такое число и показывает сжатую форму любого PNP ID.

Как часто обновляются данные?

Инструмент использует копию реестров ACPI ID и PNP ID, которые публикует UEFI Forum, и периодически ее обновляет. Рядом с результатом показываются дата этой копии и дата утверждения префикса.