Rendre un SSD NVMe en Thunderbolt compatible avec Sierra

Depuis quelques années, les SSD passent d’une interface SATA à une interface PCI-Express. Et en PCI-Express, il passent de l’AHCI au NVMe. Et ce dernier pose quelques soucis avec macOS. Je vais vous expliquer comment garder une bonne compatibilité avec plusieurs OS.

Les SSD modernes utilisent une interface PCI-Express et la norme NVMe. Le PCI-Express permet des débits de l’ordre de 4 Go/s actuellement (4 lignes PCI-Express 3.0) contre ~550 Mo/s en SATA (sur 600 Mo/s en théorie). Dans la pratique, ça dépend évidemment du modèle et du nombre de lignes de l’ordinateur, mais le gain reste généralement conséquent. Le NVMe est la norme utilisée pour gérer la communication entre l’OS et le SSD. Les premiers SSD PCI-Express (notamment utilisés par Apple dès 2013) utilisaient l’AHCI, la même norme que pour les SSD SATA. Le NVMe offre plus de fonctions et gère mieux les SSD, pour améliorer les performances.

macOS et le NVMe

Apple utilise des SSD NVMe maison depuis quelques années (le premier MacBook moderne) mais le support des SSD NVMe d’une autre marque reste assez léger. Actuellement, seul macOS Sierra et High Sierra supportent le NVMe, et Sierra pose des limites. Sous Sierra, il faut que le SSD utilise des secteurs de 4 ko en interne, alors que High Sierra accepte les modèles avec des secteurs de 512 octets. De plus, le démarrage sur un SSD NVMe nécessite un EFI à jour, qui ne s’effectue normalement qu’avec l’installation de High Sierra.

Le choix d’un SSD avec des secteurs de 4 ko pour une compatibilité avec Sierra devient vite un calvaire : la grosse majorité des SSD utilise des secteurs de 512 octets. Heureusement, il existe quelques modèles qui sont par défaut en 4 ko ou – dans le pire des cas – qui peuvent être configurés en 4 ko. Je vais vous expliquer la technique dans la suite, mais je dois d’abord remercier Gilles qui fait régulièrement des tests et dispose d’une liste à jour avec les SSD compatibles et les problèmes éventuels.

512 par défaut, ça ne fonctionne que sous High Sierra


Le SSD sous High Sierra


Invisible sous Sierra

Le Thunderbolt et le choix du SSD

Premièrement, le choix du SSD. Dans les modèles compatibles, il y a les Toshiba XG3 et XG4, le WD Black, l’OCZ RD400 et le Kingston KC1000. Il y en a peut-être d’autres, mais ceux là fonctionnent. Quelques modèles Intel haut de gamme permettent aussi le changement, mais pas les variantes grand public. Sur les autres SSD (Samsung notamment), le changement est impossible.

Deuxièmement, le Thunderbolt. Il existe quelques SSD PCI-Express en Thunderbolt directement (comme chez Plugable) mais le plus simple reste de passer par un boîtier Thunderbolt. Le Thunderbolt 1 limitera vers ~850 Mo/s en pratique, le Thunderbolt 2 à ~1 700 Mo/s et la version 3 à ~3 400 Mo/s. Bien évidemment, il s’agit du maximum en fonction du SSD. Pour brancher un SSD M.2 en Thunderbolt, un simple adaptateur passif suffit (qu’il soit indiqué compatible NVMe ou pas n’interfère pas). Evitez les modèles à bas prix, la qualité de fabrication reste faible. Le mien a par exemple été livré avec une équerre qui ne peut pas être fixée…

Le SSD dans une carte PCI-Express, dans un boîtier Thunderbolt 2

Pour tester, je me suis procuré un Toshiba XG4, issu d’un PC portable Dell. C’est un SSD NVMe de 256 Go qui utilise par défaut des secteurs de 512 octets. Sous High Sierra, il fonctionne directement et offre des débits corrects dans un boîtier Thunderbolt 2 Akitio. Sous Sierra, il n’est évidemment pas reconnu par défaut. J’ai utilisé ce tutorial.

Un passage sous Linux

Première étape, télécharger Ubuntu Desktop. Insérez une clé USB de quelques Go et tapez les lignes suivantes dans le Terminal.

diskutil list

Une fois la clé USB sélectionnée (vous devez trouver son numéro), démontez les volumes montés en remplaçant les x par les valeurs de la clé USB. Ne vous trompez pas, ce serait bête d’effacer un disque dur externe.

sudo diskutil unmount /dev/diskxsx

Ensuite, copiez l’ISO sur la clé.

sudo dd bs= 32130b if=ubuntu-17.10-desktop-amd64.iso of=/dev/diskx

Maintenant, vous pouvez démarrer le Mac sur la clé USB (avec alt au démarrage). Une option permet de démarrer en mode live, c’est-à-dire sans installer Ubuntu.

Lancez Ubuntu Software, cliquez sur Ubuntus Software en haut de l’écran et choisissez Software & Updates. Dans la fenêtre, cochez Commmunity-maintained free and open-source software (universe). A la fermeture, l’OS va mettre à jour les caches, ce qui peut prendre quelques minutes.

Les options

Maintenant, lancez le Terminal et tapez les lignes suivantes, avec évidemment le SSD branché.

sudo apt-get install smartmontools
sudo apt-get install nvme-cli
sudo smartctl -a /dev/nvme0

Les informations

Dans la liste, une section donne la taille de bloc courante et les options possibles. Avec un SSD Toshiba, ça donne ça. S’il ne propose pas l’option 4096, ça ne marchera évidemment pas.

Supported LBA Sizes (NSID 0x1)
Id Fmt Data Metadt Rel_Perf
0 + 512 0 2
1 - 4096 0 1

La ligne suivante passe le SSD en secteur de 4 ko et efface totalement le SSD (vous êtes prévenus).

sudo nvme format -l 1 /dev/nvme0

Ca efface tout

Une fois que c’est fait, il suffit de redémarrer sous macOS et le SSD NVMe devrait fonctionner sous Sierra.

Il devient visible


Des débits corrects en Thunderbolt 1 (le modèle 256 Go reste assez lent en écriture)

J’ai testé avec un MacBook Air 2012 sous Sierra sans problèmes. Niveau débit, en Thunderbolt 1, on est vers 850 Mo/s en lecture et ~400 Mo/s en écriture. En Thunderbolt 2 sur un autre Mac, on monte à ~1 200 Mo/s en lecture et toujours ~400 Mo/s en écriture. Le débit en écriture dépend essentiellement de la capacité (256 Go, c’est un peu léger pour mettre plusieurs puces en parallèle). En lecture, le Thunderbolt 1 limite dans le premier cas, le SSD atteint son maximum dans le second.

En Thunderbolt 2