Open source · ESP32-S3 · MIT

Un système d'exploitation pour téléphone. 100 % open source.

Phone OS est un système d'exploitation complet pour un téléphone, ouvert de la première ligne à la dernière : le firmware, la page des parents, le simulateur et chaque document, tous sous licence MIT. Il tourne sur un appareil portable tout fait, avec un ESP32-S3, un écran e-ink, un modem 4G et un GPS.

Ce que fait un appareil dépend de sa configuration. Le premier construit avec Phone OS est un téléphone d'urgence pour un enfant : il appelle la famille, lit et écrit des textos, envoie sa position d'une seule touche, et rien d'autre.

Le guide aussi en Deutsch Français

L'écran d'accueil de l'appareil
Chargement des images…

Chaque image a été dessinée par le simulateur à partir du code même du firmware. Appuyez sur les touches comme sur l'appareil, ou touchez l'écran : les tuiles, les lignes et les boutons répondent. La démonstration complète montre en plus ce à quoi les touches ne mènent pas : un appel qui arrive, les heures de classe, une batterie vide.

Comment le mettre sur un appareil

Phone OS n'est pas vendu avec un téléphone. Vous achetez l'appareil, téléchargez le code et l'installez vous-même par un câble USB. Quatre étapes, pas de soudure.

1. L'appareil

Un LilyGO T-Deck Pro MAX : un appareil portable fini, dans son boîtier, avec un ESP32-S3, un écran e-ink, un modem 4G, un GPS, un clavier et une batterie. Vendu tout fait par son fabricant et par des boutiques d'électronique ; une fois flashé, c'est un téléphone, pas un kit. C'est jusqu'ici le seul appareil sur lequel Phone OS tourne. Ajoutez une carte SIM et une carte microSD.

L'appareil chez LilyGO
2. Le code

Téléchargez le dépôt depuis GitHub et installez PlatformIO Core, un outil gratuit en ligne de commande. C'est toute la chaîne d'outils.

git clone https://github.com/paulwilke/Phone-OS.git
3. La carte mémoire

Formatez la carte microSD en FAT32, copiez les trois fichiers d'exemple de config/examples/ dans un dossier /config/ et inscrivez-y vos contacts et vos réglages : du texte simple, une ligne par entrée.

4. Installer

Branchez l'appareil en USB et lancez une commande. Environ une minute plus tard, l'appareil démarre avec votre carte.

pio run -e device -t upload

Phone OS n'a aucun lien avec LilyGO ni avec une boutique ; le T-Deck Pro MAX est l'appareil sur lequel le firmware a été construit et testé. Un autre matériel demande son propre code de plateforme sous les capacités, et rien ne change au-dessus.

La liste de contrôle du premier démarrage

Ce qui est testé, et ce qui est vérifié

Le projet n'affirme que ce qui a été vérifié. Chaque changement porte l'une de trois marques, et le journal des modifications dit laquelle.

Compilé

Il compile pour l'ESP32-S3. C'est tout ce que cela dit.

Testé sur l'ordinateur

La logique tourne sur un portable contre des imitations de chaque puce, et le simulateur joue des scénarios entiers à travers les vrais écrans.

Confirmé sur l'appareil

Vu sur le vrai téléphone par le propriétaire, avec une date dans le journal des décisions. Ce que l'appareil a appris est écrit, et une leçon qui a changé le code reçoit sa propre décision.

version actuelle
2 500+tests sur l'ordinateur
images dans cette démonstration, en trois langues
0vrais noms ou numéros sur cette page : chaque exemple est inventé

Une application, deux plateformes

Le firmware et le simulateur exécutent le même assemblage du même code. Seul ce qui se trouve sous les interfaces des capacités diffère : de vraies puces sur l'appareil, des imitations scriptées sur le portable. C'est pourquoi les images de cette page sont celles de l'appareil.

CoucheContientPeut connaître
src/hal/les capacités : des interfaces nommées d'après ce dont le logiciel a besoin (horloge, modem, alimentation, positionnement, fichiers)rien
src/app/ src/ui/l'application (carnet de contacts, heures de classe, SOS, messages) et les pagesles capacités seulement ; jamais le matériel ni un pilote
src/drivers/ src/board/le pilote du modem, l'analyseur du récepteur, les puces de l'appareilles capacités
device/le code de plateforme du firmware : le côté Arduino et ESP32 des jointuressrc/
sim/ testing/le simulateur et les imitations de chaque capacitésrc/

Un script vérifie les règles à chaque commit ; une couche qui passe par-dessus sa voisine fait échouer la construction.

Ce que fait le téléphone de l'enfant, et ce qu'il refuse

Configuré en téléphone d'enfant, l'appareil fait peu de choses, chacune jusqu'au bout : il n'appelle que le carnet d'adresses, laisse tomber sans un bruit tout ce qui vient d'inconnus et reste silencieux pendant l'école. Les parents le règlent depuis leur propre téléphone, dans un navigateur.

Un appel de Parent One arrive

Téléphone

L'enfant appelle les personnes que les parents ont inscrites, et personne d'autre ne peut appeler ni écrire. L'appel ou le texto d'un inconnu laisse une ligne dans le journal : pas de sonnerie, pas de vibration, pas d'avis.

Choisir un message tout prêt

Textos

Six messages tout prêts, affichés dans la langue de l'enfant et envoyés dans celle des parents. Le texte libre et les nouveaux numéros seulement si les parents les activent.

La page SOS et son compte à rebours

SOS

Un bouton. Un compte à rebours de 40 secondes, puis un texto avec la position part vers les parents ; un appel pendant le compte à rebours ne l'annule pas.

L'écran d'accueil pendant les heures de classe

Heures de classe

Pendant les plages que les parents fixent, le téléphone reste fermé et chaque appel est refusé sans sonner. Les parents voient un appel manqué et peuvent rappeler.

La page Wi-Fi avec le point d'accès activé

La page des parents

Les contacts, les heures de classe, les réglages et le journal, depuis un téléphone, dans un navigateur : par le point d'accès propre de l'appareil ou par le câble USB. La page est servie par l'appareil lui-même.

Batterie presque vide

La batterie

L'appareil s'éteint lui-même à 3300 mV et le dit. Une mesure toutes les dix minutes va dans un journal d'énergie ; c'est ainsi que les erreurs de la jauge ont été trouvées.

Pour aller plus loin

Chaque document est écrit à partir du code qu'il décrit, et chaque décision est consignée avec qui l'a prise et pourquoi. À part le guide de l'utilisateur, les documents sont en anglais.