CERMASTR : répare l'autodestruction Python des 83PCE/84+CE
Posted: 20 Dec 2022, 12:16
Bien que son déclenchement soit rare, les TI-83 Premium CE Edition Python, TI-84 Plus CE-T Python et TI-84 Plus CE Python souffrent d'un très grave bug, autodétruisant leurs fonctionnalités Python.
Une fois le bug déclenché l'application Python refusera de se lancer, avec un message d'erreur :
Le problème est également confirmable à l'écran d'autodiagnostic accessible via
Voilà, ta TI-83 Premium CE Edition Python, TI-84 Plus CE-T Python ou TI-84 Plus CE Python vient de se désévoluer en un ancien modèle TI-83 Premium CE ou TI-84 Plus CE, perdant à la fois en fonctionnalités (qui plus est une fonctionnalité majeure) ainsi qu'en valeur sur le marché de l'occasion.
Le changement est hélas officiellement définitif. Aucun reset ou menu de réinitialisation officiel ne permet de revenir en arrière.
Nous pouvons confirmer à coup sûr au moins 4 déclenchements de ce bug dans la communauté, son existence est certaine :
Le bug semble donc a priori être lié aux écritures d'informations en mémoire Flash qui ont lieu lors de l'installation d'une application ou d'un nouveau système d'exploitation, des manipulations parfaitement normales, écritures qui visiblement se passent mal dans certains cas.
Une fois le bug déclenché l'application Python refusera de se lancer, avec un message d'erreur :
- t'invitant à connecter l'adaptateur externe TI-Python et à l'utiliser l'application PyAdaptr si il s'agit d'une TI-83 Premium CE Edition Python
- te disant que la fonctionnalité Python n'est pas disponible si il s'agit d'une TI-84 Plus CE-T Python ou TI-84 Plus CE Python
Le problème est également confirmable à l'écran d'autodiagnostic accessible via
mode
alpha
ln, les informations spécifiques à la fonctionnalité Python n'étant plus affichées.
Voilà, ta TI-83 Premium CE Edition Python, TI-84 Plus CE-T Python ou TI-84 Plus CE Python vient de se désévoluer en un ancien modèle TI-83 Premium CE ou TI-84 Plus CE, perdant à la fois en fonctionnalités (qui plus est une fonctionnalité majeure) ainsi qu'en valeur sur le marché de l'occasion.
Le changement est hélas officiellement définitif. Aucun reset ou menu de réinitialisation officiel ne permet de revenir en arrière.
Nous pouvons confirmer à coup sûr au moins 4 déclenchements de ce bug dans la communauté, son existence est certaine :
- moi-même sur TI-83 Premium CE Edition Python, problème constaté juste après le transfert d'une application
- MozzieThePython sur TI-83 Premium CE Edition Python, problème constaté juste après la mise à jour du système en version 5.7 (source)
- Lucas5641 sur TI-83 Premium CE Edition Python, problème constaté juste après la mise à jour du système en version 5.6 (source)
- texasins sur TI-84 Plus CE-T Python Edition, problème constaté juste après la mise à jour du système (source)
Le bug semble donc a priori être lié aux écritures d'informations en mémoire Flash qui ont lieu lors de l'installation d'une application ou d'un nouveau système d'exploitation, des manipulations parfaitement normales, écritures qui visiblement se passent mal dans certains cas.
Tentons déjà de comprendre non pas ce qui déclenche le problème, mais ce qui suite à son déclenchement empêche l'application Python de se lancer.
On peut justement noter une autre différence entre les calculatrices normales et les calculatrices dont la fonctionnalité Python a été autodétruite, que nous appellerons par la suite pour simplifier calculatrices malades.
À l'écran à propos accessible via
Or cette information est issue du certificat, une page spéciale en mémoire Flash avec des informations sur la machine. Nous avons justement l'outil CERMASTR permettant d'afficher les informations du certificat et même de les modifier, regardons cela.
Les informations ansi que leur nombre peuvent varier d'une machine à une autre. Sur les machines normales, nous avons :
Regardons maintenant le certificat d'une machine malade, comme tout récemment la TI-84 Plus CE-T Python Edition de texasins.
Et bien voilà nous y sommes, le champ principal 0x033 est absent ainsi que l'intégralité de son contenu, ce qui implique entre autres :
Que s'est-il passé ? Nous supposons :
On peut justement noter une autre différence entre les calculatrices normales et les calculatrices dont la fonctionnalité Python a été autodétruite, que nous appellerons par la suite pour simplifier calculatrices malades.
À l'écran à propos accessible via
2nde
+
1:
- les calculatrices normales affichent une ligne ID avec le numéro de série électronique interne à la machine
- les calculatrices malades ne l'affichent pas
Or cette information est issue du certificat, une page spéciale en mémoire Flash avec des informations sur la machine. Nous avons justement l'outil CERMASTR permettant d'afficher les informations du certificat et même de les modifier, regardons cela.
Les informations ansi que leur nombre peuvent varier d'une machine à une autre. Sur les machines normales, nous avons :
- un champ principal 0x033, contenant lui-même :
- un champ 0x040 avec justement l'ID affiché à l'écran à propos
- un champ 0x042 avec le nom du modèle (TI-83 Premium CE ou TI-84 Plus CE)
(ce champ était pris en compte pour les différents affichages de la calculatrice, ce qui te permettait avec CERMASTR de personnaliser le nom de ta machine et ainsi la marquer électroniquement contre le vol, mais malheureusement depuis la mise à jour 5.7 cette valeur est désormais ignorée) - sur les seules machines Python un champ 0x043, de valeur "P" (0x50)
Regardons maintenant le certificat d'une machine malade, comme tout récemment la TI-84 Plus CE-T Python Edition de texasins.
Et bien voilà nous y sommes, le champ principal 0x033 est absent ainsi que l'intégralité de son contenu, ce qui implique entre autres :
- pas de champ 0x040 avec l'ID de la machine
- pas de champ 0x043 activant les fonctionnalités Python
Que s'est-il passé ? Nous supposons :
- que dans certaines situations (mises à jour système ou installation d'applications comme nous avons vu) il peut se produire une corruption du contenu du certificat
- que le certificat est alors effacé
- que suite à cela certains champs sont recréés comme on peut le constater, mais visiblement pas le champ principal 0x033, ce qui est en soit un 2ème bug
Deux problèmes toutefois avec CERMASTR :
Déjà d'une part les possibilités d'édition de CERMASTR étaient limitées, permettant certes de changer les valeurs et tailles de champs déjà existants, mais pas de recréer un champ absent où on le voulait.
D'autre part, l'écriture directe dans les zones sensibles de la mémoire Flash nécessite un contexte privilégié (unlock), comme le fait l'outil Cesium, Texas Instruments répondant systématiquement à chaque mise à jour système en bloquant la chose
Et il se trouve que contrairement à Cesium, CERMASTR n'avait pas été mis à jour avec le nouvel unlock compatible avec les dernières mises à jour système 5.7 et 5.8.
Rajoutons qu'un outil logiciel de réparation devient de plus en plus essentiel, car nous avons passé la rentrée 2022 alors que la TI-83 Premium CE Edition Python est sortie pour la rentrée 2019, ce qui veut dire que la garantie de 3 ans vient de commencer à expirer pour certaines machines, et qu'à partir de maintenant il n'est pas certain que Texas Instruments acceptera dans ce cas de les échanger ou réparer si le bug détruisant les fonctionnalités Python s'y déclenche.
Déjà d'une part les possibilités d'édition de CERMASTR étaient limitées, permettant certes de changer les valeurs et tailles de champs déjà existants, mais pas de recréer un champ absent où on le voulait.
D'autre part, l'écriture directe dans les zones sensibles de la mémoire Flash nécessite un contexte privilégié (unlock), comme le fait l'outil Cesium, Texas Instruments répondant systématiquement à chaque mise à jour système en bloquant la chose
Et il se trouve que contrairement à Cesium, CERMASTR n'avait pas été mis à jour avec le nouvel unlock compatible avec les dernières mises à jour système 5.7 et 5.8.
Rajoutons qu'un outil logiciel de réparation devient de plus en plus essentiel, car nous avons passé la rentrée 2022 alors que la TI-83 Premium CE Edition Python est sortie pour la rentrée 2019, ce qui veut dire que la garantie de 3 ans vient de commencer à expirer pour certaines machines, et qu'à partir de maintenant il n'est pas certain que Texas Instruments acceptera dans ce cas de les échanger ou réparer si le bug détruisant les fonctionnalités Python s'y déclenche.
Et bien retroussons nos manches. Toute la communauté vient de se mobiliser autour de l'outil CERMASTR, notamment :
- MateoConLechuga pour y intégrer le nouvel unlock rajoutant la compatibilité avec les systèmes 5.7 et 5.8
- Adriweb pour y nettoyer le code
- et moi-même pour étendre les possibilités de création de champs
Nous avons pu constater lors de nos tests qu'il ne suffisait pas juste de récréer le champ Python 0x043 n'importe-où, sans quoi il était parfois ignoré. Ne comprenant pas exactement sous quelles conditions le système accepte ou refuse de prendre en compte ce champ, nous te proposons de reproduire au plus proche la configuration d'usine.
Pour réparer une TI-83 Premium CE Edition Python, TI-84 Plus CE-T Python Edition ou TI-84 Plus CE Python dont l'application Python est inutilisable, voici comment faire.
Déjà, recréons le champ Python 0x043 :
Mais cela ne suffit pas, en l'état ce champ sera ignoré selon nos tests. Il nous faut maintenant recréer le champ principal 0x033 et le mettre dedans :
Et voilà, juste à écrire le certificat modifié et la machine est réparée, l'application Python remarche, plus besoin de négocier un échange de calculatrices avec le service après vente de Texas Instruments, à devoir s'embêter à expédier sa calculatrice et ensuite à attendre la livraison, surtout lorsque cela se produit juste avant une évaluation ou un examen important !
Pour réparer une TI-83 Premium CE Edition Python, TI-84 Plus CE-T Python Edition ou TI-84 Plus CE Python dont l'application Python est inutilisable, voici comment faire.
Déjà, recréons le champ Python 0x043 :
- insérer un champ vide en début de certificat
- sélectionner sa taille et l'augmenter à 1
- sélectionner son identifiant et le mettre à 043
- y programmer la valeur par défaut à P (0x50)
Mais cela ne suffit pas, en l'état ce champ sera ignoré selon nos tests. Il nous faut maintenant recréer le champ principal 0x033 et le mettre dedans :
- insérer un nouveau champ vide en début de certificat
- sélectionner son identifiant et le mettre à 033
- sélectionner sa taille et l'augmenter une fois pour qu'il intègre le champ Python 0x043 suivant
Et voilà, juste à écrire le certificat modifié et la machine est réparée, l'application Python remarche, plus besoin de négocier un échange de calculatrices avec le service après vente de Texas Instruments, à devoir s'embêter à expédier sa calculatrice et ensuite à attendre la livraison, surtout lorsque cela se produit juste avant une évaluation ou un examen important !
Nous conseillons toutefois aux personnes concernées par la panne de ne pas reproduire ces manipulations seules.
Lancez CERMASTR une fois juste pour prendre une photo ou capture d'écran de l'état de votre certificat à nous partager, et nous reviendrons vers vous avec une série de manipulations personnalisées après les avoir testées sur émulateur en partant d'un certificat exactement dans le même état que le vôtre.
Lancez CERMASTR une fois juste pour prendre une photo ou capture d'écran de l'état de votre certificat à nous partager, et nous reviendrons vers vous avec une série de manipulations personnalisées après les avoir testées sur émulateur en partant d'un certificat exactement dans le même état que le vôtre.
Espérons que Texas Instruments ne va pas se dépêcher une nouvelle fois de bloquer le dernier unlock en date lors d'une prochaine mise à jour logicielle ou matérielle.
Cela rendrait donc notamment Cesium et CERMASTR inutilisables, et à nouveau les machines malades irréparables, ce qui serait bien gênant maintenant que certaines machines commencent à sortir de la période de garantie.
Cela rendrait donc notamment Cesium et CERMASTR inutilisables, et à nouveau les machines malades irréparables, ce qui serait bien gênant maintenant que certaines machines commencent à sortir de la période de garantie.
Téléchargement : CERMASTR