Historique de Tux Droid

Last update : 24 mars 2022

Note: En date du 1er septembre 2020 j’ai enlevé tous les liens qui ne sont plus disponibles sur Internet. J’ai assemblé tous mes fichiers relatifs à Tuxdroid dans l’archive tuxdroid-archive.zip disponible ici sur mon site web.

Présentation de Tux Droid

Tux Droid est un compagnon intelligent, c.à.d. un objet communiquant programmable sous Linux. Son aspect extérieur représente Tux, la mascotte de Linux. Tux Droid peut se tourner sur lui-même, battre les ailes, bouger le bec, fermer les paupières, clignoter les yeux (LED’s), enregistrer (microphone) et restituer (haut parleur) des sons, recevoir et émettre des commandes IR (infrarouge), capter l’intensité de luminosité et capter la pression de boutons sur la tête et dans les ailes.  Il dispose d’une batterie rechargeable et d’un dongle USB, assurant une liaison sans-fil (non WiFi) avec un ordinateur. Le dongle a la forme d’un poisson et il est appelé Fux. Tux Droid est souvent comparé au Nabaztag. Il a été créé par la société belge Kysoh SA en 2006.

Tux Droid et Fux

Tux Droid et Fux

La version beta de Tux Droid a été présentée la première fois par Kysoh à la conférence OSCON 2006 (Open Source Convention) à Portland, Oregon, en juillet 2006. Le premier guide d’usager est archivé ici. La commercialisation de Tux Droid en Europe a débuté en mars 2007. Les sources de l’architecture, du matériel et du logiciel ont été ouvertes dès le début et mises en ligne sur le site web communautaire www.tuxisalive.com. Des outils de développement ont été fournis pour permettre à des développeurs de créer leurs propres applications.

La société Kysoh (Keep your sense of humor) avait été fondée pendant l’été 2005, en collaboration avec l‘Ecole Polytechnique de Mons, avec pour objectif de développer et de commercialiser des produits électroniques connectés à un PC et dédiés au divertissement. Les fondateurs de Kysoh étaient Thierry Nancy et Sébastien Domingues. L’équipe marketing était constituée de Frank Aernout, Mélanie Chamaah et Awa M’Baye. Les ingénieurs, programmeurs et infographistes étaient, par ordre alphabétique, Jean-Luc Bernard, David Bourgeois, Jérôme Conan, Julien Depasse, Pascal Hanon, Rémi Jocaille, Raphael Lamy, Paul Rathgeb (alias ks156), Olivier Vandorpe et Sebastiaan Vanpoucke.

Tux Droid en magasin

Tux Droid en magasin

Au début, la vente de Tux Droid se faisait exclusivement par Internet via le magasin en ligne de Kysoh. Dans la suite, Tux Droid était également vendus sur d’autres sites de commerce électronique comme Amazon, Thinkgeek etc, dans des magasins électroniques et même dans des grandes surfaces comme la FNAC en France et le Kaufhof en Allemagne.

La société Kysoh était très active au niveau marketing. Le 14 février 2008, Tux Droid était présenté au Brussels Girl Geek Dinner. Le 9 décembre 2008 Tux Droid a rejoint Facebook. L’année suivante et au début 2010, Tux Droid faisait la une de nombreux magazines informatiques et il était présent dans de nombreux salons et émissions TV.

Malgré ces efforts, le 28 juillet 2010,  la société Kysoh SA, située à Mons (Henegouwen), a été déclarée en liquidation judiciaire par le tribunal de Bergen en Belgique et les sites web kysoh.com et tuxisalive.com ont été fermés. Le curateur s’est retrouvé avec un stock de 3.700 Tux Droid’s à écouler.

Matériel de Tux Droid

L’électronique de Tux Droid contient une carte mère en charge des fonctions audio, capteurs, moteur et chargement batterie ainsi qu’une carte secondaire en charge de la communication sans fil avec le dongle USB. Le matériel est construit autour de trois modules : core, audio et radio. Ces modules sont interconnectés par un bus bi-directionnel SPI entre les modules radio et audio et par un bus bi-directionnel I2C entre les modules audio et core.

Modules de Tux Droid

Modules de Tux Droid

Les modules core et audio sur la carte mère sont gérés chacun par un processeur ATmega88 de Atmel. Le module radio contient un microcontrôleur RF ATR2406 de Atmel et un processeur ATmega48 de Atmel. Le dongle USB dispose d’un microcontrôleur RF AT89C5130 de Atmel. Côté radio, les puces RF exploitent la bande de fréquences 2.4Ghz, ce qui dans certains cas peut provoquer des interférences avec le WiFi et perturber la connexion du PC avec un routeur, le cas échéant. La firmware des trois processeurs et des deux microcontrôleurs peut être modifiée.

Une télécommande est jointe au Tux Droid et permet de le commander, respectivement d’agir sur les applications du PC par son intermédiaire.

La version V1 de Tux Droid a été vendue jusqu’en mi 2008, ensuite c’était la version 2 qui avait une meilleure qualité du plastique et un nouveau firmware.

Firmware de Tux Droid

La firmware du Tuxdroid peut être mise à jour pour les deux versions, mais elle n’est pas sans risques. La première étape consiste à mettre à jour le dongle USB (poisson Fux). Ensuite on connecte le câble de programmation blanc entre le dongle et Tux Droid. Le connecteur est situé à l’arrière de Tux Droid, il faut enlever le couvercle de batterie pour y accéder. Pour démarrer Tux Droid en mode bootloader, il faut appuyer le bouton de tête pendant la mise sur “on” de l’interrupteur. Uniquement l’œil gauche sera allumé pour confirmer l’état souhaité. La mise à jour du firmware des cinq processeurs de Tux Droid se fait ensuite avec des outils particuliers (TuxUp). La version la plus récente du firmware est 0.9.4, elle date du 3 décembre 2013.

Logiciels originaux de Tux Droid

L’ensemble des logiciels de Tux Droid a été appelé TDSS (Tux Droid Software Suite); il est considéré aujourd’hui comme une usine à gaz.

En mars 2007, une première version de l’architecture logicielle (V1), dédiée à Linux, a été développée et évaluée par les utilisateurs finaux. Elle a été programmée en python et GTK (api et software) et en C (daemon).

En avril 2008, le développement de la seconde version (V2) de l’ensemble des logiciels a commencé. Il s’agissait d’une réécriture en profondeur se reposant sur l’expérience accumulée par l’équipe des ingénieurs et programmeurs. Cette version était construite autour d’un serveur donnant accès aux fonctionnalités du compagnon par des requêtes HTTP. Cette suite logicielle, bâtie autour d’un Centre de Contrôle, fonctionnait sur Linux et Windows. Elle était programmée essentiellement en Java, avec quelques parties en Python (webradio et serveur HTTP) et C (Tuxdriver).

Au début de l’année 2009, un refactoring complet de la suite logicielle v2 a été entamé. Le 1er septembre 2009, la troisième version (V3) a été mise en ligne, incluant une toute nouvelle interface graphique appelée TuxBox 2.0, ainsi qu’un système de gadgets plus puissant. Cette version était basée sur un serveur web. Les langages utilisés étaient Python, Java, C et C++.

Suite à la liquidation judiciaire de Kysoh fin juillet 2010, les développements des logiciels originaux ont été arrêtés.

Le répertoire Ohloh de la société Black Duck Software révèle qu’entre mars 2006 et juillet 2010, 27 programmeurs ont contribué au développement des suites logiciel pour Tux Droid. Le code total généré dans le dépôt http://svn.tuxisalive.com/ comprend 1.432.377 lignes plus 493.816 lignes de commentaires. 6.107 révisions (commits) ont été enregistrées dans le dépôt. Les langages de programmation utilisés sont le Python (38%), le Java (23%), le C (21%)  et d’autres (18%). Sur base du Constructive Cost Model (COCOMO), l’effort de programmation total du projet est évalué à 404 personnes * années, ce qui équivaut à un coût estimé de 22 millions $.

Communauté Tux Droid

Tux Droid a toujours eu une communauté très active se reposant solidement sur Kysoh. Après la fermeture des sites web kysoh.com et tuxisalive.com, la communauté s’est organisée pour sauver les meubles. Des miroirs ont été créés pour sauvegarder les précieux paquets open source et la documentation y associée de Tux Droid. Avec la complicité d’anciens programmeurs de Kysoh, les sources et paquets des logiciels originaux ont été migrés fin août 2010 vers SourceForge.

Site web tuxdroid-community.org

www.tuxdroid-community.org

Au début c’était Anti-Bug-Computers qui était très engagée dans la récupération des données de Kysoh. Ensuite floOr a créé en octobre 2010 le forum tuxdroid-community.org; shadow89 a lancé le 16 décembre 2010 le site web tuxdroid-community.net. Le 19 mars 2011 les deux sites ont fusionné et un  nouveau projet SVN a été ouvert sur Sourceforge.

Le site web www. tuxdroid-community.org est devenu dans la suite le site unique de la communauté Tux Droid. Le site a été refait sous Drupal en septembre 2011 et comporte aujourd’hui un forum, un wiki en français et anglais avec une partie de l’ancien wiki de Kysoh, une archive avec les sources et sites web récupérés de Kysoh et une rubrique pour présenter le nouveau projet TuxDroidServer. Le site est administré par Edouard Postel (alias floOr); le forum est modéré par Joël Matteotti (alias Joe). En juin 2013 des soirées IRC (chat) ont été organisées pour répondre à des questions sur Tux Droid, mais elles n’ont pas rencontré le succès escompté.

Synthèse vocale (TTS)

L’ensemble TDSS incluait des librairies de Acapela pour la synthèse vocale et Kysoh payait les licences pour la distribution de ces librairies avec Tux Droid. L’utilisation des fichiers sons produits par la synthèse vocale d’Acapela est autorisée à des fins privés, mais la distribution des bibliothèques ou des sons n’est pas libre et réglée par des conditions spécifiques. Ce problème légal n’a pas facilité la reprise des logiciels de Kysoh par la communauté Tux Droid. Comme les clés d’exploitation des bibliothèques Acapela étaient partiellement intégrées au code, la situation était encore plus problématique. Les sources avec les interfaces (libtuxosl) Acapela ont été enlevées.

Une des priorités de la Communauté Tux Droid en 2010 était donc le remplacement de la synthèse vocale Acapela par une autre solution.

TuxBox 2.0

A la fin de l’été 2009, Kysoh avait sorti la nouvelle interface de pilotage plus pratique pour le Tux Droid, la Tuxbox 2.0, basée sur une interface web, qui remplacait l’ancien centre de contrôle. Cette interface fonctionne encore ajourd’hui. Les binaires de la TuxBox 2.0 (version 3.1.4)  pour Linux et Windows, les sources ainsi que le guide d’usager afférent sont disponibles sur le site de la communauté Tux Droid.

L’nstallateur Windows distribué est crédité à Akasanvas95, avec l’aide de Anti-Bug-Computers, Steph138 et Anthrax132.

Sur Windows, TuxBox 2.0 s’installe dans le répertoire C:/Program Files/Kysoh/. Après le démarrage, l’icône d’une patte rouge (pied d’un manchot) est affichée dans la barre des tâches en bas à droite. Cette patte passe en jaune si Fux est connecté et si la communication sans fil avec Tux Droid est établie. Si on clique sur l’icône, la fenêtre de la TuxBox est affichée. L’état de la TuxBox est indiqué avec des petits symboles dans la patte jaune, par exemple son coupé (voir figure suivante à droite) ou Tux Droid actif.

TuxBox 2.0

Icônes d’état de la TuxBox 2.0 dans la barre inférieure du desktop Windows

La fenêtre principale (Vivre avec Tux) de la TuxBox, qui est une page web locale (http://127.0.0.1:270), accédée via le port 270,  présente quatre autres volets :

  • Gadgets : ce sont des mini-applications (plugins comprimés avec extension .scp) hébergées sur l’ordinateur qui fournissent des informations personalisées telles que e-mails, prévisions météorologiques, nouvelles, etc.
  • Attitunes : ce sont des animations robotiques combinant des mouvements, des sons et de la synthèse vocale. Elles apportent une touche sympathique aux fonctions des gadgets.
  • Outils : ce sont des programmes pour configurer Tux Droid (par exemple créer des attitudes)
  • Magasin en ligne : c’est le dépôt de téléchargement central des gadgets
TuxBox 2.0 pour Tux Droid

TuxBox 2.0 pour Tux Droid

La barre des icônes affiche les gadgets installés.Tux Droid prononce le nom de chaque gadget sélectionné. On peut faire défiler les gadgets avec la souris, la télécommande ou en appuyant sur les ailes de Tux Droid. La majorité des gadgets nécessite d’être configuré, ce qui peut se faire dans la rubrique “Gadgets” du menu supérieur. Les attitunes installées sont gérées dans la rubrique “Attitunes”. La rubrique “Outils” donne accès à Attitune Studio pour créer et modifier des attitudes, au Controller pour commander en direct les mouvements de Tux Droid ainsi qu’à des pages de configuration et d’aide.

Tux Droid Attitude Studio and Tux Droid Controller

Tux Droid Attitune Studio and Tux Droid Controller

La rubrique “Magasin en ligne” permettait dans le passé de  télécharger des nouveaux gadgets. Cette fonction n’est plus opérationnelle. Le wiki “How To List” de la communauté Tux Droid contient des informations comment programmer un nouveau gadget (plugin) : Hello World, Python, Java, Google Gadget, … et comment l’installer ensuite dans la TuxBox 2.0. Les anciens gadgets sont encore disponibles dans les archives sur le site de la communauté.

Le fonctionnement et l’affichage de la TuxBox 2.0 sous Linux sont similaires à ceux de Windows. Sur Linux, ce sont les distributions originales de Kysoh qui sont disponibles. Le port 54321 est utilisé par défaut pour l’accès au serveur HTTP.

Un problème de la TuxBox 2.0 est le fait qu’il n’y a plus d’adaptations et on constate de plus en plus souvent des incompatibilités avec les évolutions de Windows et Linux. Sous Windows, on arrive dans certains cas à faire fonctionner TuxBox 2.0 sur une version récente en mode “administrateur” ou en mode “compatibilité XP / Vista”. Sur Linux, il faut être un utilisateur chevronné pour trouver des solutions en cas de problème.

La communauté a donc cherché des solutions pour assurer la pérennité de Tux Droid.

TuxDroidServer et TuxDroidClient

Joël (Joe) Matteotti a démarré en juin 2012 le développement d’un nouveau projet baptisé TuxDroidServer. Il s’agit d’un serveur TCP multiclients/multithreads, programmé en ANSI-C99 et intégrant son ancien projet TuxDroidInterface. Il utilise par défaut le port 9595 pour la communication. Ce projet a été très bien accueillie par la communauté Tux Droid.

Une année plus tard, presque jour sur jour, Joe a créé son propre blog sous le domaine tux-droid.eu pour mieux présenter l’évolution de son projet, tout en continuant à modérer le forum communautaire Tux Droid.

Le grand avantage de TuxDroidServer est sa portabilité, car il se compile aussi bien sous Windows que sous GNU/linux, sans modification du code, et il est aussi portable au sens où il ne nécessite aucune installation. La synthèse vocale est basée sur le projet open source espeak. La version la plus récente (révision 153) du code a été déposée début décembre 201.

Les grandes étapes du développement de TuxDroidServer sont :

  • 7.6.2012 : première version basée sur l’ancien projet TuxDroidInterface rev34
  • 10.6.2012 (rev 9 à 12) : entre autres, ajout des commandes Tux_Micro() pour la gestion du micro et Tux_Audio() pour la lecture de musique
  • 12.6.2012 (rev 17) : ajout de la commande Tux_PlayAtt() permettant la lecture d’attitunes
  • 13.6.2012 (rev 21) : entre autres, ajout d’un fichier de configuration
  • 19.6.2012 (rev 24) : ajout d’un système d’authentification
  • 21.6.2012 (rev34) : ajout d’un petit shell pour démarrer et arrêter le serveur
  • 23.6.2012 (rev 39) : entre autres, ajout des commandes Tux_Sleep() et Tux_Wakeup()
  • 23.7.2012 (rev 49) : ajout d’un logger
  • 28.7.2012 (rev 55) : entre autres, ajout des commandes Tux_Remote() et Tux_User()
  • 28.8.2012 (rev 61) : entre autres, ajout de la commande Tux_Timestamp()
  • 17.9.2012 (rev 67) : ajout des commandes Tux_getMicro() et Tux-getSoundCard()
  • 15.1.2013 (rev 71) : création d’une nouvelle branche du projet qui utilise PortAudio
  • 7.2.2013 (rev 79) : ajout d’un système d’identification et de gestion des priorités
  • 30.5.2013 (rev 96) : ajout du framework unittests
  • 8.8.2013 (rev 122) : entre autres, ajout d’un système de traduction pour rendre TuxDroidServer multilingue
  • 20.9.2013 (rev 141) : entre autres, ajout de la reconnaissance vocale basée sur Google Speech API
  • 27.11.2013 (rev 151) : introduction de l’obligation d’entrer l’identifiant
TuxDroidClient alpha version

TuxDroidClient alpha version

Pour faire fonctionner TuxDroidServer, on a besoin du driver Tux Droid. La version la plus récente est 0.0.6 rev30.

Joe a également réalisé en QT/C++ une application graphique (GUI), nommée TuxDroidClient, permettant de contrôler un Tux Droid géré par TuxDroidServer.

Des binaires pour la version 7 de TuxDroidClient et de la version 150 de TuxDroidServer sont disponibles pour Windows 32bits. Un tarball Linux de la version 150 est également disponible pour processeurs Intel 32 bits.

Applications Android pour Tux Droid

Une première application Android pour commander Tux Droid a été développée en octobre 2009 par r3gis. Joe a également développé une application Android en juin 2012. Il vient de la mettre à jour à la version 1.3.0.

Situation en 2022

Sur le forum ubuntu.fr une communauté intéressée au TuxDroid est toujours active. Il y a également un nouveau site web tuxdroid.tounepi.com mis à jour.

Liens

Quelques liens avec des informations additionnelles au sujet de Tux Droid sont relevés dans la liste qui suit :