Le but est de prendre une carte microSD normale, et de la modifier pour qu'elle soit reconnue par un téléphone comme goldcard, le sésame qui permet aux ingénieurs SAV d'appliquer n'importe qu'elle mise à jour, et ce même si elle fait descendre le système de version (il me semble).

D'autres méthodes recommandent de le faire en formatant la carte (et donc en perdant les données qu'il a dessus).
Ici on va essayer de ne pas avoir à le faire, mais comme toujours quand on manipule un support de stockage :

  • faites une copie de sauvegarde de toutes vos données présentes sur la carte avant de commencer.

Bien, c'est fait ?

Récupérer l'identifiant unique de votre carte SD

Alors, insérez la carte dans le lecteur de carte de votre ordinateur[1] , et exécutez :

  • cat /sys/class/mmc_host/mmc0/mmc0\:xxxx/cid

La partie /sys/class/mmc_host/ devrait être pareil pour tout le monde, mais mmc0:\xxxx peut également être mmc1:\xxxx ou mmc2:\xxxx (le xxxx est différent pour chaque carte). Pour le savoir, utilisez l'autocomplètement, en tapant sur tab ou bien faites un ls -alh /sys/class/mmc_host/ et regardez ce que vous trouvez.

Le but est d'obtenir le cid (common identifier), de votre carte microSD, un identifiant qui lui est unique.

Si vous n'avez pas de lecteur de carte sur votre ordi, vous devrez faire la même chose à partir de votre téléphone Android.
Comme émulateur de terminal, je vous recommande ConnectBot.

  • Une fois que vous avez le cid, copiez-le, puis…

Récupérer de quoi transformer votre carte SD en goldcard

Collez le cid, et vous obtiendrez une autre chaîne de caractères, le cid à l'envers en hex (il me semble… j'en suis pas sûr, mais osef ça marche quand même). Si le site n'est pas accessible, les bonnes gens du wiki de CyanogenMod nous disent que le le script python suivant donne le même résultat :

#!/usr/bin/python
s = raw_input('cid: ')
n = len(s)
if n != 32 : raise Exception('bad cid')
print "00"+sn-4:n-2+''.join(s[n-2:n+sn-4:n-2 for n in range(n-4,0,-4) ])

Renseignez tous les champs bien gentiment, entrez une adresse mail (ils ont l'air sérieux et ne semblent pas envoyer pas de spam, mais sait-on jamais mettez une adresse jetable à la mailinator ou meltmail), pensez à faire un don si vous en avez les moyens, et attendez votre goldcard.img dans votre boîte mail.

Une fois obtenue, c'est là qu'on va effectivement transformer sa carte microSD normale en goldcard.

Transformer votre carte SD en goldcard

Si vous êtes sous une version de Debian/Ubuntu, normalement, lorsque vous avez inséré votre carte microSD elle doit être apparue en /dev/mmcblk0 avec comme partition /dev/mmcblk0p1 (et p2 si vous avez une deuxième partition sur votre carte). Ça veut dire multimedia card block partition 1. Logique en fait.

Si vous avez inséré votre carte sur un port USB avec un adapteur, il se peut qu'elle soit apparu en /dev/sd*. Dans ces cas là, pensez à ne pas déconner avec /dev/sda qui selon tout vraisemblance est votre disque dur interne. Inutile de transformer celui-ci en goldcard, je vous assure tout de suite que votre tél n'a pas d'interface pour le brancher.

Si vous êtes dans le doute, lancez l'utilitaire de disque sous Ubuntu (joliment nommé Palimpsest), il se trouve dans Système > Administration. Il vous montrera les disques connectés au système, et sous quel device votre carte est apparue.

Une fois que vous savez où est le fichier représentant votre carte SD sur votre système, la commande pour transformer votre microSD en goldcard est :

  • dd bs=512 if=/là/où/vous/avez/rangé/votre/goldcard.img of=/dev/mmcblk0

(ou dd bs=512 if=/là/où/vous/avez/rangé/votre/goldcard.img of=/dev/sdb si votre SD apparaît en /dev/sdb à cause de son adaptateur)

Ceci aura pour effet d'écrire au tout début de votre carte microSD (les 384 premiers octets en fait) par un identifiant qui fait que votre carte est reconnue comme goldcard et non comme une microSD de base.

Oui, c'est à ce moment que se passe le vaudou en somme.

Important, et c'est là où d'autres guides se plantent : il faut exécuter dd sur la carte en elle-même (/dev/mmcblk0) et non sur une de ces partitions (/dev/mmcblk0p1) sinon vous tuerez le système de fichier sur cette partition, et donc toutes les données que cette partition contient (sauf à encore se lancer dans des opérations de magie noire de récupération de données, mais vous avouerez que pour un simple p1 en trop, c'est un peu con).

Banco.

Voilà, votre carte microSD terriblement banale est transformée en goldcard, et à vous les joies du downgrade.

Enfin, ces commandes sont a priori disponibles sur Android directement, donc au besoin, vous devriez pouvoir tout faire sans ordinateur (mais dans ces cas-là faites assez gaffe où vous utiliser dd, c'est un instrument assez dangereux).

Petit guide inspiré de celui de Nazri Wang et d'autres. Merci à Sooaa pour son hex reverser de cid !

Notes

[1] Il est possible que ça marche via un adaptateur USB, mais de mon côté quand je connecte ma carte microSD via un adaptateur USB /sys/class/mmc_host/ n'est pas peuplé, l'adaptateur masquant la nature réelle de la carte.