(re)programmer le firmware d’une carte CompactFlash

C’est en regardant une vidéo de Dosdude que je suis tombé sur cette idée. Il modifie une carte CompactFlash pour la rendre compatible avec un MacBook Air et (surtout) se rend compte que la carte a une capacité plus élevée que celle annoncée : 256 Go au lieu de 128 Go.

Premier point, les CompactFlash. La norme est ancienne et se base en partie sur l’IDE (le PATA). Les cartes peuvent apparaître comme des disques durs ou comme des disques externes (amovibles). Ce point peut poser des soucis dans certains cas, mais on peut généralement modifier les cartes. Ce n’est pas nouveau (je le faisais déjà il y a plus de 15 ans) mais ça nécessite des outils qui ne sont pas nécessairement disponibles publiquement.

La carte de 16 Go achetée sur eBay

J’ai acheté la même carte que lui, mais dans une capacité plus faible (16 Go) et je me suis demandé ce qu’on pouvait faire. Il faut plusieurs choses pour s’amuser dans le cas présent. Premièrement, un PC sous Windows (ou un machine virtuelle) et un programme dont il fournit le lien. C’est un outil de chez Silicon Motion qui permet de configurer le firmware des cartes basées sur le contrôleur SM2236. Il est assez courant dans les cartes CompactFlash et on le trouve aussi dans des SSD PATA.

Deuxièmement, un périphérique avec la bonne puce (logique) et un adaptateur USB vers PATA couplé à un PATA vers CompactFlash. J’ai tenté aussi avec un simple lecteur de cartes CompactFlash en USB et ça marche, mais ce n’est visiblement pas systématique et ça dépend de comment le lecteur accède à la carte.

Une fois le programme lancé (sm2236MPTool.exe), il faut cliquer sur Scan Drive (ça devrait détecter la carte) puis aller dans l’onglet Parameter. Pour la flash, il faut cliquer sur Auto à côté de Flash Select et ça devrait détecter le type de puce. C’est un peu compliqué, parce que sur certaines cartes, la capacité réelle n’est pas la capacité annoncée. La carte de Dosdude est une 128 Go qui fait en réalité 256 Go… Dans mon cas, le programme annonce une puce de 32 Gbits, mais la carte contient des puces de 64 Gbits. C’est indiqué sur l’étiquette et j’ai ouvert la carte pour vérifier. Astuce : le code inscrit sur la puce peut être vérifié ici avec une puce Micron.

La carte au départ

La photo est floue, mais on voit le marquage

Une fois la mémoire choisie, on doit cliquer sur Edit Config, taper le mode de passe (320), faire des modifications éventuelles (j’ai mis Dandu 16Go dans le nom de la carte) et faire Save Config. Dans mon cas précis, j’ai aussi dû indiquer la capacité exacte (je l’avais notée avant), 15 263 Mio (et le « i » est important ici).

Les options


Ça marche ! (j’ai changé plus tard pour ajouter le o)

Là, il faut revenir sur l’onglet Test et cliquer sur Start. Si c’est bien réglé, on va éviter les erreurs. Dans mon cas, j’ai joué un peu et j’ai eu des erreurs liés à la mémoire (le code 03, Compare Flash Fail) parce que j’avais tenté d’autres puces de mémoire. Et aussi des erreurs liés à la capacité (36, Check PreTest Fail) avant de mettre la bonne capacité. En pratique, si on a les bons paramètres, ça va effectuer quelques tests (comme Pretest Flash) avant de mettre le bon firmware. L’outil permet de régler pas mal de petits trucs, comme les normes supportées en IDE, le numéro de série, etc. Ici, j’ai juste changé le nom.

Il ne faut pas se tromper de puces

Le résultat ? La carte est à mon nom, mais elle n’a visiblement pas une capacité plus élevée que prévu…


Cet adaptateur mélange les lettres


Lui, c’est bon

Sinon, pour terminer, j’ai testé mes cartes CompactFlash avec le logiciel, et j’ai une carte Kingston de 4 Go qui utilise le même contrôleur. Assez bizarrement, la version de 8 Go n’a visiblement pas la même puce, alors qu’elle a été achetée au même moment.