Driver antarmuka perangkat lunak sistem konektor USB Type-C® (UCSI)

Microsoft menyediakan driver yang mematuhi spesifikasi antarmuka perangkat lunak sistem konektor USB Type-C® (UCSI) untuk transportasi ACPI. Jika desain Anda menyertakan pengontrol yang disematkan dengan transportasi ACPI, terapkan UCSI di BIOS/EC sistem Anda dan muat driver UCSI dalam kotak (UcmUcsiCx.sys dan UcmUcsiAcpiClient.sys).

Jika perangkat keras yang mematuhi UCSI Anda menggunakan transportasi selain ACPI, Anda perlu menulis driver klien UCSI.

Driver untuk mendukung komponen USB Type-C untuk sistem dengan pengontrol tersemat

Berikut adalah contoh sistem dengan pengontrol yang disematkan.

Diagram komponen perangkat lunak USB Type-C.

Dalam contoh sebelumnya, pengalihan peran USB ditangani dalam firmware sistem dan tumpukan driver USB Role Switch tidak dimuat. Dalam sistem lain, tumpukan driver mungkin tidak dimuat karena peran ganda tidak didukung.

Pada gambar sebelumnya,

  • Driver sisi perangkat USB

    Driver sisi perangkat USB melayani fungsi/perangkat/periferal. Ekstensi kelas pengontrol fungsi USB mendukung MTP (Media Transfer Protocol) dan pengisian daya menggunakan pengisi daya BC 1.2. Microsoft menyediakan driver klien dalam kotak untuk Sinopsi pengontrol USB 3.0 dan ChipIdea USB 2.0. Anda dapat menulis driver klien kustom untuk pengontrol fungsi Anda dengan menggunakan antarmuka pemrograman driver klien pengontrol fungsi USB. Untuk informasi selengkapnya, lihat Mengembangkan driver Windows untuk pengontrol fungsi USB.

    Vendor SoC mungkin memberi Anda driver filter fungsi USB yang lebih rendah untuk deteksi pengisi daya. Anda dapat menerapkan driver filter Anda sendiri jika Anda menggunakan driver klien Sinopsi USB 3.0 atau ChipIdea USB 2.0 dalam kotak.

  • Driver sisi host USB

    Driver sisi host USB adalah sekumpulan driver yang bekerja dengan pengontrol host USB yang mematuhi EHCI atau XHCI. Driver dimuat jika driver role-switch menghitung peran host. Jika pengontrol host Anda tidak sesuai spesifikasi, maka Anda dapat menulis driver kustom dengan menggunakan antarmuka pemrograman ekstensi pengontrol host USB (UCX). Untuk informasi, lihat Mengembangkan driver Windows untuk pengontrol host USB.

    Tidak semua kelas perangkat USB didukung pada Windows 10 Mobile.

  • Manajer konektor USB

    Microsoft menyediakan driver dalam kotak UCSI dengan Windows (UcmUcsiCx.sys) yang mengimplementasikan fitur yang ditentukan dalam Spesifikasi Antarmuka Perangkat Lunak Sistem Konektor USB Type-C. Spesifikasi ini menjelaskan kemampuan UCSI dan menjelaskan register dan struktur data, untuk perancang komponen perangkat keras, penyusun sistem, dan pengembang driver perangkat.

    Driver ini ditujukan untuk sistem dengan pengontrol yang disematkan. Driver ini adalah klien untuk driver ekstensi kelas manajer konektor USB yang disediakan Microsoft (Ucmcx.sys). Driver menangani tugas seperti memulai permintaan ke firmware untuk mengubah data atau peran daya dan mendapatkan informasi yang diperlukan untuk memberikan pesan pemecahan masalah kepada pengguna.

Perintah UCSI yang diperlukan oleh Windows

Lihat spesifikasi UCSI untuk perintah yang diperlukan di semua implementasi UCSI.

Selain perintah yang ditandai sebagai Diperlukan, Windows memerlukan perintah ini:

  • GET_ALTERNATE_MODES
  • GET_CAM_SUPPORTED
  • GET_PDOS
  • SET_NOTIFICATION_ENABLE: Sistem atau pengontrol harus mendukung pemberitahuan berikut dalam SET_NOTIFICATION_ENABLE:
    • Perubahan Kemampuan Penyedia yang Didukung
    • Perubahan Tingkat Daya yang Dinegosiasikan
  • GET_CONNECTOR_STATUS: Sistem atau pengontrol harus mendukung perubahan status konektor ini dalam GET_CONNECTOR_STATUS:
    • Perubahan Kemampuan Penyedia yang Didukung
    • Perubahan Tingkat Daya yang Dinegosiasikan

Untuk informasi tentang tugas yang diperlukan untuk menerapkan UCSI di BIOS, lihat Implementasi Intel BIOS UCSI.

Perangkat ACPI UCM-UCSI untuk UCSI 2.0 dan yang lebih tinggi

Mulai Windows 11, Pembaruan September versi 22H2, driver perangkat ACPI Windows UCM-UCSI mendukung spesifikasi UCSI versi 2.0 dan 2.1. Spesifikasi UCSI 2.0 memiliki perubahan yang melanggar dalam pemetaan memori struktur datanya seperti yang didefinisikan dalam Spesifikasi UCSI Tabel 3-1 Struktur Data. Untuk mempertahankan kompatibilitas mundur, Windows memerlukan PPM UCSI spesifikasi versi 2.0 atau yang lebih besar untuk mengimplementasikan fungsi _DSM berikut di bawah perangkat ACPI UCM-UCSI di firmware ACPI dan mengembalikan nilai nonzero untuk menunjukkan bahwa UCSI OPM harus mengikuti versi spesifikasi UCSI yang dilaporkan.

  • Arg0: UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
  • Arg1: ID Revisi = 0
  • Arg2: Indeks fungsi = 5
  • Arg3: Paket kosong (tidak digunakan)

Mengembalikan nilai:

Elemen Tipe objek Deskripsi
UsePpmReportedUcsiVersion Bilangan bulat (32-bit) 0x00000000 (Default): Jika VERSION struktur, seperti yang didefinisikan dalam spesifikasi UCSI Tabel 3-1 Struktur Data, memiliki nilai 2.0 atau lebih besar, UCSI OPM masih mengikuti spesifikasi UCSI 1.2. Jika tidak, UCSI OPM mengikuti spesifikasi UCSI sesuai nilai dalam VERSION struktur.

Catatan

Untuk perangkat ACPI UCM-UCSI, ini adalah fungsi baru dalam metode _DSM yang ada. Fungsi lain dari metode _DSM ini seharusnya telah diimplementasikan sesuai implementasi Intel BIOS dari dokumen UCSI . Fungsi 0, yang mengembalikan bitmask dari semua fungsi yang didukung, juga harus diperbarui.

Contoh alur untuk UCSI

Contoh yang diberikan di bagian ini menjelaskan interaksi antara perangkat keras/firmware USB Type-C, driver UCSI, dan sistem operasi.

Deteksi peran DRP

  1. Perangkat keras/firmware USB Type-C mendeteksi peristiwa lampiran perangkat dan sistem Windows 10 sistem DRP awalnya menjadi peran UFP.
    1. Firmware mengirimkan pemberitahuan yang menunjukkan perubahan pada konektor.
    2. Driver UCSI mengirimkan permintaan GET_CONNECTOR_STATUS.
    3. Firmware merespons bahwa Status Sambungkan = 1 dan Jenis Mitra Konektor = DFP. ​
  2. Driver dalam tumpukan fungsi USB merespons enumerasi.
  3. Ekstensi kelas manajer konektor USB mengenali bahwa tumpukan fungsi USB telah dimuat dan karenanya sistem dalam keadaan salah. Ini memberi tahu driver UCSI untuk mengirim Set USB Operation Role dan Mengatur permintaan Peran Power Direction ke firmware.
  4. Perangkat keras/firmware USB Type-C memulai operasi pertukaran peran dengan DFP.

Mendeteksi kondisi kesalahan ketidakcocokan pengisi daya

  1. Perangkat keras/firmware USB Type-C mendeteksi bahwa pengisi daya terhubung dan menegosiasikan kontrak daya default. Ini juga mengamati bahwa pengisi daya tidak memberikan daya yang cukup untuk sistem.

  2. Perangkat keras/firmware USB Type-C mengatur bit pengisian daya lambat.

    1. Firmware mengirimkan pemberitahuan yang menunjukkan perubahan pada konektor.
    2. Driver UCSI mengirimkan permintaan GET_CONNECTOR_STATUS.
    3. Firmware merespons dengan Connect Status = 1, Connector Partner Type=DFP, dan Battery Charging Status = Slow/Trickle.
  3. Ekstensi kelas manajer konektor USB mengirimkan pemberitahuan ke UI untuk menampilkan pesan pemecahan masalah ketidakcocokan pengisi daya.

Cara menguji UCSI

Ada banyak cara untuk menguji implementasi UCSI Anda. Untuk menguji perintah individual dalam implementasi UCSI BIOS/EC Anda, gunakan UCSIControl.exe, yang disediakan dalam Paket Perangkat Lunak MUTT. Untuk menguji implementasi UCSI lengkap Anda, gunakan pengujian UCSI yang dapat ditemukan di Windows Hardware Lab Kit (HLK) dan langkah-langkah dalam Prosedur Interop Manual Type-C.

UCSIControl.exe

Anda dapat menguji perintah individual dalam implementasi UCSI BIOS/EC Anda dengan menggunakan UCSIControl.exe. Alat ini memungkinkan Anda mengirim perintah UCSI ke firmware melalui driver UCSI. Ini mengharuskan driver dimuat dan berjalan, dan juga mengaktifkan antarmuka pengujian ke driver. Secara default, antarmuka ini tidak diaktifkan sehingga mencegahnya agar tidak dapat diakses oleh pengguna yang tidak sah pada sistem ritel.

  1. Temukan simpul perangkat di Manajer Perangkat (devmgmt.msc) bernama UCSI USB Connector Manager. Simpul berada di bawah kategori pengontrol Universal Serial Bus .

  2. Pilih dan tahan (atau klik kanan) pada perangkat, dan pilih Properti dan buka tab Detail .

  3. Pilih Jalur Instans Perangkat dari menu drop-down dan catat nilai properti.

  4. Buka Editor Registri (regedit.exe).

  5. Navigasi ke jalur instans perangkat di bawah kunci ini.

    <HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\device-instance-path>\Device Parameters

  6. Buat nilai DWORD bernama TestInterfaceEnabled dan atur nilai ke 0x1.

  7. Mulai ulang perangkat dengan memilih opsi Nonaktifkan pada simpul perangkat di Manajer Perangkat, lalu pilih Aktifkan. Atau, Anda dapat menghidupkan ulang PC.

Anda dapat melihat bantuan dengan menjalankan UcsiControl.exe /?.

Berikut adalah perintah umumnya:

Perintah UCSI perintah UcsiControl.exe
PPM Reset UcsiControl.exe Kirim 0 1
Reset Konektor Pengaturan ulang lunak: UcsiControl.exe Kirim 0 10003

Reset keras: UcsiControl.exe Kirim 0 810003
Atur Pengaktifan Pemberitahuan Semua pemberitahuan: UcsiControl.exe Kirim 0 ffff0005

Hanya penyelesaian perintah: UcsiControl.exe Kirim 0 00010005

Tidak ada pemberitahuan: UcsiControl.exe Kirim 0 00000005
Dapatkan Kapabilitas UcsiControl.exe Kirim 0 6
Mendapatkan Kapabilitas Konektor UcsiControl.exe Kirim 0 10007
Mengatur UOM DFP: UcsiControl.exe Kirim 0 810008

UFP: UcsiControl.exe Kirim 0 1010008

DRP: UcsiControl.exe Kirim 0 2010008
Mengatur UOR DFP: UcsiControl.exe Kirim 0 810009

UFP: UcsiControl.exe Kirim 0 1010009

Terima: UcsiControl.exe Kirim 0 2010009
Mengatur PDR Penyedia: UcsiControl.exe Kirim 0 81000B

Konsumen: UcsiControl.exe Kirim 0 101000B

Terima: UcsiControl.exe Kirim 0 201000B
Dapatkan PDO Sumber Lokal: UcsiControl.exe Kirim 7 00010010

Sink Lokal: UcsiControl.exe Kirim 3 00010010

Sumber Jarak Jauh: UcsiControl.exe Kirim 7 00810010

Remote Sink: UcsiControl.exe Kirim 3 00810010
Dapatkan Status Konektor UcsiControl.exe Kirim 0 010012
Dapatkan Status Kesalahan UcsiControl.exe Kirim 0 13