Lire les informations envoyées par un chargeur MagSafe

J’en avais parlé il y a un moment, les chargeurs MagSafe Apple communiquent avec les ordinateurs et il est possible de lire assez facilement les données. Pour un sujet récent, j’ai eu besoin de le faire, donc j’en ai profité pour effectuer le montage.
magsafe2-2

Comme expliqué là, les chargeurs Apple contiennent une puce dans la prise, qui envoie des données sur le chargeur, sa puissance, son numéro de série, etc. Lire les données avec un Arduino ne pose pas de soucis, et il est même possible (je n’ai pas tenté) de commander la LED.

Pas besoin d’énormément de matériel : un Arduino, une résistance de 4,7 K et quelques câbles suffisent. Il faut un câble qui va relier la masse du MagSafe à la masse de l’Arduino et une résistance de 4,7 K placée entre l’alimentation de 5 V de l’Arduino et le point central du MagSafe, qui va être relié au connecteur 10 de l’Arduino. Je ne suis pas très doué pour faire les schémas, donc si quelqu’un a un tutoriel pour ça, je veux bien. Même chose, la photo n’aide pas : j’utilise un Arduino un peu particulier et ma breadboard sert aussi pour un autre projet…

Lire un chargeur

Lire un chargeur

J’ai utilisé le code qui est sur le site de Ken Shirriff, et il faut aussi installer la bibliothèque OneWire (tout est expliqué là).

Enfin, il suffit de relier les câbles à un chargeur MagSafe débranché pour recevoir les données dans la console série de l’Arduino.

Ken Shirriff donne les valeurs pour décoder : 2 caractères de checksum, 3 caractères pour l’ID, 3 caractères pour un autre ID, 6 caractères pour le numéro de série et enfin 2 caractères pour le type. En fonction du type de chargeur, l’interprétation varie.

Les appareils qui utilisent la première génération de MagSafe envoient toujours 100 pour le premier ID. Les deux premiers caractères du second ID indiquent la puissance en hexadécimal, le troisième est à zéro. Enfin, les deux derniers caractères renvoient soit BA (le code de la puce), soit 85. En MagSafe 2, le premier ID renvoie la puissance, a priori sans corrélation : 7A1 pour le 45 W, 921 pour le 60 W et AA1 pour un 85 W. Le second ID renvoie sûrement la tension, mais je n’en suis pas certain (elle varie selon les modèles de chargeurs). Enfin, dans le cas précis du MagSafe Airline Adapter, la puissance renvoyée est FE (254).

Voici quelques valeurs lues sur mes chargeurs.

6C100FE0037636BA pour le chargeur avion (254 W, donc).
BB1002D00B0973BA pour un MagSafe 45 W.
207A12D815F6EE85 pour un MagSafe 2 45 W.
EF100550FA423EBA pour un MagSafe 85 W coudé.
6810055030E49E85 pour un MagSafe de Cinema Display 27 pouces.

J’ai un chargeur qui envoie des valeurs incohérentes, mais c’est un cas particulier (a priori un prototype).