Pemecahan masalah pembaruan firmware drive

Berlaku untuk: Windows Server 2022, Windows Server 2019, Windows 10

Windows 10, versi 1703 dan yang lebih baru mencakup kemampuan untuk memperbarui firmware HDD dan SSD yang telah disertifikasi dengan Firmware Upgradeable AQ (Kualifikasi Tambahan) melalui PowerShell.

Anda dapat menemukan informasi selengkapnya tentang fitur ini di sini:

Pembaruan firmware dapat gagal karena berbagai alasan. Tujuan artikel ini adalah untuk membantu pemecahan masalah tingkat lanjut.

Catatan

Informasi dalam artikel ini, tergantung pada masalahnya, mungkin tidak cukup untuk sepenuhnya men-debug semua kemungkinan kasus kegagalan.

Masalah umum

Secara arsitektur, kemampuan baru ini bergantung pada API yang diterapkan di tumpukan penyimpanan Windows, yang dipanggil PowerShell. Tumpukan penyimpanan bergantung pada driver dan perangkat keras untuk menerapkan perintah yang ditentukan industri dengan benar. Ini menghasilkan beberapa titik di mana kegagalan dapat terjadi. Masalah yang paling umum diamati adalah:

  • Drive tertentu tidak mengimplementasikan perintah standar industri dengan benar (tidak memiliki AQ.)
  • API yang diperlukan untuk melakukan pembaruan tidak diimplementasikan atau rusak (jika driver pihak ke-3 digunakan).
  • API berfungsi tetapi ada masalah dengan firmware itu sendiri (misalnya, gambar yang tidak valid/rusak).

Bagian berikut menguraikan informasi pemecahan masalah, bergantung pada apakah driver Microsoft atau pihak ketiga digunakan.

Mengidentifikasi perangkat keras yang tidak pantas

Cara tercepat untuk mengidentifikasi apakah perangkat mendukung set perintah yang benar adalah dengan meluncurkan PowerShell dan meneruskan objek PhysicalDisk yang mewakili disk ke cmdlet Get-StorageFirmwareInfo. Berikut contohnya:

Get-PhysicalDisk -SerialNumber 15140F55976D | Get-StorageFirmwareInformation

Dan berikut adalah contoh output:

PhysicalDisk          : MSFT_PhysicalDisk (ObjectId = "{1}\\TOKLIMA-DL380\root/Microsoft/Windo...)
SupportsUpdate        : True
NumberOfSlots         : 1
ActiveSlotNumber      : 0
SlotNumber            : {0}
IsSlotWritable        : {True}
FirmwareVersionInSlot : {0013}

Bidang SupportsUpdate, setidaknya untuk perangkat SATA dan NVMe, menunjukkan apakah fungsionalitas PowerShell bawaan dapat digunakan untuk memperbarui firmware.

Bidang SupportsUpdate selalu melaporkan "True" untuk perangkat yang dilampirkan SAS karena kueri untuk dukungan perintah yang sesuai tidak dimungkinkan dengan perintah standar industri.

Untuk memvalidasi apakah perangkat SAS mendukung kumpulan perintah yang diperlukan, ada dua opsi:

  • Uji perangkat SAS melalui cmdlet Update-StorageFirmware dengan gambar firmware yang sesuai; Atau
  • Konsultasikan dengan Katalog Windows Server untuk mengidentifikasi perangkat SAS mana yang berhasil mendapatkan FW Update AQ (https://www.windowsservercatalog.com/)

Opsi remediasi

Jika perangkat tertentu yang Anda uji tidak mendukung kumpulan perintah yang sesuai, kueri vendor Anda untuk melihat apakah firmware yang diperbarui tersedia yang menyediakan kumpulan perintah yang diperlukan, atau konsultasikan dengan Katalog Windows Server untuk mengidentifikasi perangkat untuk sumber yang menerapkan set perintah yang sesuai.

Pemecahan masalah dengan driver Pihak ketiga (SAS)

Komponen perangkat lunak yang paling erat berinteraksi dengan perangkat keras adalah driver port mini di tumpukan penyimpanan Windows. Untuk beberapa protokol penyimpanan, seperti SATA dan NVMe, Microsoft menyediakan driver Windows asli. Driver ini mendukung informasi debug tambahan. Namun, vendor perangkat keras dan perangkat lunak pihak ketiga dapat menulis driver miniport kustom untuk perangkat mereka. Dalam kasus ini, dukungan untuk informasi debug dapat bervariasi.

Untuk mengidentifikasi apa yang terjadi pada unduhan firmware dan mengaktifkan API yang dikirim ke tumpukan penyimpanan, terlepas dari driver miniport, lihat saluran log peristiwa berikut:

Pemantau Peristiwa - Log Aplikasi dan Layanan - Microsoft - Windows - StorDiag - Microsoft-Windows-Storage-ClassPnP/Operational

Saluran ini merekam informasi tentang API Windows yang dikirim ke driver miniport dan responsnya. Misalnya, kondisi kesalahan berikut terjadi ketika mencoba mengunduh gambar firmware ke perangkat SATA yang terhubung melalui SAS HBA yang tidak menerapkan terjemahan yang diperlukan dengan benar dari SAS ke SATA:

Get-PhysicalDisk -SerialNumber 44GS103UT5EW | Update-StorageFirmware -ImagePath C:\Firmware\J3E160@3.enc -SlotNumber 0

Berikut adalah contoh output-nya:

Update-StorageFirmware : Failed

Extended information:
A warning or error has been encountered during storage firmware update.
Incorrect function.

Activity ID: {1224482b-2315-4a38-81eb-27bb7de19c00}
At line:1 char:47
+ ... S103UT5EW | Update-StorageFirmware -ImagePath C:\Firmware\J3E160@3.en ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Update-StorageFirmware], CimException
+ FullyQualifiedErrorId : StorageWMI 4,Microsoft.Management.Infrastructure.CimCmdlets.InvokeCimMethodCommand,Update-StorageFirmware

PowerShell melemparkan kesalahan dan telah menerima informasi bahwa fungsi yang dipanggil (yaitu, API Kernel) salah. Kesalahan dapat berarti bahwa API tidak diimplementasikan oleh driver port mini SAS pihak ke-3 (benar dalam hal ini), atau bahwa API gagal karena alasan lain, seperti ketidakselarasan segmen unduhan.

EventData
DeviceGUID	{132EDB55-6BAC-A3A0-C2D5-203C7551D700}
DeviceNumber	1
Vendor	ATA
Model	TOSHIBA THNSNJ12
FirmwareVersion	6101
SerialNumber	44GS103UT5EW
DownLevelIrpStatus	0xc0000185
SrbStatus	132
ScsiStatus	2
SenseKey	5
AdditionalSenseCode	36
AdditionalSenseCodeQualifier	0
CdbByteCount	10
CdbBytes	3B0E0000000001000000
NumberOfRetriesDone	0

Peristiwa ETW 507 dari saluran menunjukkan bahwa permintaan SCSI SRB gagal dan memberikan informasi tambahan bahwa SenseKey adalah '5' (Permintaan Ilegal), dan bahwa informasi AdditionalSense adalah '36' (Bidang Ilegal di CDB).

Catatan

Informasi ini diberikan langsung oleh miniport yang dimaksud dan keakuratan informasi ini akan tergantung pada implementasi dan kecanggihan driver miniport.

Dimungkinkan untuk kondisi kesalahan yang berbeda untuk menunjukkan kode kesalahan yang sama jika driver miniport tidak membedakan di antara mereka. Misalnya, mencoba mengunduh gambar firmware yang tidak valid melalui SAS HBA ke perangkat SATA (yang diharapkan gagal oleh perangkat) dapat mengakibatkan kode kegagalan yang identik.

Dalam kasus di mana protokol dicampur dan terjemahan terjadi, yaitu, SATA di belakang SAS, yang terbaik adalah menguji perangkat SATA yang terhubung langsung ke pengontrol SATA untuk mengesampingkannya sebagai masalah potensial.

Opsi remediasi

Jika driver pihak ke-3 diidentifikasi tidak menerapkan API atau terjemahan yang diperlukan, dimungkinkan untuk bertukar ke alternatif yang disediakan Microsoft untuk SATA (StorAHCI.sys) dan NVMe (StorNVMe.sys), atau hubungi vendor OEM atau HBA yang menyediakan driver SAS dan kueri jika versi yang lebih baru dengan dukungan yang tepat ada.

Pemecahan masalah lainnya dengan driver Microsoft (SATA/NVMe)

Ketika driver asli Windows, seperti StorAHCI.sys atau StorNVMe.sys digunakan untuk menggerakkan perangkat penyimpanan, dimungkinkan untuk mendapatkan informasi tambahan tentang kemungkinan kasus kegagalan selama operasi pembaruan firmware.

Di luar saluran Operasional ClassPnP, StorAHCI dan StorNVMe mencatat kode pengembalian spesifik protokol perangkat di saluran ETW berikut:

Pemantau Peristiwa - Log Aplikasi dan Layanan - Microsoft - Windows - StorDiag - Microsoft-Windows-Storage-StorPort/Diagnose

Log diagnostik tidak ditampilkan secara default dan dapat diaktifkan/ditampilkan dengan memilih "Lihat" di EventViewer lalu memilih "Tampilkan Log Analitik dan Debug" dari menu drop-down.

Untuk mengumpulkan entri log tingkat lanjut ini, aktifkan log, reproduksi kegagalan pembaruan firmware, dan simpan log diagnostik.

Berikut adalah contoh pembaruan firmware pada perangkat SATA yang gagal, karena gambar yang akan diunduh tidak valid (ID Peristiwa: 258):

EventData
MiniportName	storahci
MiniportEventId	19
MiniportEventDescription	Firmware Activate Completion
PortNumber	0
Bus	2
Target	0
LUN	0
Irp	0xffff8c84cd45aca0
Srb	0xffffab0024030bc0
Parameter1Name	SrbStatus
Parameter1Value	130
Parameter2Name	ReturnCode
Parameter2Value	0
Parameter3Name	FeaturesReg
Parameter3Value	15
Parameter4Name	SectorCountReg
Parameter4Value	0
Parameter5Name	DriveHeadReg
Parameter5Value	160
Parameter6Name	CommandReg
Parameter6Value	146
Parameter7Name	NULL
Parameter7Value	0
Parameter8Name	NULL
Parameter8Value	0

Peristiwa di atas berisi informasi perangkat terperinci dalam nilai parameter 2 hingga 6. Di sini kita melihat berbagai nilai register ATA. Spesifikasi ATA ACS dapat digunakan untuk mendekode nilai di bawah ini untuk kegagalan perintah Unduh Kode Mikro:

  • Kode Pengembalian: 0 (0000 0000) (N/A - Tidak berarti karena tidak ada payload yang ditransfer.)
  • Fitur: 15 (0000 1111) (Bit 1 diatur ke '1' dan menunjukkan "batalkan".)
  • SectorCount: 0 (0000 0000) (N/A)
  • DriveHead: 160 (1010 0000) (N/A – Hanya bit usang yang diatur.)
  • Perintah: 146 (1001 0010) (Bit 1 diatur ke '1' yang menunjukkan ketersediaan data indra.)

Ini memberi tahu kami bahwa operasi pembaruan firmware dibatalkan oleh perangkat.

Tingkat informasi debug serupa tersedia di saluran ini saat menggunakan perangkat NVMe dengan driver NVMe asli Windows (StorNVMe.sys).