Une microSDHC de 2 Go qui est en fait une SD de 2 Go (et sa compatibilité aléatoire)

Dans mes recherches sur les cartes mémoire, je suis tombé sur un truc un peu bizarre : une carte microSDHC de 2 Go. Techniquement, ça ne doit pas exister, et de fait : c’est bien une carte SD classique en réalité. Mais elle me permet de revenir sur un truc : la compatibilité parfois aléatoire des cartes SD de 2 Go.

Dans les cartes SD, il y a quelques limites de capacité. Si on généralise un peu, c’est très simple : les cartes jusqu’à 2 Go (inclus) sont des cartes SD classiques et les cartes de 4 Go et plus (inclus) sont des cartes SDHC. Mais la généralisation a quelques limites. La première, j’en ai déjà parlé, c’est qu’il est possible techniquement de proposer des cartes de 4 Go en SD. C’est assez rare pour deux raisons : une compatibilité aléatoire et le fait que les appareils uniquement compatibles avec le mode SD original ne prennent généralement en charge que le système de fichiers FAT16 qui est limité à 2 Go. Dans la majorité des cas, dans les faits, la prise en charge de FAT32 et liée à celle des cartes SDHC.

Une carte microSDHC de 2 Go ? Pas vraiment.

Le problème des cartes SD de 2 Go est lié

La capacité d’une carte SD est basée sur un calcul qui repose sur trois valeurs. D’abord, la taille d’un bloc en octets, qui est par défaut de 512 octets. Ensuite, un multiplicateur qui a une valeur maximale 512. On a 3 bits avec un décalage de 2, donc une valeur comprise entre 2 et 9 (sur 3 bits, on a une valeur comprise entre 0 et 7, donc entre 2 et 9 si on ajoute 2) et le multiplicateur est égal à 2 exposant ce nombre, soit 512 au maximum (2^9). Enfin, le nombre de blocs, lui, est sur 12 bits+1 (4 097 au maximum, donc). Si vous faites le calcul en prenant comme base des blocs de 512 octets, on a donc 512 x 512 x 4 097 au maximum, soit environ 1 Go.

Pour dépasser 1 Go, la solution a été de définir des blocs de 1 024 octets (2 Go) et 2 048 octets (4 Go) dans la norme SD 1.01. Mais de nombreux vieux lecteurs (pas tous) ne prennent pas en compte cette possibilité et limitent donc à 1 Go.

C’est le cas du Play-Yan de Nintendo, par exemple : il n’accepte pas les cartes de 2 Go. Ce qui m’amène à ma carte microSDHC de 2 Go. Pour tester, j’ai déniché un lecteur de cartes incompatible avec les SDHC. C’était le moyen le plus simple de vérifier s’il s’agit d’une carte SD ou d’une carte SDHC. Et c’est donc bien une carte SD classique d’une capacité de 2 Go.

Un vieux lecteur, uniquement compatible SD

Le comportement est particulier, et différent du Play-Yan qui n’accepte absolument pas les cartes. Avec le lecteur Lexar, les cartes de 2 Go et ma carte SD de 4 Go sont vues comme des cartes de 1 Go et il est possible de lire et écrire des données, dans une certaine mesure. Tant qu’on reste sous 1 Go, ça fonctionne : j’ai pu copier des données sur la carte. J’ai tenté de copier un fichier de 1,5 Go, mais sans succès : macOS m’a indiqué que la capacité n’était pas la bonne. Ensuite, j’ai tenté un truc bête : copier le fichier de 1,5 Go avec un lecteur qui accepte la carte correctement, puis mettre la carte dans le lecteur Lexar. macOS n’a pas du tout aimé : le Mac mini a redémarré. Les cartes SDHC, elles, ne sont absolument pas lues.

macOS voit 1 Go au lieu de 2 Go

J’ai aussi tenté de connecter le lecteur à une machine virtuelle Windows, mais le système de Microsoft est moins permissif que macOS, en fait. Windows 10 et Windows 7 ne lisent pas la carte et sous Windows XP, j’ai eu un écran bleu en essayant de lire la carte, c’est assez expéditif.

Windows plante (ou ne fonctionne pas)

Dans tous les cas, ma microSDHC de 2 Go n’est visiblement qu’une microSD avec un marquage bizarre. Et j’aurais appris que mettre une carte SD de 2 Go dans un lecteur qui n’accepte pas les cartes SD de 2 Go peut amener des soucis.