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

Microsoft menyediakan driver yang mematuhi spesifikasi USB Type-C® Connector System Software Interface (UCSI) untuk transportasi Konfigurasi Tingkat Lanjut dan Antarmuka Daya (ACPI). Jika desain Anda menyertakan kontroler tertanam dengan transport ACPI, terapkan UCSI pada BIOS/EC sistem Anda dan muat driver UCSI terbawai (UcmUcsiCx.sys dan UcmUcsiAcpiClient.sys).

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

Driver untuk mendukung komponen USB Type-C untuk sistem dengan pengendali tertanam

Berikut adalah contoh sistem dengan pengontrol yang disematkan.

Diagram komponen perangkat lunak USB Type-C.

Pengalihan peran USB ditangani dalam firmware sistem. Tumpukan driver Sakelar Peran USB tidak dimuat. Di sistem lain, tumpukan driver mungkin tidak dimuat karena peran ganda tidak didukung.

  • Pengemudi perangkat sisi USB

    Driver sisi perangkat USB melayani fungsi/perangkat/periferal. Ekstensi kelas pengontrol fungsi USB mendukung Protokol Transfer Media (MTP) dan pengisian daya menggunakan pengisi daya BC 1.2. Microsoft menyediakan driver klien bawaan untuk pengontrol Synopsys 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. Jika Anda menggunakan driver bawaan Synopsys USB 3.0 atau driver client ChipIdea USB 2.0, Anda dapat menerapkan driver filter Anda sendiri.

  • Driver host sisi USB

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

  • 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 menjelaskan kemampuan UCSI. Ini menjelaskan daftar 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 peran data atau 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:

  • DAPATKAN_MODUS_ALTERNATIF
  • GET_CAM_SUPPORTED
  • GET_PDOS
  • SET_NOTIFICATION_ENABLE: Sistem atau pengontrol harus mendukung pemberitahuan berikut di 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 selengkapnya, lihat Implementasi Intel BIOS UCSI.

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

Mulai Windows 11, Pembaruan September versi 22H2, driver perangkat Windows UCM-UCSI ACPI mendukung spesifikasi UCSI versi 2.0 dan 2.1. Spesifikasi UCSI 2.0 memiliki perubahan mendasar dalam pemetaan memori dari struktur data seperti yang didefinisikan dalam Spesifikasi UCSI Tabel 3-1 Struktur Data.

Untuk mempertahankan kompatibilitas mundur, Windows memerlukan UCSI PPM spesifikasi versi 2.0 atau lebih besar untuk menerapkan fungsi _DSM berikut di bawah perangkat ACPIUCM-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 Jenis 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 struktur VERSION.

Nota

Untuk perangkat ACPI UCM-UCSI, fungsi ini baru dalam metode _DSM yang ada. Fungsi lain dari metode _DSM ini harus 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 di bagian ini menjelaskan interaksi antara USB Type-C perangkat keras/firmware, driver UCSI, dan sistem operasi.

Deteksi peran DRP

  1. USB Type-C perangkat keras/firmware mendeteksi peristiwa penyambungan perangkat. Sistem DRP Windows 10 pada awalnya berfungsi sebagai 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 dimuat, sehingga sistem berada dalam keadaan yang salah. Ini memberi tahu driver UCSI untuk mengirim permintaan Set USB Operation Role dan Set Power Direction Role ke firmware.

  4. USB Type-C perangkat keras/firmware 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 bernegosiasi dengan pengaturan daya default. Ini juga mengamati bahwa pengisi daya tidak memberikan daya yang cukup untuk sistem.

  2. USB Type-C perangkat keras/firmware 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 Status Sambungkan = 1, Jenis Mitra Konektor = DFP, dan Status Pengisian Daya Baterai = 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 Microsoft USB Test Tool (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 ManualType-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 dijalankan. Anda juga telah mengaktifkan antarmuka pengujian untuk 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 Device Manager (devmgmt.msc) bernama UCSI USB Connector Manager. Simpul berada di bawah kategori pengontrol Universal Serial Bus .

  2. Pilih dan tahan atau klik kanan perangkat. Pilih Properti dan buka tab Detail .

  3. Pilih Jalur Instans Perangkat dari menu dropdown dan catat nilai properti.

  4. Buka Editor Registri (regedit.exe).

  5. Navigasikan 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. Untuk memulai ulang perangkat, pada simpul perangkat di Manajer Perangkat, pilih Nonaktifkan, lalu pilih Aktifkan. Atau, Anda dapat menghidupkan ulang PC.

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

Berikut adalah perintah umum:

Perintah UCSI perintah UcsiControl.exe
Setel Ulang PPM UcsiControl.exe Kirim 0 1
Reset Konektor Soft reset: UcsiControl.exe Kirim 0 10003

Reset paksa: 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
Dapatkan Kemampuan Konektor UcsiControl.exe Kirim 0 10007
Atur UOM DFP: UcsiControl.exe Kirim 0 810008

UFP: UcsiControl.exe Kirim 0 1010008

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

UFP: UcsiControl.exe Kirim 0 1010009

Terima: UcsiControl.exe Kirim 0 2010009
Atur 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 Remote: 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