Page 1 of 7

Firmware Khi pour NumWorks N0110, le successeur d'Omega

Unread postPosted: 06 Oct 2021, 10:50
by Admin
Omega était un firmware alternatif pour ta calculatrice NumWorks. Basé sur le code source du firmware officiel Epsilon comme la licence l'autorisait, Omega avait pour but de regrouper et mettre en avant les meilleures contributions au code d'Epsilon, en incluant justement celles ignorées ou refusées par le constructeur.

Difficile de tout citer ici mais voici déjà par exemple un des fantastiques ajouts d'Omega. La NumWorks travaille en interne sur des arbres de calcul, mais n'accepte que des valeurs numériques. Omega étendait ces arbres en autorisant également des lettres / inconnues, ce qui nous donnait ainsi un moteur de calcul littéral. De quoi même dériver, du jamais vu à seulement 80€ ! :bj:
Il y avait aussi un tableau périodique des éléments, ou encore 100K de mémoire heap pour tes projets Python au lieu de 32K ! :bj:

12024Outre ce qu'il intégrait, Omega offrait également l'avantage de pouvoir installer à chaud des applications. Plusieurs applications de très haute facture furent développées, on peut citer entre autres : :D
  • KhiCAS, une formidable application intégrée de Mathématiques et de Sciences par Bernard Parisse, enseignant-chercheur à l'Université de Grenoble, qui étendait gratuitement les capacités de ta calculatrice au niveau d'une HP Prime. L'application intégrait le moteur de calcul formel GIAC développé pour le logiciel Xcas du même auteur pour des possibilités en calcul encore plus étendues. Étaient également inclus un tableur, une bibliothèque de constantes physiques, un convertisseur d'unités, un tableau périodique des éléments et bien d'autres choses encore. Le tout était en prime programmable en Python, avec une collection de modules importables bien plus étoffée que celle de l'application Python officielle, et surtout ici de façon intégrée, tes scripts Python pouvant en effet faire appel au moteur de calcul formel GIAC par l'intermédiaire du module cas.
  • Nofrendo, un émulateur de console de jeux Nintendo NES par zardam
  • Peanut-GB, un émulateur de console de jeux Nintendo GameBoy par M4x1m3
  • Periodic, un tableau périodique des éléments par M4x1m3
Un gros avantage de plus était ici que KhiCAS et l'ensemble des fonctionnalités rajoutées restaient accessibles en mode examen, de façon parfaitement légale et légitime en France, puisque ces fonctionnalités venaient directement intégrées à des modèles concurrents haut de gamme parfaitement autorisés. :bj:

Hélas pour cette rentrée 2021, NumWorks a brutalement pris un virage ultra-sécuritaire. Toute mise à jour en version 16.3.0 ou supérieure verrouille définitivement ta calculatrice NumWorks N0110 contre l'installation de tout code tiers, et ce sans même que tu en sois prévenu(e) sur la page concernée. :mj:

En conséquence, nous t'annoncions il y a quelques semaines le cœur serré l'abandon officiel du projet Omega. :'(

14609Heureusement, tout n'est pas perdu. Bernard Parisse se propose de faire survivre le projet Omega à travers un nouveau firmware, Khi.

Construit à partir du code source de la dernière version d'Omega, Khi reprend l'intégralité des avantages de ce dernier, à la seule différence que le firmware Khi va pour sa part continuer à être maintenu et évoluer ! :favorite:

Précisons toutefois que contrairement à Omega, Khi ne supporte plus les anciens modèles NumWorks N0100 d'avant la rentrée 2019.

Si tu n'as donc pas encore commis l'erreur de verrouiller définitivement ta calculatrice NumWorks N0110, rendez-vous sur la page dédiée du firmware pour ici encore une installation en 1 clic ! :D

Ici, l'installation initiale du firmware Khi t'ajoute automatiquement les applications suivantes :
  • KhiCAS dont on a parlé plus haut
  • HexEdit, un éditeur hexadécimal
  • Nofrendo, émulateur de Nintendo NES + une ROM homebrew du jeu 2048
  • Peanut-GB, émulateur de Nintendo Game Boy (sans ROM)

Une fois Khi installé, tu pourras opter pour l'installation personnalisée sur la même page, afin de pouvoir ajouter/supprimer des applications ou des fichiers ROM pour les émulateurs. :)

La même page te permet également de transférer directement tes fichiers .py de scripts Python dans un sens ou dans l'autre, ici donc sans les inconvénients liés au stockage en ligne actuellement imposé par la page officielle (absence d'une organisation par dossiers, renommage qui casse les adresses partagées, etc.) ! :bj:

Installation : https://www-fourier.univ-grenoble-alpes ... e/nws.html

Re: Firmware Khi pour NumWorks N0110, le successeur d'Omega

Unread postPosted: 06 Oct 2021, 12:10
by parisse
Merci!
Une remarque importante concernant la securisation, pretexte utilise par Numworks pour verrouiller les calculatrices. On peut en effet certifier que le firmware Khi et les applications (KhiCAS ...) n'ont pas ete modifiees et sont donc conformes a la legislation en vigueur en France, il suffit de cliquer sur le bouton Certification. En effet en mode examen, les ressources (fichiers non executables de l'archive) ne sont plus accessibles, et seuls les executables KhiCAS, Hexedit, Nofrendo et Peanut-GB sont utilisables (les 2 derniers sont toutefois inutilisables faute de ROM).
A noter: si vous avez personnalise la partie application, il faut conserver les 11 premiers fichiers de l'archive apps.tar pour que la certification reconnaisse votre firmware comme conforme.

Re: Firmware Khi pour NumWorks N0110, le successeur d'Omega

Unread postPosted: 06 Oct 2021, 20:21
by critor
Merci, très intéressant. Et si vous mettez à jour Khi, est-ce que la certification marchera toujours avec les calculatrices non mises à jour, ou bien est-ce qu'il faudra toujours avoir la dernière version ?

Re: Firmware Khi pour NumWorks N0110, le successeur d'Omega

Unread postPosted: 06 Oct 2021, 21:04
by parisse
On peut certifier plusieurs versions, donc il ne sera pas necessaire d'avoir la derniere mise a jour, le firmware interne, externe et les applications sont compares a plusieurs signatures. Par exemple le fichier de signature certifie par ma page est copie ci-dessous et certifie les fimrwares avant et apres l'integration des drivers pour la derniere revision materielle de la Numworks.

En fait la methode que j'ai choisie est tres souple, elle permet a differents acteurs de certifier les firmwares de leur choix, il suffit de mettre les signatures sha256 des fichiers certifies dans le fichier nws_sig.js sur le serveur de certification (j'ai un programme pour faire cela). Cela permet de s'adapter a des reglementations differentes selon les pays, chaque institution autorisant et certifiant uniquement les firmwares souhaites. La certification peut meme se faire par un surveillant utilisant son smartphone et un cable liaison smartphone-Numworks pendant le deroulement de l'examen sans deranger les calculs des eleves (ca prend moins de 30 secondes). Elle est plus sure que ce que propose Numworks, car un fraudeur peut facilement modifier une N0110 non verrouillee pour faire croire a une Numworks en version 16 (en tout cas il sera difficile a un surveillant de detecter un "faux" numero de version).

Code: Select all
var nws_sig=[
["delta.external.bin",1121768, [62,251,116,124,137,86,16,19,47,80,124,139,68,58,2,121,78,60,234,32,173,152,119,17,152,130,116,190,95,44,175,18,]],
["delta.internal.bin",9664, [17,181,104,112,163,76,132,192,131,34,3,120,55,69,26,151,249,111,224,149,86,34,20,137,70,221,140,3,217,235,152,52,]],
["apps.tar",5160176, [86,64,84,218,208,31,176,238,15,35,25,99,139,26,173,220,67,173,150,124,31,135,121,30,42,70,171,19,73,152,172,250,]],
["delta.external.bin",1121480, [78,68,180,50,131,105,19,237,22,41,178,255,168,107,94,8,249,237,151,11,14,178,141,28,192,244,199,44,33,83,114,32,]],
["delta.internal.bin",9500, [217,138,145,61,1,227,37,76,41,240,41,246,51,11,120,134,155,155,225,98,47,67,235,20,25,109,228,9,9,216,125,154,]],
["apps.tar",5190068, [20,17,88,75,207,229,99,124,55,102,74,217,244,15,200,186,248,61,221,104,116,204,66,54,50,226,229,37,23,3,233,58,]],
["apps.tar",5160176, [248,159,132,148,216,70,183,145,249,184,137,100,178,29,239,103,175,14,188,64,237,113,62,200,37,12,138,60,208,88,77,44,]],
];

Re: Firmware Khi pour NumWorks N0110, le successeur d'Omega

Unread postPosted: 12 Oct 2021, 08:23
by parisse
Je viens d'ajouter une fonctionnalite au kit de connexion Numworks. Apres avoir charge les scripts de la calculatrice (ou un backup de sauvegarde depuis le PC), on peut l'ouvrir dans le MicroPython de Xcas web pour l'editer et le tester (c'est le meme interpreteur que celui de la Numworks). On peut alors le partager en prive par email ou en public par un post sur un forum (par exemple tiplanet) ou le renvoyer vers la Numworks.
https://www-fourier.univ-grenoble-alpes.fr/~parisse/nws.html

Re: Firmware Khi pour NumWorks N0110, le successeur d'Omega

Unread postPosted: 14 Oct 2021, 14:14
by parisse
Une nouvelle version de Khi/KhiCAS est disponible (17.0.36).
Elle contient un mini gestionnaire de fichiers en flash utilisable directement sur la calculatrice, en version beta.
Depuis le menu Applications de KhiCAS (touche Home puis valider puis avant-avant-dernier item). Ce gestionnaire permet
  • de lister les fichiers installés en flash et d’afficher des informations (dont la date de création)
  • de copier un script depuis la RAM vers la flash (ce qui la préserve d’un effacement par un reset ou un crash de la calculatrice).
  • de modifier la visibilité d’un fichier ou de le renommer. Dans ce sous-menu, on valide les changements par OK ou EXE, on les annule avec la touche Back.
  • d’effacer réellement les fichiers pour faire de la place (Vider la corbeille).
Attention, les modifications ecrivent en flash, or on ne peut pas ecrire indefiniment sur de la flash. Pour augmenter la durée de vie de la mémoire flash, il est conseillé de ne vider la corbeille que lorsqu’il est vraiment nécessaire de faire de la place. En effet, si on ne vide pas la corbeille, les nouveaux fichiers ajoutés en flash vont progressivement être écrits dans de nouveaux secteurs, ce qui répartira mieux l’usure de la flash.

Installation:
https://www-fourier.univ-grenoble-alpes.fr/~parisse/nws.html (francais)
https://www-fourier.univ-grenoble-alpes.fr/~parisse/nws_en.html (anglais)
Attention a bien vider le cache de votre navigateur si vous avez deja consulte la page.

Re: Firmware Khi pour NumWorks N0110, le successeur d'Omega

Unread postPosted: 14 Oct 2021, 15:48
by Lionel Debroux
C'est super, un vrai FS utilisable sur machines NumWorks :)
Dommage qu'il faille que des tiers passent du temps à l'implémenter car le fabricant persiste à ne pas le faire, des années après le lancement de ses calculatrices...

Re: Firmware Khi pour NumWorks N0110, le successeur d'Omega

Unread postPosted: 14 Oct 2021, 16:15
by parisse
Ce n'est quand meme pas un vrai filesystem, en fait c'est un gestionnaire d'archive tar. Il n'y a pas de gestion d'arborescence, mais ca pourrait etre ajoute en mettant des chemins dans les noms de fichiers.

Re: Firmware Khi pour NumWorks N0110, le successeur d'Omega

Unread postPosted: 14 Oct 2021, 17:15
by redgl0w
Les chemins n'est peut être pas ce qui manque le plus pour un fs sur numworks, mais une solution différentes des tarballs, tel que jean-baptiste boric l'avait décrit ici, pour limiter au maximum le nombres de cycles d'effacement de la flash consommé (en plus, contrairement aux tarballs, sur les mêmes secteurs). Le problème serait surtout de remplacer totalement le storage d'epsilon par ce fs, ce qui serait assez (et c'est un euphémisme je pense) long.

Re: Firmware Khi pour NumWorks N0110, le successeur d'Omega

Unread postPosted: 14 Oct 2021, 17:36
by parisse
Merci pour le lien.
Techniquement, je suis parti du format de l'archive tar qui sert a stocker les applications externes parce que d'abord on conserve la compatibilite des archives (par contre les versions a jour de KhiCAS ne sont plus vraiment compatibles avec Omega, car j'ai rajoute des callbacks systeme pour effacer un secteur et pour ecrire un secteur), et ensuite je n'ai pas a apprendre quoi que ce soit pour manipuler des archives tar sur ordinateur, ce qui permet de mettre en place assez facilement un environnement au simulateur. Changer ce format ca serait beaucoup de travail. Si on veut eviter une usure trop rapide, il faudrait je pense diminuer la taille des secteurs, parce qu'on va surtout stocker des scripts en flash, qui feront avec le header tar dans les 2K. Mais changer la taille des secteurs ca necessite de bien s'y connaitre et probablement de faire un audit d'une partie du code source de ion.