Karotz vous souhaîte une bonne année
- Détails
2026 : Le Karotz est toujours là !
Quatorze ans après l'arrêt des serveurs officiels, notre lapin connecté préféré refuse de rendre les oreilles.
Pendant que d'autres objets connectés finissent à la déchetterie dès que leur fabricant ferme boutique, le Karotz continue de vivre sa meilleure vie grâce à une communauté de passionnés qui n'a jamais baissé les bras.
Pour fêter cette nouvelle année, mon Karotz Sylar a tenu à vous adresser ses vœux... à sa manière.
Réveil difficile, souvenirs flous du réveillon et bonnes résolutions qu'il ne tiendra probablement pas : tout y est, même le taichi !
Preuve que même en 2026, avec un peu de bidouille et beaucoup d'amour, ces petits lapins ont encore des choses à dire !
Bonne année à tous les Karotz et à leurs propriétaires ! 🐰
Je vous invite à visionner la vidéo sur Youtube :
.
Les services réseau
- Détails
Après avoir exploré le cœur du système et les outils disponibles, il est temps de s'intéresser à ce qui fait du Karotz un objet véritablement connecté : Ses services réseau.
Comment accéder au lapin à distance ?
Quels ports sont ouverts ?
Quels serveurs tournent en arrière-plan ?
Et surtout, qu'est-ce que tout cela implique en termes de sécurité sur votre réseau local ?
Découverte des ports ouverts
Une fois connecté en telnet, la commande netstat révèle les ports en écoute :
netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:6600 0.0.0.0:* LISTEN 1309/mpd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1242/inetd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1242/inetd
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 1242/inetd
netstat: /proc/net/tcp6: No such file or directory
Quatre ports ouverts :
| Port | Service | Géré par | Description |
|---|---|---|---|
| 21 | FTP | inetd | Transfert de fichiers |
| 23 | Telnet | inetd | Shell à distance |
| 80 | HTTP | inetd | Interface web |
| 6600 | MPD | mpd | Lecteur musical (clef USB) |
Les outils réseau disponibles
La commande busybox --list révèle les outils réseau intégrés :
busybox --list | grep -E "^(ping|wget|nc|telnet|ftp|nslookup|traceroute|ifconfig|netstat|arp|route)$"
arp
ifconfig
nc
netstat
nslookup
ping
route
telnet
traceroute
wget
En plus de BusyBox, le Karotz dispose également de binaires compilés séparément dans /usr/bin/ :
Testons quelques outils :
ping -c 2 google.com
PING google.com (64.233.167.102): 56 data bytes
64 bytes from 64.233.167.102: seq=0 ttl=108 time=21.848 ms
64 bytes from 64.233.167.102: seq=1 ttl=108 time=21.400 ms
--- google.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 21.400/21.624/21.848 ms
curl -k https://www.miniil.be 2>&1 | head -10
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (35) error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
OpenSSL 1.0.0b (2010) ne supporte que TLS 1.0. Les serveurs modernes qui exigent TLS 1.2+ sont inaccessibles même si on contourne la verification du certificat avec l'option -k. HTTPS fonctionne uniquement avec les serveurs qui acceptent encore TLS 1.0, et sans vérification de certificat.
Toutes les communications réseau du Karotz passent donc essentiellement en clair. Sur un réseau local domestique, ce n'est pas réellement un problème mais si votre Karotz est exposé à Internet le risque est bien réel.
inetd : le chef d'orchestre
Sur le Karotz, les services réseau ne tournent pas en permanence. C'est inetd (internet daemon) qui écoute sur les ports et lance le service approprié uniquement quand une connexion arrive.
Cette approche économise la mémoire précieuse sur un système embarqué avec seulement 60 Mo de RAM.
inetd est lancé au démarrage via /etc/inittab :
cat /etc/inittab | grep inetd
::respawn:/sbin/inetd -f /usr/etc/inetd.conf
Le fichier /usr/etc/inetd.conf définit les services :
cat /usr/etc/inetd.conf
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
21 stream tcp nowait root /bin/busybox ftpd -w /
23 stream tcp nowait root /bin/busybox telnetd -i
80 stream tcp nowait root /bin/busybox httpd -i -c /karotz/etc/httpd.conf -h /usr/www
Analysons une ligne :
| Champ | Valeur | Signification |
|---|---|---|
| Port | 21 | Port d'écoute |
| Type | stream | Connexion TCP (vs dgram pour UDP) |
| Proto | tcp | Protocole |
| Flags | nowait | Peut gérer plusieurs connexions simultanées |
| User | root | Utilisateur qui exécute le service |
| Commande | /bin/busybox ftpd -w / | Programme à lancer |
Les trois services sont fournis par BusyBox :
- ftpd (
-w /) — serveur FTP avec accès en écriture sur/ - telnetd (
-i) — serveur Telnet lancé par inetd - httpd (
-i -c ... -h ...) — serveur HTTP, racine dans/usr/www
Dropbear : le SSH dormant
Le Karotz embarque Dropbear, un serveur SSH léger pour systèmes embarqués.
which dropbear
/bin/dropbear
Cependant, il n'est pas activé par défaut. Le répertoire de configuration est vide :
ls -la /etc/dropbear/
total 4
drwxr-xr-x 1 root root 2048 Jan 1 1970 .
drwxr-xr-x 1 root root 2048 May 9 2011 ..
Techniquement, il serait possible de l'activer : générer les clefs avec dropbearkey, les stocker sur une partition persistante (/usr/), et lancer Dropbear au démarrage avec l'option -r pour spécifier leur emplacement.
Mais est-ce vraiment nécessaire ? Telnet fait le travail sur un réseau local, et ajouter un service SSH consommerait des ressources sur un système déjà limité avec 60 Mo de RAM.
MPD : le lecteur musical
Le port 6600 est occupé par MPD (Music Player Daemon). C'est un serveur de lecture audio qui permet de jouer des fichiers MP3 depuis une clef USB branchée sur le Karotz.
MPD n'est pas actif par défaut. Une fois configuré, il peut être contrôlé :
- Localement via netcat
- À distance via des clients MPD (M.A.L.P. sur Android, ncmpcpp sur PC, ...)
- Via l'interface web de miniil's OpenKarotz
Conclusion
Le Karotz dispose donc de plusieurs services réseau : Telnet, FTP et HTTP via inetd et MPD pour la musique.
Dropbear (SSH) est présent mais non configuré.
Toutes ces communications passent en clair, il n'y a pas de HTTPS côté serveur, pas de SSH actif, et le client HTTPS est limité à TLS 1.0.
Sur un réseau local domestique, ce n'est pas un problème. Mais quand le lapin est exposé sur Internet, le risque est présent.
Et si on améliorait la sécurité en ajoutant HTTPS au serveur web du Karotz ?
Je tenterai cela prochainement et ceci fera l'objet d'un prochain article.
Exploration de l'environnement Python du Karotz
- Détails
Quel est l'environnement Python disponible ?
python -c "import sys; print sys.version"
2.4.5 (#1, Mar 29 2012, 10:34:03)
[GCC 4.3.5]
Karotz dispose donc sur d'un environnement Python 2.4.5 compilé le 29 mars 2012 avec GCC 4.3.5 (GNU Compiler Collection ou le compilateur utilisé à l'époque pour transformer le code source Python en binaire exécutable pour le processeur ARM920T du Karotz). D'après mes recherches l'environnement Python était disponible d'origine sur Karotz, il ne s'agit pas d'un ajout de OpenKarotz. Mais certaines bibliothèques ont peut être été ajoutées.

Quels sont les modules disponibles ?
ls /usr/lib/python2.4/
Cet environnement Python dispose d'une belle bibliothèque standard :
Réseau & Web :
urllib.py,urllib2.py,urlparse.py- Requêtes HTTPhttplib.py- Client HTTP bas niveauftplib.py- Client FTPsocket.py- Sockets réseauBaseHTTPServer.py,SimpleHTTPServer.py,CGIHTTPServer.py- Serveurs HTTPxmlrpclib.py,SimpleXMLRPCServer.py- XML-RPCcookielib.py- Gestion cookies
Données :
simplejson- JSONcsv.py- Fichiers CSVxml- Parsing XMLConfigParser.py- Fichiers de configpickle.py- Sérialisation objets
Système :
os.py- Interaction systèmesubprocess.py- Exécution commandes externesshutil.py- Opérations fichiersthreading.py- Multi-threadingtempfile.py- Fichiers temporairesgzip.py,tarfile.py,zipfile.py- Compression
Utilitaires :
re.py- Expressions régulièresrandom.py- Nombres aléatoiresbase64.py- Encodage base64email- Gestion emails
Un détail intéressant est que simplejson (2.0.7) a probablement été intégré par Mindscape dans le firmware car il ne fait pas partie des modules natifs de Python 2.4 (arrivé seulement avec Python 2.6). Mindscape l'a probablement intégré car le lapin devait communiquer en JSON avec leurs serveurs.
Il existe également des modules compilés.
ls /usr/lib/python2.4/lib-dynload/
Voici quelques modules intérressants à citer :
| Module | Intérêt pour le Karotz |
_socket.so |
Essentiel pour les communications réseau. |
zlib.so |
Compression. |
pyexpat.so |
Parsing XML rapide. |
select.so |
Pour gérer plusieurs connexions simultanées. |
md5.so, sha.so |
Vérification de l'intégrité. |
datetime.so |
Gestion du temps. |
cPickle.so |
Sauvegarde rapide d'états/configurations. |
On peut déjà remarquer l'absence de modules qui auraient pu être utiles : Aucun module pour des connexions sécurisées (ssl), pour des bases de données, pour des appels directs aux librairies C.
Espace disque
Combien de place prend cet environnement Python sur le lapin ?
du -sh /usr/lib/python2.4/
8.5M /usr/lib/python2.4/
# Espace disque disponible-bash-4.1# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 7.7M 7.7M 0 100% /
none 29.4M 0 29.4M 0% /dev
/dev/mtdblock6 234.0M 84.3M 149.7M 36% /usr
tmpfs 29.4M 0 29.4M 0% /dev/shm
On dispose de plusieurs dizaines de Mo sur /usr. C'est déjà à cet endroit que Python est installé. Un upgrade serait donc techniquement possible.
Un upgrade serait-il intéressant ?
J'utilise depuis peu Python pour beaucoup de développements dans mes projets personnels. C'est un language que j'aime bien utiliser et qui permet beaucoup de choses.
Dans l'environnement actuel du Karotz, il y a quand même certaines choses qui manquent :
- Pas de
withstatement - Un syntaxe ancienne pour la gestion des exceptions notamment
- Pas de compréhension des dictionnaires
- Pas de
format()moderne (Exemple :f"Hello {name}").
Passer à Python 2.7 (la dernière version stable de Python 2) apporterait déjà le with, le json natif, la compréhension des dictionnaires, le format(). La compatibilité des scripts existants serait probablement assurée mais à vérifier.
Passer à Python 3 pourrait évidemment être intéressant mais c'est beaucoup plus risqué au niveau de la compatibilité des scripts existants, la cross-compilation serait certainement complexe et au niveau de l'espace disque il est probable que ce soit aussi plus lourd.
Mon choix se porterait donc logiquement sur Python 2.7 qui donnerait un petit coup de jeune à mon Karotz.
Il faudrait donc :
- Cross-compiler Python 2.7 pour l'architecture ARM920T.
- Vérifier les bibliothèques dont Python a besoin et les cross-compiler aussi.
- Optionnel : Compiler OpenSSL pour avoir HTTPS
- Vérifier la taille nécessaire.
- Transférer les binaires sur
/usret configurer les liens symboliques - Tester si tout fonctionne
Est-ce que vous avez déjà étudié la question ?
Que pensez-vous d'un upgrade de Python pour le Karotz, est-ce que cela vous semble utile ?
Le message de la fin des aventures de Karotz
- Détails
Fin 2014, Aldebaran annonçait officiellement la fin des aventures de Karotz.
Après près de 10 ans d'existence depuis le lancement du premier Nabaztag en 2005, le petit lapin connecté pionnier allait s'endormir définitivement.
Voici le message publié par Bruno Maisonnier, PDG d'Aldebaran :

Lancé sur le marché en 2005 sous le nom de Nabaztag, Karotz a été un pionnier dans la catégorie des objets connectés et communicants.
La communauté, très active, a d'ailleurs largement contribué à rendre le lapin si "populaire".
Aujourd'hui, prés de 10 ans après son lancement, Karotz est confronté à une concurrence technologique forte : les objets connectés sont maintenant en 4G, mobiles, évolutifs et intelligents. Karotz et ses utilisateurs ont marqué l'histoire des objets connectés, ils en ont ouvert la voie. Nous sommes arrivés à la fin de cette belle histoire pour Karotz qui cède sa place à des produits plus adaptés à notre époque.
Pour continuer de vous proposer des compagnons innovants et attachants, Aldebaran se recentre sur son cœur de métier : les robots humanoïdes.
C'est pourquoi les serveurs de Karotz ainsi que la maintenance SAV seront arrêtés au 18 février 2015.
Bruno Maisonnier
PDG d'Aldebaran
Pour répondre à toutes vos questions, une FAQ est ci-dessous et notre équipe se tient à votre disposition.
Nous ne produisons plus de Karotz et l'ensemble des stocks sont épuisés depuis presque 2 ans. L'activité des lapins diminuant fortement, moins de 10% sont en activités, nous avons décidé de ne plus maintenir les serveurs.
Votre lapin sera toujours auprès de vous, mais sans activité.
Nous y réfléchissons et étudions surtout les actions à mettre en oeuvre pour que cela fonctionne. Sans investissement de notre part l'Open Source ne serait pas viable.
L'ensemble du personnel a intégré Aldebaran.
Non, la fermeture de l'entreprise n'est pas liée au cout du SAV. Karotz a marqué l'ère des premiers objets connectés et communiquants. Aujourd'hui Aldebaran se recentre sur son coeur de métier : la robotique humanoïde. Nous faisons le choix de nous concentrer sur un produit plus en phase avec son temps. Pour relancer Karotz dans la course, les investissements R&D; et Software seraient trop conséquents.
Le SAV continue d'acceuillir vos lapins jusqu'à la fermeture, le 18 fevrier 2015.
La production a été stoppée et le stock est épuisé sur l'ensemble des références.
La production étant stoppée, nos revendeurs ne sont plus approvisionnés.
Pourquoi j'ai créé miniil Karotz OS et miniil's OpenKarotz
- Détails
Introduction
Quand j'ai voulu ressusciter mon Karotz, j'ai d'abord suivi les tutoriels existants : OpenKarotz, FreeRabbits OS...
Et j'ai galéré. Beaucoup. Entre les erreurs d'installation, les vérifications de version qui bloquaient tout et les dépendances à des services externes, j'ai fini par me poser une question simple : et si je reprenais les choses en main ?
C'est ainsi que sont nés miniil Karotz OS et miniil's OpenKarotz.
Les problèmes rencontrés
Une installation capricieuse
Les solutions existantes vérifiaient la version de l'OS déjà installé. Si la version correspondait, pas de réinstallation. En théorie, c'est logique. En pratique, quand quelque chose plantait en cours de route, impossible de repartir proprement. L'installation se bloquait, le lapin restait dans un état instable ou sans connexion WiFi.
J'ai perdu des heures à chercher des contournements avant de me dire : pourquoi ne pas simplement tout réinstaller à chaque fois ? Une installation complète, propre, sans condition.
Des dépendances externes
FreeRabbits OS propose des fonctionnalités intéressantes comme le TimeButton. Mais celles-ci, comme je l'ai évoqué dans un article précédent peuvent poser certains problèmes de sécurité. Ayant un peu discuté avec le créateur de FreeRabbits, ils sont bien conscients qu'ils pourraient envoyer n'importe quelle commande sur votre lapin avec ce service TimeButton mais ils n'ont en aucun cas l'intention de nuire. Leurs services sont basés sur la confiance.
Leur travail a permis à beaucoup de Karotz de revivre et de continuer à vivre, le mien y compris car je me suis basée sur leur travail.
Sachez donc que FreeRabbits propose énormément de services grâce à TimeButton et certains sont même très intéressants. Si vous voulez disposer de ces services, il faut utiliser FreeRabbits et TimeButton.
Une interface limitée
OpenKarotz offrait une interface web fonctionnelle mais il manquait des choses essentielles pour vraiment maîtriser son lapin : pas d'éditeur de crontab intégré, pas de gestion simple des web radios, pas de possibilité de donner un nom à mon lapin.
Ma solution : reprendre le contrôle
miniil Karotz OS
J'ai créé ma propre version d'installation du firmware basée sur les travaux de la communauté, avec une philosophie simple :
- Installation complète à chaque fois : On repart de zéro, pas de vérification de version qui bloque
- Fiabilité : Les erreurs d'installation sont vérifiées et inscrites dans un fichier de log
- Personnalisation : une petite touche personnelle comme le message d'accueil en telnet (MOTD)
miniil's OpenKarotz
Pour l'interface web, j'ai déjà ajouté les fonctionnalités qui me manquaient :
- Éditeur de crontab : programmer des actions directement depuis l'interface
- Gestion des web radios : ajouter, modifier, supprimer ses radios facilement
- Le taichi d'oreilles : Ca ne sert à rien mais c'est mignon
- La possibilité d'utiliser un serveur tts personnel : Nous en reparlerons
Plus qu'un projet technique : un apprentissage
Ce projet n'était pas seulement une question de faire fonctionner un lapin. C'était l'occasion de plonger dans :
- Le fonctionnement d'un système Linux embarqué
- Les scripts bash et leur enchaînement au démarrage
- La compréhension du firmware (cramfs, yaffs, NAND flash)
- La création d'interfaces web pour systèmes contraints
Chaque problème rencontré était une opportunité d'apprendre.
Pour la communauté
Je partage cette documentation pour que d'autres n'aient pas à galérer comme moi. Si vous avez un Karotz qui dort dans un placard, j'espère que ces ressources vous aideront à lui redonner vie.
Et surtout, que vous puissiez le faire de manière autonome, sans dépendre de services qui pourraient disparaître demain.
Conclusion
miniil Karotz OS et miniil's OpenKarotz sont nés de la frustration, de la curiosité et de l'envie de partager. Ce n'est pas parfait, mais c'est fonctionnel, documenté (en partie pour l'instant) et surtout : indépendant.
Si vous voulez tenter d'installer cet OS et OpenKarotz, suivez le guide. Si vous rencontrez des problèmes avec l'installation, n'hésitez pas à me contacter ou à laisser un commentaire sous cet article.
Votre lapin mérite de vivre longtemps. 🐰
Page 1 sur 4
