Comment ça marche
Le firmware décrit au moyen de tables ACPI les périphériques que le système d'exploitation ne peut pas découvrir par lui-même, comme la batterie, les boutons, les capteurs, les contrôleurs I²C ou le TPM. Chacun porte un identifiant matériel (_HID) composé d'un préfixe de fabricant et de quatre chiffres hexadécimaux choisis par ce fabricant.
Les préfixes sont attribués par l'UEFI Forum dans deux registres : celui des PNP ID, de trois lettres, et celui des ACPI ID, de quatre caractères. Cet outil recherche le préfixe dans les deux registres et, pour les identifiants standard définis par Microsoft et par la spécification ACPI, vous indique aussi de quel périphérique il s'agit.
Exemples
ACPI\PNP0A08Microsoft — PCI Express Root BridgeFormat du Gestionnaire de périphériques Windows. Les PNP0xxx sont des identifiants génériques que n'importe quel fabricant peut utiliser.ACPI\VEN_INT&DEV_33A1Intel Corporation — Intel Power Engine Plug-in (Modern Standby)Forme VEN_/DEV_ que Windows utilise dans les ID du matériel. Intel utilise le préfixe INT depuis avant la création du registre ACPI ID.Name (_HID, EisaId ("PNP0C0A"))PNP0C0A — Control Method Battery — EisaId 0x0A0CD041Ligne d'une table DSDT désassemblée. L'outil accepte aussi l'entier compressé généré par EisaId.10EC5640Realtek Semiconductor Co., Ltd.Certains fabricants utilisent comme préfixe le vendor ID que PCI-SIG leur a attribué ; dans ce cas, le fabricant provient du catalogue PCI.Cas d'usage
- Identifier un périphérique inconnu du Gestionnaire de périphériques dont l'ID du matériel commence par ACPI\.
- Trouver le bon pilote pour les capteurs, les boutons ou les contrôleurs I²C d'un ordinateur portable à partir de leur _HID.
- Interpréter les périphériques déclarés dans une table DSDT ou SSDT lors du débogage du firmware ou de l'écriture d'un correctif ACPI.
- Savoir à quelle entreprise correspond le code fabricant à trois lettres qu'un moniteur indique dans son EDID.
Questions fréquentes
Où trouver l'identifiant ACPI d'un périphérique ?
Sous Windows, dans les propriétés du périphérique dans le Gestionnaire de périphériques, onglet Détails, propriété "ID du matériel". Sous Linux, chaque périphérique apparaît comme un dossier de /sys/bus/acpi/devices avec son identifiant dans le nom, et le fichier hid de ce dossier le contient. Dans les tables du firmware, désassemblées avec acpidump et iasl, c'est l'objet _HID de chaque périphérique.
Pourquoi trouve-t-il le fabricant mais pas le périphérique ?
Les registres de l'UEFI Forum n'attribuent que le préfixe. La signification des quatre chiffres qui suivent est décidée par chaque fabricant et il n'existe pas de catalogue public comme celui de PCI ou d'USB. Le périphérique n'est connu que pour les identifiants standard, comme les PNP0xxx de Microsoft ou les ACPI00xx de la spécification, et pour quelques identifiants très répandus.
Quelle est la différence entre un PNP ID et un ACPI ID ?
Le PNP ID a un préfixe de trois lettres et vient du Plug and Play des années quatre-vingt-dix ; les mêmes codes identifient le fabricant d'un moniteur dans l'EDID. L'ACPI ID a un préfixe de quatre lettres ou chiffres et c'est le format actuel. Les deux comportent quatre chiffres hexadécimaux après le préfixe.
Qu'est-ce que l'EisaId compressé ?
Dans le langage ASL, la macro EisaId convertit un PNP ID en un entier de 32 bits : chaque lettre occupe cinq bits et le numéro de produit, les deux octets suivants. C'est pourquoi, en désassemblant une table, un nombre comme 0x0A0CD041 apparaît parfois à la place de PNP0C0A. L'outil accepte ce nombre et affiche la forme compressée de n'importe quel PNP ID.
À quelle fréquence les données sont-elles mises à jour ?
L'outil utilise une copie des registres ACPI ID et PNP ID publiés par l'UEFI Forum et la renouvelle périodiquement. À côté du résultat s'affichent la date de cette copie et la date à laquelle le préfixe a été approuvé.