USB Type-C® 連接器系統軟體介面 (UCSI) 驅動程式
本文內容
支援內嵌控制器系統的 USB Type-C 元件驅動程式
Windows 所需的 UCSI 命令
UCM-UCSI 適用於 UCSI 2.0 及更新的 ACPI 裝置
UCSI 的範例流程
如何測試UCSI
相關主題
顯示其他 2 個
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)。 驅動程式會處理的工作包括發出請求給韌體以變更數據或電源角色,以及獲取所需資訊來向使用者提供疑難解答訊息。
如需所有 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 檔案的 版本來實現。 函式 0,傳回所有支援函式的位掩碼,也應該據以更新。
本節所提供的範例說明 USB Type-C 硬體/韌體、UCSI 驅動程式和操作系統之間的互動。
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 BIOS/EC 實作中的個別命令,請使用 UCSIControl.exe,其提供於 MUTT Software Pack 中。 若要測試完整的 UCSI 實作,請使用 Windows 硬體實驗室套件 (HLK) 中找到的 UCSI 測試,以及 Type-C 手動 Interop 程式 中的步驟。
您可以使用 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