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 主機控制器延伸模組程式設計介面來撰寫自訂驅動程式。 如需詳細資訊,請參閱 開發 USB 主機控制器的 Windows 驅動程式。
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:
- 支援的提供者功能變更
- 交涉的權力等級變更
如需詳細資訊,請參閱 UCSI的Intel BIOS實作。
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要求。
- 韌體會以 Connect Status =
1、 Connector Partner Type =DFP和 Battery Charging Status =Slow/Trickle回應。
USB 連接器管理擴充類別會將通知傳送給使用者介面(UI),以顯示充電器不符的疑難排解訊息。
如何測試UCSI
有許多方式可以測試您的UCSI實作。 若要測試 UCSI BIOS/EC 實作中的個別命令,請使用 Microsoft USB 測試工具 (MUTT) 軟體套件中提供的 UCSIControl.exe。 若要測試完整的 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\<device-instance-path>\Device Parameters建立名為 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 設計
- USB Type-C 系統設計,具有嵌入式控制器