Mettre à jour un firmware NVME
2020-03-15 06:45:48+01:00
Comment mettre à jour le firmware d'un SSD Toshiba sous Linux.
Update 2 (25/08/2020) : J'ai trouvé via ce guide pour hackintosh qu'il était possible de formatter le disque NVME pour avoir des secteurs de 512 octets ou de 4 kilo-octets. J'ai fait un reformattage pour avoir des secteur de 4 kilo-octets et depuis les performances sont redevenues normales ! Il suffit de faire :
$ nvme-format --lbaf=1 /dev/nvme0n1
L'indice indique la taille des secteurs, reportées par smartctl
:
$ smartctl -a /dev/nvme0n1
Supported LBA Sizes (NSID 0x1)
Id Fmt Data Metadt Rel_Perf
0 + 512 0 0
1 - 4096 0 0
ATTENTION, cela efface l'intégralité du disque ! Il n'est évidemment pas très sûr d'utiliser un SSD qui a déjà émis des signes d'instabilité (en perf pas en perte de données mais bon ...), cependant il se porte comme un charme depuis deux mois que je l'ai reformaté :-).
Update 1 (26/04/2020) : 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](https://www.dell.com/support/home/fr/fr/frbsdt1/drivers/driversdetails?driverid=7yxtm)
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
Télécharger l’exécutable contenant la mise à jour
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
:
tout passe par le binaire
nvme
, si vous ne l'avez pas encore c'estpacman -S nvme-cli
sous ArchLinux.la sous-commande
list
devrait décrire le SSD. Ici :$ nvme list Node SN Model Namespace Usage Format FW Rev –––––––––––––––– –––––––––––––––––––– –––––––––––––––––––––––––––––––––––––––– ––––––––– –––––––––––––––––––––––––– –––––––––––––––– –––––––– /dev/nvme0n1 18MS105XTY5T KXG50ZNV256G NVMe TOSHIBA 256GB 1 256,06 GB / 256,06 GB 512 B + 0 B AADA4107
la sous-commande
fw-log <device>
décrit le firmware actuel:$ nvme fw-log /dev/nvme0n1 afi : 0x1 frs1 : 0x3230313441444141 (AADA4102) frs2 : 0x3230313441444141 (AADA4102)
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)