Partager via


Résolution des problèmes liés aux mises à jour du microprogramme du lecteur

La version 1703 et les versions ultérieures de Windows 10 incluent la possibilité de mettre à jour le microprogramme des disques durs et des disques SSD qui ont été certifiés avec le qualificateur supplémentaire (AQ) de mise à niveau du microprogramme via PowerShell.

Vous pouvez en savoir plus sur cette fonctionnalité ici :

Les mises à jour du microprogramme peuvent échouer pour différentes raisons. L’objectif de cet article est d’aider à résoudre les problèmes avancés.

Notes

Les informations contenues dans cet article, selon le problème, peuvent ne pas être suffisantes pour déboguer entièrement tous les cas d’échec possibles.

Problèmes courants

Sur le plan architectural, cette nouvelle fonctionnalité s’appuie sur les API implémentées dans la pile de stockage Windows, que PowerShell appelle. La pile de stockage s’appuie sur des pilotes et du matériel pour implémenter correctement des commandes définies par le secteur. Cela génère plusieurs points auxquels des défaillances peuvent se produire. Les problèmes les plus couramment observés sont les suivants :

  • Un lecteur donné n’implémente pas correctement les commandes standard du secteur d’activité (n’a pas l’AQ.)
  • Les API nécessaires pour effectuer la mise à jour ne sont pas implémentées ou sont défectueuses (si des pilotes tiers sont utilisés).
  • Les API fonctionnent, mais il y a un problème avec le microprogramme lui-même (par exemple, image non valide/endommagée).

Les sections suivantes décrivent les informations de résolution des problèmes, selon que des pilotes Microsoft ou tiers sont utilisés.

Identification du matériel inapproprié

Le moyen le plus rapide d’identifier si un appareil prend en charge le jeu de commandes correct est de lancer PowerShell et de passer l’objet PhysicalDisk représentant un disque dans l’applet de commande Get-StorageFirmwareInfo. Voici un exemple :

Get-PhysicalDisk -SerialNumber 15140F55976D | Get-StorageFirmwareInformation

Voici un exemple de résultat :

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

Le champ SupportsUpdate, au moins pour les appareils SATA et NVMe, indique si la fonctionnalité PowerShell intégrée peut être utilisée pour mettre à jour le microprogramme.

Le champ SupportsUpdate indique toujours « True » pour les appareils attachés à SAS, car il n’est pas possible d’interroger la prise en charge appropriée des commandes avec les commandes standard.

Pour vérifier si un appareil SAS prend en charge le jeu de commandes nécessaire, vous avez deux options :

  • Testez l’appareil SAS en utilisant l’applet de commande Update-StorageFirmware avec une image de microprogramme appropriée, ou
  • Consultez Windows Server Catalog pour identifier les appareils SAS qui ont réussi à obtenir l’AQ de mise à jour du microprogramme (https://www.windowsservercatalog.com/)

Options de correction

Si un appareil donné que vous testez ne prend pas en charge le jeu de commandes approprié, interrogez votre fournisseur pour voir si un microprogramme mis à jour qui fournit le jeu de commandes nécessaire est disponible, ou consultez Windows Server Catalog pour identifier les appareils d’approvisionnement qui implémentent le jeu de commandes approprié.

Résolution des problèmes avec des pilotes tiers (SAS)

Les pilotes de mini-port de la pile de stockage Windows sont les composants logiciels qui interagissent le plus étroitement avec le matériel. Pour certains protocoles de stockage, tels que SATA et NVMe, Microsoft fournit des pilotes Windows natifs. Ces pilotes prennent en charge des informations de débogage supplémentaires. Toutefois, les fournisseurs de matériel et de logiciels tiers peuvent écrire des pilotes miniport personnalisés pour leurs appareils. Dans ce cas, la prise en charge des informations de débogage peut varier.

Pour identifier ce qui est arrivé au téléchargement du microprogramme et activer des API envoyées dans la pile de stockage, quel que soit le pilote de mini-port, consultez le canal du journal des événements suivant :

Observateur d’événements - Journaux d’application et de services - Microsoft - Windows - StorDiag - Microsoft-Windows-Storage-ClassPnP/Operational

Ce canal enregistre des informations sur les API Windows envoyées aux pilotes de miniport et leurs réponses. Par exemple, la condition d’erreur suivante se produit pendant la tentative de téléchargement d’une image de microprogramme sur un appareil SATA connecté par un HBA SAS qui n’implémente pas correctement la traduction nécessaire de SAS vers SATA :

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

Voici un exemple de sortie :

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 génère une erreur et a reçu les informations indiquant que la fonction appelée (c’est-à-dire l’API du noyau) était incorrecte. Une erreur peut signifier que l’API n’a pas été implémentée par le pilote de miniport SAP tiers (ce qui le cas ici), ou que l’API a échoué pour une autre raison, comme un mauvais alignement des segments de téléchargement.

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

L’événement ETW 507 du canal montre qu’une requête SRB SCSI a échoué et fournit des informations supplémentaires indiquant que SenseKey était « 5 » (demande illégale) et que les informations AdditionalSense étaient « 36 » (champ illégal dans CDB).

Notes

Ces informations sont fournies directement par le mini-port en question et l’exactitude de ces informations dépend de l’implémentation et de la sophistication du pilote de mini-port.

Il est possible que des conditions d’erreur différentes présentent les mêmes codes d’erreur si le pilote de miniport ne supprime pas l’ambiguïté entre eux. Par exemple, la tentative de téléchargement d’une image de microprogramme non valide par un HBA SAS sur un appareil SATA (dont l’appareil est censé échouer) peut engendrer les mêmes codes d’échec.

Dans les cas où les protocoles sont mélangés et que des traductions se produisent, c’est-à-dire, SATA derrière SAS, il est préférable de tester l’appareil SATA directement connecté à un contrôleur SATA pour l’exclure comme problème potentiel.

Options de correction

Si le pilote tiers est identifié comme n’implémentant pas les API ou les traductions nécessaires, il est possible d’échanger avec les alternatives fournies par Microsoft pour SATA (StorAHCI.sys) et NVMe (StorNVMe.sys), ou de contacter le fournisseur OEM ou HBA qui a fourni le pilote SAS, et de demander si une version plus récente avec la prise en charge appropriée existe.

Résolution d’autres problèmes avec les pilotes Microsoft (SATA/NVMe)

Quand des pilotes natifs Windows, comme StorAHCI.sys ou StorNVMe.sys, sont utilisés pour alimenter des supports de stockage, il est possible d’obtenir des informations supplémentaires sur les cas de défaillance possibles pendant les opérations de mise à jour du microprogramme.

Au-delà du canal opérationnel ClassPnP, StorAHCI et StorNVMe journalisent les codes de retour spécifiques du protocole de l’appareil dans le canal ETW suivant :

Observateur d’événements - Journaux d’application et de services - Microsoft - Windows - StorDiag - Microsoft-Windows-Storage-StorPort/Diagnose

Les journaux de diagnostic ne sont pas affichés par défaut et peuvent être activés/affichés en sélectionnant « Afficher » dans l’observateur d’événements et en sélectionnant « Afficher les journaux d’analyse et de débogage » dans le menu déroulant.

Pour collecter ces entrées de journal avancées, activez le journal, reproduisez l’échec de mise à jour du microprogramme et enregistrez le journal de diagnostic.

Voici un exemple d’échec de mise à jour du microprogramme sur un appareil SATA, car l’image à télécharger n’était pas valide (ID d’événement : 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

L’événement ci-dessus contient des informations détaillées sur l’appareil dans les valeurs de paramètre 2 à 6. Ici, nous examinons différentes valeurs de Registre ATA. La spécification ACS ATA peut être utilisée pour décoder les valeurs ci-dessous en cas d’échec d’une commande Download Microcode :

  • Code de retour : 0 (0000 0000) (N/A - Sans signification, car aucune charge utile n’a été transférée.)
  • Fonctionnalités : 15 (0000 1111) (Bit 1 est défini sur « 1 » et indique « abandonner ».)
  • SectorCount : 0 (0000 0000) (N/A)
  • DriveHead : 160 (1010 0000) (N/A - Seuls les bits obsolètes sont définis.)
  • Commande : 146 (1001 0010) (Bit 1 est défini sur « 1 », ce qui indique la disponibilité des données de sens.)

Cela nous indique que l’opération de mise à jour du microprogramme a été abandonnée par l’appareil.

Un niveau similaire d’informations de débogage est disponible dans ce canal lors de l’utilisation d’appareils NVMe avec le pilote NVMe natif Windows (StorNVMe.sys).