Mettre à jour un firmware NVME

Comment mettre à jour le firmware d’un SSD Toshiba sous Linux.

Update: La mise à jour n’a fait que prolonger de quelques semaines la durée de vie du SSD. Aucune donnée n’a été perdue, ce sursis a au moins laisser le temps de vérifier le disque dur ! Il est néanmoins dangereux de mettre un jour un firmware, qui plus est sur un disque défectueux.

TLDR:

$ 7z x Toshiba\ KXG50ZNV256G_KXG50ZNV512G_KXG50ZNV1T02\ 7YXTM_ZPE.exe
$ 7z x XG5-AADA4107-64bit.exe
$ sudo nvme fw-download /dev/nvme0n1 --fw=AADA4107.sig
$ sudo nvme fw-commit /dev/nvme0n1 --slot=0 --action=1
$ reboot

Le Dell XPS 9360 saccade de plus en plus. Il semble que ce soit dû au SSD.

Changer le scheduler d’I/O de none à mq-deadline puis kyber réduit significativement la latence. Suffisamment pour naviguer le web mais pas pour regarder des vidéos.

Une recherche sur ce modèle de SSD révèle qu’il existe des mises à jours de son firmware : c’est un Toshiba KXG50ZNV256G avec le firmware AADA4102. Un tour sur le site de Dell permet de télécharger le firmware AADA4107 : Mise à jour du micrologiciel de disque SSD Toshiba pour KXG50ZNV256G

Il n’est pas question de Linux sur ce site, heureusement les outils en ligne de commandes nvme-cli vont permettre de mettre à jour le firmware (un peu léger pour un portable vendu avec un premium pour bénéficier de Linux).

Obtenir le firmware

  1. Télécharger l’exécutable contenant la mise à jour

  2. Extraire le fichier “AADA4107.sig”, ça a marché pour moi en ouvrant l’exécutable avec file-roller (le gestionnaire d’archives de gnome), puis en ouvrant le second exécutable contenu dedans. Vous pourrez vous en sortir aussi avec 7z:

    $ 7z x Toshiba\ KXG50ZNV256G_KXG50ZNV512G_KXG50ZNV1T02\ 7YXTM_ZPE.exe
    $ 7z x XG5-AADA4107-64bit.exe
    

Vous devez maintenant avoir le fichier “AADA4107.sig” :

$ stat AADA4107.sig 
  File: AADA4107.sig
  Size: 1601536

(Toshiba, Dell : dans un monde meilleur, pourquoi ne pas nous laisser directement télécharger ce fichier ?)

Charger le firmware dans le SSD

Une petite introduction à l’outil nvme-cli:

La mise à jour se fait en deux étapes : on charge le firmware avec fw-download et on l’active avec fw-commit.

$ nvme fw-download /dev/nvme0n1 --fw=AADA4107.sig
$ nvme fw-commit /dev/nvme0n1 --slot=0 --action=1

Il n’y a plus qu'à rebooter l’ordinateur et fw-log devrait vous indiquer que la version AADA4107 est maintenant installée :

$ nvme fw-log /dev/nvme0n1
Firmware Log for device:nvme0n1
afi  : 0x1
frs1 : 0x3730313441444141 (AADA4107)
frs2 : 0x3230313441444141 (AADA4102)