Driver Storage Firmware Update (SFU)
Memperbarui firmware untuk drive penyimpanan NVMe telah mengandalkan vendor perangkat keras untuk membuat aplikasi pembaruan firmware yang menggunakan IOCTL pembaruan firmware tertentu yang diperkenalkan di Windows 10. Aplikasi ini biasanya didistribusikan di luar alur Windows Update (WU). Pengguna akhir perlu menentukan disk penyimpanan mana yang ada di perangkat mereka, mendapatkan utilitas firmware drive penyimpanan yang benar dari situs web produsen, dan mengunduh dan menginstal pembaruan secara manual.
Selain itu, perangkat yang menjalankan Windows 10 dalam mode S, berada dalam konfigurasi keamanan yang ditingkatkan yang hanya memungkinkan pengguna untuk menjalankan aplikasi yang diverifikasi Microsoft, oleh karena itu utilitas vendor mungkin gagal memperbarui firmware drive. Proses manual ini menghasilkan adopsi pembaruan firmware yang rendah, meningkatkan biaya dukungan, dan masalah kepuasan pelanggan untuk produsen perangkat keras.
Catatan
Windows 10 dalam mode S berfungsi secara eksklusif dengan aplikasi dari Microsoft Store dalam Windows dan aksesori yang kompatibel dengan Windows 10 dalam mode S. Pengalihan satu arah dari mode S tersedia. Pelajari selengkapnya di windows.com/SmodeFAQ.
Memperbarui firmware perangkat menggunakan layanan Windows Update (WU) menggunakan solusi berbasis driver tersedia untuk vendor perangkat keras dan mengharuskannya untuk menambahkan logika pembaruan firmware dan payload ke driver fungsi yang ada atau menyediakan driver dan paket pembaruan firmware terpisah. Skenario ini menghasilkan pekerjaan duplikat di seluruh mitra perangkat keras dan meningkatkan biaya layanan keseluruhan drive penyimpanan. Untuk informasi selengkapnya tentang driver Universal, lihat Menggunakan File INF Universal.
Menggunakan Windows 10, versi 2004 (build OS 19041.488 atau lebih tinggi) dimungkinkan untuk memperbarui firmware drive NVMe menggunakan driver yang disediakan Microsoft dan paket pembaruan firmware yang disediakan vendor perangkat keras. Solusi ini dapat didistribusikan melalui Windows Update ke drive dan perangkat yang ditargetkan menggunakan ID Perangkat Keras Komputer (CHID).
Peringatan
Pembaruan firmware adalah operasi pemeliharaan yang berpotensi berisiko dan hanya boleh didistribusikan setelah pengujian menyeluruh gambar firmware baru. Ada kemungkinan bahwa firmware baru pada perangkat keras yang tidak didukung dapat berdampak negatif pada keandalan dan stabilitas, atau bahkan menyebabkan kehilangan data.
Kompatibilitas drive
Untuk menggunakan Windows 10 untuk memperbarui firmware drive, Anda harus memiliki drive yang didukung. Untuk memastikan perilaku perangkat umum, Windows 10 menentukan persyaratan Hardware Lab Kit (HLK) opsional untuk perangkat NVMe. Persyaratan ini menguraikan perintah mana yang harus didukung drive penyimpanan NVMe agar dapat diperbarui firmware menggunakan solusi berbasis Windows Update baru.
Hubungi vendor solusi Anda untuk informasi tentang apakah perangkat keras Anda mendukung Windows memperbarui firmware drive.
Persyaratan COMPAT perangkat Windows untuk NVMe: Device.Storage.ControllerDrive.NVMe - bagian 5.7 dan 5.8
Device.Storage.ControllerDrive.NVMe.BasicFunction
Perangkat harus memiliki setidaknya satu slot firmware yang dapat ditingkatkan.
5.7 Penerapan Firmware
Aktivasi gambar firmware harus dilakukan tanpa memerlukan siklus daya perangkat.
Proses aktivasi diharapkan dapat dicapai melalui reset yang dimulai host, seperti yang dijelaskan dalam bagian 8.1 spesifikasi versi 1.2a.
Windows akan menggunakan tindakan penerapan 001b atau 010b saat mengeluarkan perintah penerapan firmware.
Nilai penyelesaian yang diharapkan untuk aktivasi yang berhasil tanpa siklus daya adalah 00 jam (keberhasilan umum), 10 jam, atau 11 jam.
Jika 0Bh dikembalikan sebagai status penyelesaian, Windows akan memberi tahu pengguna untuk melakukan siklus daya perangkat. Ini sangat tidak disarankan, karena mencegah pembaruan firmware pada runtime OS dan menyebabkan gangguan beban kerja yang signifikan.
5.8 Unduhan Gambar Firmware
- Perangkat tidak boleh gagal I/O selama fase pengunduhan dan akan terus melayani I/O.
Untuk informasi selengkapnya, lihat persyaratan COMPAT perangkat Windows untuk Device.Storage.ControllerDrive.NVMe - bagian 5.7 dan 5.8, yang terletak di Komponen dan Peripherals.pdf tersedia di file unduhan WHCP_Documents_Windows 11, versi 24H2.zip .
Pengidentifikasi SCSI untuk drive disk penyimpanan NVMe
Dimulai dengan Windows 10, versi 2004 (OS build 19041.488 atau lebih tinggi), dua pengidentifikasi baru tersedia untuk drive disk penyimpanan NVMe menggunakan driver yang mendukung struktur STOR_RICH_DEVICE_DESCRIPTION :
SCSI\t*v(8)p(40)
Mana:
- t* adalah kode jenis perangkat dengan panjang variabel.
- v(8) adalah pengidentifikasi vendor 8 karakter.
- p(40) adalah pengidentifikasi produk 40 karakter
SCSI\t*v(8)p(40)r(8)
Mana:
- t* adalah kode jenis perangkat dengan panjang variabel.
- v(8) adalah pengidentifikasi vendor 8 karakter.
- p(40) adalah pengidentifikasi produk 40 karakter
- r(8) adalah nilai tingkat revisi 8 karakter.
Pengidentifikasi SCSI\t*v(8)p(40)r(80
menyediakan nama produk lengkap (selaras dengan spesifikasi NVME 1.4) dan memungkinkan pembuatan simpul komponen perangkat lunak (SWC) untuk pembaruan firmware untuk drive NVME yang cocok dengan nama ini (hingga 40 karakter dan revisi firmware 8 karakter).
Untuk informasi selengkapnya, lihat Pengidentifikasi untuk Perangkat SCSI dan STOR_RICH_DEVICE_DESCRIPTION
Detail solusi Storage Firmware Update (SFU)
Dalam diagram berikut, Windows 10 menyediakan driver fungsi (stornvme.sys) dan driver pembaruan firmware (storfwupdate.dll). Untuk menggunakan driver yang disediakan Microsoft untuk memperbarui firmware drive NVMe, diperlukan dua pengiriman driver terpisah.
Paket 1 - Membuat identitas untuk pembaruan firmware drive
Biasanya, paket ini berisi item berikut:
INF ekstensi untuk membuat simpul perangkat lunak untuk bertindak sebagai perangkat keras yang ditargetkan secara independen untuk paket pembaruan firmware
Katalog driver
Kirimkan paket INF ekstensi Anda sebagai pengiriman driver terpisah.
Namun, banyak jenis perangkat tidak mengizinkan satu perangkat fisik untuk menghitung lebih dari satu node perangkat. Dalam hal ini, gunakan inf ekstensi yang menentukan direktif AddComponent untuk membuat simpul perangkat yang ditargetkan oleh Windows Update dan menginstal driver pembaruan firmware di atasnya. Cuplikan berikut dari file INF menunjukkan cara membuat simpul perangkat:
[Manufacturer]
%Contoso%=Standard,NTamd64
[Standard.NTamd64]
%DeviceName%=Device_Install, SCSI\DiskNVMe____StorageIHVabcd
[StorageIHVabcd.Components]
AddComponent= StorageIHVabcd_component,,StorageIHVabcd_ComponentInstall
[StorageIHVabcd_ComponentInstall]
ComponentIDs = StorageIHVabcd-firmware-update
Dalam sampel INF ini, ComponentIDs = StorageIHVabcd-firmware-update
menunjukkan bahwa perangkat anak akan memiliki ID perangkat keras SWC\StorageIHVabcd-firmware-update. Saat diinstal, INF ini membuat hierarki perangkat berikut:
INF ekstensi sampel untuk membuat identitas baru untuk pembaruan firmware drive disediakan di bawah ini. Karena perangkat keras SCSI\DiskNVMe____StorageIHVabcd mungkin tidak unik di seluruh produsen perangkat keras, INF ekstensi harus menggunakan penargetan CHID untuk distribusi.
Paket 2 - Paket pembaruan firmware drive
Biasanya, paket ini berisi yang berikut:
INF driver universal firmware kelas
Biner payload pembaruan firmware
Katalog driver
Kirim paket firmware Anda sebagai pengiriman driver terpisah.
Paket pembaruan firmware drive INF menargetkan node baru SWC\StorageIHVabcd-firmwareupdate dan memanggil driver pembaruan firmware penyimpanan Windows 10. Agar perangkat komponen yang dijumlahkan perangkat lunak berfungsi, induknya harus dimulai. Untuk menggunakan drive StorFwUpdate, pengembang harus menggunakan arahan Include/Needs INF di bagian DDInstall untuk setiap bagian yang mungkin [DDInstall.*]
ke bagian yang sesuai [StorFwUpdate.*]
seperti yang ditunjukkan di sini, terlepas dari apakah INF menentukan arahan apa pun untuk bagian tersebut atau tidak:
[StorFwUpdateOem.NT]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT
CopyFiles = StorFwUpdateOem.CopyFiles
[StorFwUpdateOem.NT.Wdf]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT.Wdf
[StorFwUpdateOem.NT.Services]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT.Services
Untuk informasi selengkapnya, lihat Menggunakan file INF Komponen. Sampel file INF pembaruan firmware drive NVMe disediakan di bawah ini. Karena identitas perangkat lunak SWC\StorageIHVabcd-firmwareupdate mungkin tidak unik di seluruh produsen perangkat keras, INF harus menggunakan penargetan CHID untuk distribusi Windows Update.
Komponen StorFwUpdate tidak melakukan validasi apa pun (verifikasi tanda tangan atau dekripsi) dari payload biner firmware. Jika tingkat fitur ini diperlukan, maka mitra perangkat keras dapat menulis driver pembaruan firmware penyimpanan mereka sendiri.
Contoh pembaruan firmware drive penyimpanan
Karena kedua INF memerlukan CHID untuk distribusi Windows Update, mitra perangkat keras dapat memvalidasi solusi secara lokal menggunakan PNPUTIL.EXE seperti yang ditunjukkan di bawah ini.
Persyaratan
Windows 10, Versi 2004 (OS build 19041.488 atau lebih tinggi)
Perangkat dengan drive penyimpanan NVMe menggunakan driver stornvme.sys kotak masuk
Biner firmware drive NVMe
File INF yang ditulis dengan benar
Lihat versi firmware disk NVMe saat ini
Untuk melihat versi firmware disk NVMe saat ini:
Buka jendela PowerShell sebagai administrator.
Ketik
Get-PhysicalDisk | Get-StorageFirmwareInformation
untuk melihat versi firmware disk NVMe saat ini.
Perhatikan nilai ActiveSlotNumber dan FirmwareVersionInSlot saat ini.
Untuk informasi selengkapnya, lihat Get-StorageFirmwareInformation.
Instal INF ekstensi untuk membuat identitas perangkat keras perangkat lunak baru
Pindah ke direktori pada sistem Anda yang berisi file INF paket ekstensi driver. Misalnya, ketik
cd .\signed-DiskExtnPackage\
.Verifikasi bahwa file INF ekstensi berisi informasi untuk drive yang Sedang Anda perbarui. Lihat File INF ekstensi disk dalam artikel ini untuk contoh ekstensi INF.
Instal INF ekstensi dengan utilitas PnP Microsoft. Misalnya, di prompt perintah administrator, ketik
pnputil /add-driver .\OEMDiskExtnPackage.inf /install
. Karena node perangkat lunak baru dibuat sebagai anak dari perangkat penting boot, boot ulang diperlukan untuk diterapkan.
Lihat simpul komponen perangkat lunak baru (SWC)
Untuk melihat simpul SWC baru dan ID perangkat keras:
Dari menu Mulai Windows 10, buka Panel Kontrol, lalu buka Manajer Perangkat.
Di Manajer Perangkat, pilih Drive disk, lalu perluas simpul dan pilih drive disk yang telah Anda perbarui.
Setelah Anda memilih drive yang telah Anda perbarui, di menu Tampilan Manajer Perangkat, pilih Perangkat menurut koneksi.
Klik pada simpul drive yang dipilih, lalu klik untuk memperluas. Anda akan melihat komponen perangkat lunak Generik anak di bawah simpul drive.
Klik kanan pada komponen perangkat lunak Generik dan pilih Properti.
Di jendela dialog Properti , pilih tab Detail , lalu pilih Id Perangkat Keras dari daftar drop-down Properti , lihat ID Perangkat Keras untuk komponen perangkat lunak Generik pada simpul drive.
ID Perangkat Keras SWC\* harus cocok dengan yang ditentukan dalam INF Ekstensi.
Melihat dan menginstal pembaruan firmware disk NVMe
Buka jendela PowerShell sebagai administrator.
Pindah ke direktori pada sistem Anda yang berisi file INF pembaruan firmware disk NVMe. Misalnya, ketik
cd .\signed-ihv-firmware\
.Verifikasi bahwa INF pembaruan firmware disk berisi informasi untuk drive yang Anda perbarui. Lihat file INF Firmware Disk di artikel ini untuk contoh inf pembaruan firmware disk.
Instal INF pembaruan firmware disk dengan utilitas Microsoft PnP. Misalnya, di prompt perintah administrator, ketik
pnputil /add-driver .\StorFwUpdateIHV.inf /install
.Buka jendela PowerShell sebagai administrator.
Ketik
Get-PhysicalDisk | Get-StorageFirmwareInformation
untuk melihat informasi firmware disk NVMe yang diperbarui.
Lihat informasi firmware disk NVMe yang diperbarui di nilai ActiveSlotNumber dan FirmwareVersionInSlot .
Untuk informasi selengkapnya, lihat Get-StorageFirmwareInformation.
Menyebarkan paket INF dan firmware ekstensi melalui Windows Update
Pertama, validasi penyebaran paket melalui Windows Update menggunakan Penerbitan untuk panduan distribusi pengujian.
Selanjutnya, sebarkan paket melalui Windows Update menggunakan CHID yang sesuai.
Untuk informasi tentang penyebaran, lihat Alur Kerja Penerbitan Driver Windows 10 (unduhan DOCX).
Sampel INF ekstensi disk
Berikut ini adalah contoh file INF ekstensi:
;/*++
;
; Copyright (c) Microsoft Corporation. All rights reserved.
;
; THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
; KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
; PURPOSE.
;
; File:
;
; OEMDiskExtnPackage.inx
;
; Description:
;
; INF file for installing the OEMDiskExtnPackage. This will create a SWC\ DevNode
; which will service as the target HWID for the Disk storage firmware package.
;
;--*/
[Version]
Signature="$Windows NT$"
Class = Extension
ClassGuid = {e2f84ce7-8efa-411c-aa69-97454ca4cb57}
Provider = %ManufacturerName%
ExtensionId = {D91908BD-43FA-411B-92A1-C378AE5AF9FA}
CatalogFile = delta.cat
DriverVer = 08/26/2019,1.0.0.0
PnpLockdown = 1
[SourceDisksNames]
1 = %DiskName%
[Manufacturer]
%ManufacturerName%=Standard,NTamd64
[Standard.NTamd64]
%OEMDiskExtnPackage.DeviceDesc%=StorageIHV1-87B, SCSI\DiskNVMe____StorageIHV1-87B
%OEMDiskExtnPackage.DeviceDesc%=StorageIHV1-87A, SCSI\DiskNVMe____StorageIHV1-87A
%OEMDiskExtnPackage.DeviceDesc%=StorageIHV2_KUS02020, SCSI\DiskNVMe____StorageIHV2_KUS02020
%OEMDiskExtnPackage.DeviceDesc%=StorageIHV3_KBG40ZPZ512G, SCSI\DiskNVMe____KBG40ZPZ512G_IHV300Y9
%OEMDiskExtnPackage.DeviceDesc%=StorageIHV3_KBG40ZPZ512G, SCSI\DiskNVMe____KBG40ZPZ512G_IHV30015
[StorageIHV1-87B.NT]
[StorageIHV1-87B.NT.Components]
AddComponent = StorageIHV1-87B_component,,StorageIHV1-87B_ComponentInstall
[StorageIHV1-87B_ComponentInstall]
ComponentIds=StorageIHV1-87B
[StorageIHV1-87A.NT]
[StorageIHV1-87A.NT.Components]
AddComponent = StorageIHV1-87A_component,,StorageIHV1-87A_ComponentInstall
[StorageIHV1-87A_ComponentInstall]
ComponentIds=StorageIHV1-87A
[StorageIHV2_KUS02020.NT]
[StorageIHV2_KUS02020.NT.Components]
AddComponent = StorageIHV2_KUS02020_component,,StorageIHV2_KUS02020_ComponentInstall
[StorageIHV2_KUS02020_ComponentInstall]
ComponentIds=StorageIHV2_KUS02020
[StorageIHV3_KBG40ZPZ512G.NT]
[StorageIHV3_KBG40ZPZ512G.NT.Components]
AddComponent = StorageIHV3_KBG40ZPZ512G_component,,StorageIHV3_KBG40ZPZ512G_ComponentInstall
[StorageIHV3_KBG40ZPZ512G_ComponentInstall]
ComponentIds=StorageIHV3_KBG40ZPZ512G
;*****************************************
; Strings section
;*****************************************
[Strings]
ManufacturerName = "OEM"
DiskName = "OEM Disk Extn package Installation Disk"
OEMDiskExtnPackage.DeviceDesc = "Disk Extn Package"
OEMDiskExtnPackage.SVCDESC = "Disk Extn Package"
;Non-Localizable
REG_EXPAND_SZ = 0x00020000
REG_DWORD = 0x00010001
REG_MULTI_SZ = 0x00010000
REG_BINARY = 0x00000001
REG_SZ = 0x00000000
SERVICE_KERNEL_DRIVER = 0x1
SERVICE_ERROR_IGNORE = 0x0
SERVICE_ERROR_NORMAL = 0x1
SERVICE_ERROR_SEVERE = 0x2
SERVICE_ERROR_CRITICAL = 0x3
Sampel INF firmware disk
Berikut ini adalah contoh file INF firmware disk:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Copyright (c) Microsoft Corporation. All rights reserved.
;
; THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
; KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
; PURPOSE.
;
; File:
;
; StorageIHV3-Firmware-Update.inx
;
; Description:
;
; Driver installation file for firmware update.
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[Version]
Signature="$Windows NT$"
Class=Firmware
ClassGuid={f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
Provider=%ManufacturerName%
CatalogFile=delta.cat
DriverVer=08/26/2019,11.37.9.948
PnPLockDown=1
[SourceDisksNames]
1= %DiskName%
[DestinationDirs]
StorFwUpdateOem.CopyFiles=13
[Manufacturer]
%ManufacturerName%=Standard,NTamd64
[Standard.NTamd64]
%StorFwUpdateOem.DeviceDesc%=StorFwUpdateOem, SWC\StorageIHV3_KBG40ZPZ512G
[StorFwUpdateOem.NT]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT
CopyFiles = StorFwUpdateOem.CopyFiles
[StorFwUpdateOem.NT.Wdf]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT.Wdf
[StorFwUpdateOem.NT.HW]
AddReg = StorFwUpdateOem_HWAddReg
[StorFwUpdateOem_HWAddReg]
HKR,,FriendlyName,,%FwUpdateFriendlyName%
; Specify the location of the firmware offer and payload file in the registry.
; The files are kept in driver store. When deployed, %13% would be expanded to the actual path
; in driver store.
;
HKR,0D9EB3D6-6F14-4E8A-811B-F3B19F7ED98A\0,FirmwareImageVersion, 0x00000000, "AEMS0102"
HKR,0D9EB3D6-6F14-4E8A-811B-F3B19F7ED98A\0,FirmwareFileName, 0x00000000, %13%\AEMS0102.sig
[SourceDisksFiles]
AEMS0102.sig=1
[StorFwUpdateOem.CopyFiles]
AEMS0102.sig
[StorFwUpdateOem.NT.Services]
Include = StorFwUpdate.inf
Needs = StorFwUpdate.NT.Services
; =================== Generic ==================================
[Strings]
ManufacturerName="{Your Manufacturer Name}"
StorFwUpdateOem.DeviceDesc = "Storage Firmware Update (StorageIHV3) 1"
DiskName = "Storage Firmware Update Installation Disk"
FwUpdateFriendlyName= "StorageIHV3 Firmware Update"