USB Type-C® 連接器系統軟體介面 (UCSI) 驅動程式
Microsoft提供符合 USB Type-C® 連接器系統軟體介面(UCSI)規範的驅動程式,以用於進階設定和電源介面(ACPI)傳輸。 如果您的設計包含具有 ACPI 傳輸的內嵌控制器,請在系統的 BIOS/EC 中實作 UCSI,並載入內建的 UCSI 驅動程式(UcmUcsiCx.sys 和 UcmUcsiAcpiClient.sys)。
如果您的 UCSI 相容硬體使用 ACPI 以外的傳輸,您必須 撰寫 UCSI 用戶端驅動程式。
支援內嵌控制器系統的 USB Type-C 元件驅動程式
以下是內嵌控制器的系統範例。
在上述範例中,USB 角色切換會在系統的韌體中處理,而且不會載入 USB 角色交換器驅動程式堆疊。 在另一個系統中,驅動程式堆疊可能無法載入,因為不支援雙重角色。
在上圖中,
USB 裝置端驅動程式
USB 裝置端驅動程式 已用於服務這些功能/裝置/周邊設備。 USB 功能控制器類別擴展支援 MTP(媒體傳輸通訊協定)以及使用 BC 1.2 充電器進行充電。 Microsoft提供 Synopsys USB 3.0 和 ChipIdea USB 2.0 控制器的內建用戶端驅動程式。 您可以使用 USB 函式控制器用戶端驅動程式程式設計介面,撰寫函式控制器的自訂用戶端驅動程式。 如需詳細資訊,請參閱 開發 USB 函式控制器的 Windows 驅動程式。
SoC 廠商可能會為您提供用於充電器偵測的 USB 功能低階篩選驅動程式。 如果您使用內建 Synopsys USB 3.0 或 ChipIdea USB 2.0 用戶端驅動程式,則可以實作自己的篩選驅動程式。
USB 主機端驅動程式
USB 主機端驅動程式是一組驅動程式,可與 EHCI 或 XHCI 相容的 USB 主機控制器搭配使用。 如果角色交換驅動程式列舉主機角色,則會載入相應的驅動程式。 如果您的主機控制器不符合規格規範,您可以使用 USB 主機控制器擴充功能 (UCX) 程式設計介面撰寫自定義驅動程式。 如需詳細資訊,請參閱 開發 USB 主機控制器的 Windows 驅動程式。
Windows 10 行動裝置版不支援 所有 USB 裝置類別。
USB 連接器管理員
Microsoft 隨附於 Windows 中提供 UCSI 內建驅動程式(UcmUcsiCx.sys),用於實現 USB Type-C 接頭系統軟體介面規範中定義的功能。 規格描述 UCSI 的功能,還解釋了暫存器和數據結構,適用於硬體元件設計師、系統建置者和設備驅動程式開發人員。
此驅動程式適用於內嵌控制器的系統。 此驅動程式是Microsoft提供的USB連接器管理員類別擴充驅動程式的用戶端(Ucmcx.sys)。 驅動程式會處理的工作包括發出請求給韌體以變更數據或電源角色,以及獲取所需資訊來向使用者提供疑難解答訊息。
Windows 所需的 UCSI 命令
如需所有 UCSI 實作中所需的命令,請參閱 UCSI 規格。
除了標示為 必要的命令之外,Windows 還需要下列命令:
- GET_ALTERNATE_MODES
- 獲取相機支持
- GET_PDOS
- SET_NOTIFICATION_ENABLE:系統或控制器必須在SET_NOTIFICATION_ENABLE內支援下列通知:
- 支援的提供者功能變更
- 交涉的權力等級變更
- GET_CONNECTOR_STATUS:系統或控制器必須在GET_CONNECTOR_STATUS內支援這些連接器狀態變更:
- 支援的提供者功能變更
- 談判的權限等級變更
如需在 BIOS 中實作 UCSI 所需的工作相關信息,請參閱 Intel BIOS 實作 UCSI。
UCM-UCSI 適用於 UCSI 2.0 及更新的 ACPI 裝置
從 Windows 11 版本 22H2 9 月更新開始,Windows UCM-UCSI ACPI 設備驅動器支援 UCSI 規格版本 2.0 和 2.1。 UCSI 規格 2.0 在其資料結構的記憶體映射中有大幅改變,這些改變在 UCSI 規格中的表 3-1 資料結構中有定義。 若要維持回溯相容性,Windows 需要 UCSI PPM 2.0 版或更新版本,才能在 ACPI 韌體中 UCM-UCSI ACPI 裝置 下實作下列_DSM函式,並傳回非零值,以指出 UCSI OPM 應遵循回報的 UCSI 規格版本。
- Arg0:UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
- Arg1:修訂標識碼 = 0
- Arg2:函式索引 = 5
- Arg3:空白套件(未使用)
傳回值:
元素 | 物件類型 | 描述 |
---|---|---|
UsePpmReportedUcsiVersion | 整數 (32 位) | 0x00000000 (預設值):如果 UCSI 規格表 3-1 數據結構中所定義的 VERSION 結構 值為 2.0 或更高,UCSI OPM 仍遵循 UCSI 規格 1.2。 否則,UCSI OPM 會依照 VERSION 結構中的值遵循 UCSI 規格。 |
注意
對於 UCM-UCSI ACPI 裝置,這是現有_DSM方法中的新函式。 此_DSM方法的其他功能應該已按照 Intel BIOS UCSI 檔案的
UCSI 的範例流程
本節所提供的範例說明 USB Type-C 硬體/韌體、UCSI 驅動程式和操作系統之間的互動。
DRP 角色偵測
- USB Type-C 硬體/韌體偵測到裝置連接事件,Windows 10 系統的 DRP 模式最初會成為 UFP 角色。
- 韌體會傳送通知,指出連接器中的變更。
- UCSI 驅動程式會傳送GET_CONNECTOR_STATUS要求。
- 韌體會回應其連線狀態 = 1,而連接器夥伴類型 = DFP。
- USB 函式堆疊中的驅動程式會回應 列舉。
- USB 連接器管理器類別延伸模組偵測到 USB 功能堆疊已載入,因此認為系統處於不正確狀態。 它會告訴 UCSI 驅動程式傳送 設置 USB 作業角色 的請求,以及 設置電源方向角色 的請求至韌體。
- USB Type-C 硬體/韌體會與 DFP 發起角色交換操作。
偵測充電器不相符的錯誤狀況
USB Type-C 硬體/韌體偵測到充電器已連接,並協商預設電力協議。 它也觀察到充電器沒有提供足夠的電源給系統。
USB Type-C 硬體/韌體會設定慢速充電位。
- 韌體會傳送通知,指出連接器中的變更。
- UCSI 驅動程式會傳送GET_CONNECTOR_STATUS要求。
- 韌體會以連線狀態=1、連接器對端類型=DFP 和電池充電狀態=慢充/涓流充電回應。
USB 連接器管理擴充類別會將通知傳送給使用者介面(UI),以顯示充電器不符的疑難排解訊息。
如何測試UCSI
有許多方式可以測試您的UCSI實作。 若要測試 UCSI BIOS/EC 實作中的個別命令,請使用 UCSIControl.exe,其提供於 MUTT Software Pack中。 若要測試完整的 UCSI 實作,請使用 Windows 硬體實驗室套件 (HLK) 中找到的 UCSI 測試,以及 Type-C 手動 Interop 程式中的步驟。
UCSIControl.exe
您可以使用 UCSIControl.exe,在 UCSI BIOS/EC 實作中測試個別命令。 此工具可讓您透過UCSI驅動程式將UCSI命令傳送至韌體。 它需要載入並執行驅動程式,並同時啟用驅動程式的測試介面。 根據預設,此介面不會啟用,以防止零售系統上未經授權的使用者存取。
在 Device Manager (devmgmt.msc) 中找到名為 UCSI USB Connector Manager的裝置節點。 節點位於 通用序列總線控制器 類別之下。
選取並按住裝置(或按滑鼠右鍵),然後選取 屬性,並開啟 詳細資料 選項卡。
從下拉式清單中選取 [裝置實例路徑,並記下屬性值。
開啟註冊表編輯器 (regedit.exe)。
流覽至此金鑰下的裝置實例路徑。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\<裝置實例路徑>\裝置參數
建立名為 TestInterfaceEnabled 的 DWORD 值,並將值設定為 0x1。
在裝置管理員的裝置節點上選取 [停用] 選項,然後選取 [啟用],以重新啟動裝置。 或者,您可以重新啟動電腦。
您可以運行 UcsiControl.exe /?來檢視說明。
以下是常見的命令:
UCSI 命令 | UcsiControl.exe 命令 |
---|---|
PPM 重設 | UcsiControl.exe 傳送 0 1 |
連接器重設 | 軟重設:UcsiControl.exe 發送 0 10003 硬重置:UcsiControl.exe 傳送 0 810003 |
設定通知打開 | 所有通知:UcsiControl.exe 傳送 0 ffff0005 僅完成命令:UcsiControl.exe 傳送 0 00010005 沒有通知:UcsiControl.exe 傳送 0 00000005 |
取得能力 | UcsiControl.exe 傳送 0 6 |
取得連接器功能 | UcsiControl.exe 傳送 0 10007 |
設定 UOM | DFP:UcsiControl.exe 傳送 0 810008 UFP:UcsiControl.exe 發送 0 1010008 DRP:UcsiControl.exe 傳送 0 2010008 |
設定UOR | DFP:UcsiControl.exe 發送 0 810009 UFP:UcsiControl.exe 傳送 0 1010009 接受:UcsiControl.exe 傳送 0 2010009 |
設定 PDR | 提供者:UcsiControl.exe 傳送 0 81000B 取用者:UcsiControl.exe 傳送 0 101000B 接受:UcsiControl.exe 傳送 0 201000B |
取得 PDO | 本機來源:UcsiControl.exe 傳送 7 00010010 本機接收:UcsiControl.exe 傳送 3 00010010 遠端來源:UcsiControl.exe 傳送 7 00810010 遠端接收:UcsiControl.exe 傳送 3 00810010 |
取得連接器狀態 | UcsiControl.exe 傳送 0 010012 |
取得錯誤狀態 | UcsiControl.exe 傳送 0 13 |
相關主題
- 架構:Windows 系統 的USB Type-C 設計
- UCSI 的 Intel BIOS 實作
- USB Type-C 連接器系統軟體介面規格
- 硬體設計:內嵌控制器系統的 USB Type-C 元件