仕組み
ファームウェアは、バッテリー、ボタン、センサー、I²C コントローラー、TPM など、オペレーティング システムが自力で検出できないデバイスを ACPI テーブルで記述します。各デバイスには、メーカーのプレフィックスと、そのメーカーが選んだ 4 桁の 16 進数で構成されるハードウェア識別子 (_HID) が付いています。
プレフィックスは UEFI Forum が 2 つのレジストリで割り当てています。3 文字の PNP ID のレジストリと、4 文字の ACPI ID のレジストリです。このツールは両方のレジストリでプレフィックスを検索し、Microsoft と ACPI 仕様が定義する標準の識別子については、どのデバイスなのかも表示します。
例
ACPI\PNP0A08Microsoft — PCI Express Root BridgeWindows のデバイス マネージャーの形式です。PNP0xxx は、どのメーカーでも使用できる汎用の識別子です。ACPI\VEN_INT&DEV_33A1Intel Corporation — Intel Power Engine Plug-in (Modern Standby)Windows がハードウェア ID で使用する VEN_/DEV_ 形式です。Intel は ACPI ID レジストリができる前から INT プレフィックスを使用しています。Name (_HID, EisaId ("PNP0C0A"))PNP0C0A — Control Method Battery — EisaId 0x0A0CD041逆アセンブルした DSDT テーブルの行です。このツールは EisaId が生成する圧縮された整数も受け付けます。10EC5640Realtek Semiconductor Co., Ltd.一部のメーカーは、PCI-SIG から割り当てられたベンダー ID をプレフィックスとして使用しています。その場合、メーカーは PCI カタログから取得されます。ユースケース
- デバイス マネージャーに表示される、ハードウェア ID が ACPI\ で始まる不明なデバイスを特定します。
- _HID をもとに、ノートパソコンのセンサー、ボタン、I²C コントローラーに適したドライバーを探します。
- ファームウェアのデバッグや ACPI パッチの作成時に、DSDT または SSDT テーブルで宣言されたデバイスを解釈します。
- モニターが EDID で報告する 3 文字のメーカー コードが、どの企業のものかを調べます。
よくある質問
デバイスの ACPI 識別子はどこで確認できますか?
Windows では、デバイス マネージャーでデバイスのプロパティを開き、[詳細] タブの "ハードウェア ID" プロパティで確認できます。Linux では、各デバイスが /sys/bus/acpi/devices 内に識別子を名前に含むフォルダーとして表示され、そのフォルダー内の hid ファイルにも識別子が格納されています。acpidump と iasl で逆アセンブルしたファームウェアのテーブルでは、各デバイスの _HID オブジェクトがそれにあたります。
メーカーは見つかるのに、デバイスが見つからないのはなぜですか?
UEFI Forum のレジストリが割り当てるのはプレフィックスのみです。続く 4 桁の意味は各メーカーが決めており、PCI や USB のような公開カタログはありません。デバイスがわかるのは、Microsoft の PNP0xxx や仕様の ACPI00xx などの標準の識別子と、広く普及している一部の識別子だけです。
PNP ID と ACPI ID の違いは何ですか?
PNP ID は 3 文字のプレフィックスを持ち、1990 年代のプラグ アンド プレイに由来します。同じコードが EDID でモニターのメーカーを識別します。ACPI ID は英字または数字 4 文字のプレフィックスを持ち、現在の形式です。どちらもプレフィックスの後に 4 桁の 16 進数が続きます。
圧縮 EisaId とは何ですか?
ASL 言語では、EisaId マクロが PNP ID を 32 ビット整数に変換します。各文字が 5 ビットを占め、製品番号が続く 2 バイトを占めます。そのため、テーブルを逆アセンブルすると、PNP0C0A の代わりに 0x0A0CD041 のような数値が表示されることがあります。このツールはその数値を受け付け、任意の PNP ID の圧縮形式も表示します。
データはどのくらいの頻度で更新されますか?
このツールは、UEFI Forum が公開している ACPI ID および PNP ID レジストリのコピーを使用し、定期的に更新しています。結果とともに、そのコピーの日付とプレフィックスの承認日が表示されます。