運作方式
韌體透過 ACPI 表格描述作業系統無法自行偵測的裝置,例如電池、按鈕、感測器、I²C 控制器或 TPM。每個裝置都有一個硬體識別碼(_HID),由製造商前綴和該製造商選定的四位十六進位數字組成。
前綴由 UEFI Forum 在兩份註冊清單中分配:三個字母的 PNP ID 註冊清單,以及四個字元的 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 在硬體識別碼中使用的 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 目錄。使用情境
- 識別裝置管理員中硬體識別碼以 ACPI\ 開頭的未知裝置。
- 根據 _HID 為筆記型電腦的感測器、按鈕或 I²C 控制器尋找正確的驅動程式。
- 在偵錯韌體或撰寫 ACPI 修補程式時,解讀 DSDT 或 SSDT 表格中宣告的裝置。
- 了解螢幕在 EDID 中回報的三字母製造商代碼對應哪家公司。
常見問題
在哪裡可以找到裝置的 ACPI 識別碼?
在 Windows 中,於裝置管理員開啟裝置的內容,在「詳細資料」索引標籤的 "硬體識別碼" 屬性中查看。在 Linux 中,每個裝置都會顯示為 /sys/bus/acpi/devices 下名稱中含有其識別碼的資料夾,該資料夾中的 hid 檔案也包含此識別碼。在以 acpidump 和 iasl 反組譯的韌體表格中,它是每個裝置的 _HID 物件。
為什麼能找到製造商卻找不到裝置?
UEFI Forum 的註冊清單只分配前綴。其後四位數字的意義由各製造商自行決定,並沒有像 PCI 或 USB 那樣的公開目錄。只有標準識別碼(如 Microsoft 的 PNP0xxx 或規格中的 ACPI00xx)以及一些廣泛使用的識別碼,才能得知對應的裝置。
PNP ID 和 ACPI ID 有什麼差別?
PNP ID 的前綴為三個字母,源自 1990 年代的隨插即用;同樣的代碼也用於在 EDID 中識別螢幕製造商。ACPI ID 的前綴為四個字母或數字,是目前使用的格式。兩者在前綴之後都接著四位十六進位數字。
什麼是壓縮的 EisaId?
在 ASL 語言中,EisaId 巨集會將 PNP ID 轉換為 32 位元整數:每個字母佔 5 位元,產品編號佔隨後的兩個位元組。因此,反組譯表格時有時會看到 0x0A0CD041 這樣的數字,而不是 PNP0C0A。本工具接受這種數字,並顯示任何 PNP ID 的壓縮形式。
資料多久更新一次?
本工具使用 UEFI Forum 發布的 ACPI ID 和 PNP ID 註冊清單的副本,並定期更新。結果旁會顯示該副本的日期以及前綴的核准日期。