Problembehandlung bei Updates der Laufwerkfirmware

Gilt für: Windows Server 2022, Windows Server 2019, Windows 10

Windows 10, Version 1703 und höher, verfügt über eine Funktion zum Aktualisieren der Firmware von HDDs und SSDs, die mit dem Firmware Upgradeable AQ (Additional Qualifier) per PowerShell zertifiziert wurden.

Weitere Informationen zu diesem Feature finden Sie hier:

Firmwareupdates können aus verschiedenen Gründen fehlschlagen. Dieser Artikel soll Ihnen bei der erweiterten Problembehandlung helfen.

Hinweis

Die Informationen in diesem Artikel reichen je nach dem Problem möglicherweise nicht aus, um alle möglichen Fehlerfälle vollständig zu debuggen.

Häufige Probleme

Im Hinblick auf die Architektur basiert diese neue Funktion auf APIs, die in dem Windows-Speicherstapel implementiert sind, der von PowerShell aufgerufen wird. Der Speicherstapel nutzt Treiber und Hardware, um branchenübliche Befehle richtig zu implementieren. Dies führt zu mehreren Punkten, an denen Fehler auftreten können. Am häufigsten werden folgende Probleme beobachtet:

  • Ein bestimmtes Laufwerk implementiert die branchenüblichen Befehle nicht richtig (AQ nicht vorhanden).
  • Die zum Ausführen des Updates erforderlichen APIs werden nicht implementiert oder sind fehlerhaft (wenn Treiber von Drittanbietern verwendet werden).
  • Die APIs funktionieren, aber es gibt ein Problem bei der Firmware selbst (z. B. ungültiges/beschädigtes Image).

Die folgenden Abschnitte enthalten Informationen zur Problembehandlung – abhängig davon, ob Treiber von Microsoft oder von Drittanbietern verwendet werden.

Identifizieren ungeeigneter Hardware

Die schnellste Möglichkeit zur Ermittlung, ob ein Gerät den richtigen Befehlssatz unterstützt, besteht darin, PowerShell zu starten und einen Datenträger, der das Objekt „PhysicalDisk“ darstellt, an das Cmdlet „Get-StorageFirmwareInfo“ zu übergeben. Hier sehen Sie ein Beispiel:

Get-PhysicalDisk -SerialNumber 15140F55976D | Get-StorageFirmwareInformation

Und hier ist eine Beispielausgabe:

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

Im Feld „SupportsUpdate“ wird zumindest für SATA- und NVMe-Geräte angegeben, ob die integrierte PowerShell-Funktionalität zum Aktualisieren der Firmware verwendet werden kann.

Im Feld „SupportsUpdate“ wird für mit SAS verbundene Geräte immer „True“ angezeigt, da das Abfragen der entsprechenden Befehlsunterstützung mit branchenüblichen Befehlen nicht möglich ist.

Zur Überprüfung, ob ein SAS-Gerät den erforderlichen Befehlssatz unterstützt, gibt es zwei Optionen:

  • Testen des SAS-Geräts über das Cmdlet „Update-StorageFirmware“ mit einem passenden Firmwareimage oder
  • Ermitteln anhand von Windows Server Catalog, welche SAS-Geräte die Prüfung durch den FW Update AQ bestanden haben (https://www.windowsservercatalog.com/)

Lösungsoptionen

Wenn ein bestimmtes Gerät, das Sie gerade testen, den richtigen Befehlssatz nicht unterstützt, fragen Sie entweder bei Ihrem Anbieter an, ob eine aktualisierte Firmware mit dem erforderlichen Befehlssatz zur Verfügung steht, oder identifizieren Sie anhand von Windows Server Catalog Geräte, die den geeigneten Befehlssatz implementieren.

Problembehandlung bei Drittanbietertreibern (SAS)

Die Softwarekomponenten, die mit Hardware am engsten interagieren, sind Miniporttreiber im Windows-Speicherstapel. Für einige Speicherprotokolle, z. B. SATA und NVMe, stellt Microsoft native Windows-Treiber bereit. Diese Treiber unterstützen zusätzliche Debuginformationen. Drittanbieter von Hardware und Software können jedoch benutzerdefinierte Miniporttreiber für ihre Geräte schreiben. In diesen Fällen kann die Unterstützung für Debuginformationen variieren.

Informationen dazu, was beim Firmwaredownload passiert ist, und zum Aktivieren von APIs, die – unabhängig vom Miniporttreiber – über den Speicherstapel gesendet werden, finden Sie im folgenden Ereignisprotokollkanal:

Ereignisanzeige > Anwendungs- und Dienstprotokolle > Microsoft > Windows > StorDiag > Microsoft-Windows-Storage-ClassPnP/Operational

Dieser Kanal zeichnet Informationen zu den Windows-APIs, die an die Miniporttreiber gesendet wurden, und deren Antworten auf. Die folgende Fehlerbedingung tritt beispielsweise beim Versuch auf, ein Firmwareimage auf ein SATA-Gerät herunterzuladen, das über eine SAS HBA-Einheit angeschlossen ist, die die erforderliche Übersetzung von SAS in SATA nicht richtig implementiert:

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

Dies ist ein Beispiel für die Ausgabe:

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 löst einen Fehler aus und hat die Information empfangen, dass die aufgerufene Funktion (d. h. die Kernel-API) fehlerhaft war. Ein Fehler könnte bedeuten, dass entweder die API durch den SAS-Miniporttreiber eines Drittanbieters nicht implementiert wurde (was hier zutrifft) oder dass bei der API aus einem anderen Grund ein Fehler aufgetreten ist, z. B. aufgrund einer Fehlausrichtung von Downloadsegmenten.

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

Das ETW-Ereignis 507 aus dem Kanal zeigt, dass eine SCSI-SRB-Anforderung fehlgeschlagen ist, und es stellt die zusätzlichen Informationen bereit, dass SenseKey „5“ (Ungültige Anforderung) und die AdditionalSense-Information „36“ (Ungültiges Feld in CDB) war.

Hinweis

Diese Informationen werden direkt vom betreffenden Miniport bereitgestellt, und die Genauigkeit der Informationen ist abhängig von der Implementierung und dem technischen Stand des Miniporttreibers.

Es ist möglich, dass verschiedene Fehlerbedingungen dieselben Fehlercodes ausgeben, wenn der Miniporttreiber dazwischen nicht unterscheidet. Beispielsweise kann der Versuch, ein ungültiges Firmwareimage über eine SAS HBA-Einheit auf ein SATA-Gerät herunterzuladen (bei dem das Gerät voraussichtlich ausfällt), zu denselben Fehlercodes führen.

In Fällen, in denen Protokolle gemischt sind und Übersetzungen durchgeführt werden (also bei SATA hinter SAS), ist es am besten, das direkt mit einem SATA-Controller verbundene SATA-Gerät zu testen. So kann ausgeschlossen werden, dass dies ein potenzielles Problem ist.

Lösungsoptionen

Wenn beim Treiber des Drittanbieters ermittelt wird, dass die erforderlichen APIs oder Übersetzungen nicht implementiert werden, kann entweder zu den von Microsoft bereitgestellten Alternativen für SATA (StorAHCI.sys) und NVMe (StorNVMe.sys) gewechselt werden, oder Sie können beim OEM- oder HBA-Anbieter des SAS-Treibers nachfragen, ob es eine neuere Version mit der richtigen Unterstützung gibt.

Weitere Problembehandlung bei Microsoft-Treibern (SATA/NVMe)

Wenn native Windows-Treiber, z. B. StorAHCI.sys oder StorNVMe.sys, für den Betrieb von Speichergeräten verwendet werden, können zusätzliche Informationen zu möglichen Fehlerfällen während Firmwareupdatevorgängen abgerufen werden.

Über den Kanal „ClassPnP Operational“ hinaus protokollieren StorAHCI und StorNVMe die protokollspezifischen Rückgabecodes des Geräts im folgenden ETW-Kanal:

Ereignisanzeige > Anwendungs- und Dienstprotokolle > Microsoft > Windows > StorDiag > Microsoft-Windows-Storage-StorPort/Diagnose

Die Diagnoseprotokolle werden nicht standardmäßig angezeigt und können aktiviert/angezeigt werden, indem Sie in EventViewer „Ansicht“ und dann im Dropdownmenü die Option „Analyse- und Debugprotokolle anzeigen“ auswählen.

Wenn Sie diese erweiterten Protokolleinträge sammeln möchten, aktivieren Sie das Protokoll, reproduzieren Sie den Fehler beim Firmwareupdate, und speichern Sie das Diagnoseprotokoll.

Hier ist ein Beispiel für ein Firmwareupdate auf einem SATA-Gerät, bei dem ein Fehler auftritt, weil das herunterzuladende Image ungültig war (Ereignis-ID: 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

Das vorstehende Ereignis enthält detaillierte Geräteinformationen in den Parameterwerten 2 bis 6. Hier werden verschiedene ATA-Registerwerte gezeigt. Mithilfe der ATA-ACS-Spezifikation können die unten angegebenen Werte beim Fehlschlagen eines Befehls zum Herunterladen von Microcode („Download Microcode“) decodiert werden:

  • Rückgabecode: 0 (0000 0000) (nicht verfügbar – bedeutungslos, da keine Nutzlast übertragen wurde)
  • Features: 15 (0000 1111) (Bit 1 ist auf „1“ festgelegt und gibt „abort“ (Abbruch) an.)
  • SectorCount: 0 (0000 0000) (nicht verfügbar)
  • DriveHead: 160 (1010 0000) (nicht verfügbar – nur veraltete Bits sind festgelegt)
  • Befehl: 146 (1001 0010) (Bit 1 ist auf „1“ festgelegt und zeigt die Verfügbarkeit von Sense-Daten an.)

Dies informiert darüber, dass der Firmwareupdatevorgang vom Gerät abgebrochen wurde.

Eine ähnliche Ebene von Debuginformationen steht in diesem Kanal zur Verfügung, wenn NVMe-Geräte mit dem Windows-nativen NVMe-Treiber (StorNVMe.sys) verwendet werden.