Compiler son propre firmware¶
À la place de l'étape 2 (la page d'installation), vous pouvez compiler le firmware vous-même, avec vos propres changements. Les autres étapes du guide restent les mêmes : les fichiers Home Assistant, puis les étapes 4 à 7.
Note
Par le réseau, la tablette n'accepte qu'un firmware signé par la même clé que celui qu'elle fait tourner. Une tablette installée depuis la page d'installation a la clé du projet : pour passer à vos propres compilations (votre clé), flashez-la une fois par USB.
Prérequis¶
- ESPHome 2026.9.0 ou plus récent : le module ESPHome, ou la ligne de commande (
pip install esphome). C'est imposé par lemin_version:detab5-ha-hmi.yaml: une version antérieure refuse de compiler. La 2026.7.0 a apporté la plateforme tactilest7123officielle (plus besoin d'external_components), l'audio zero-copy, le VAD et la PSRAM via SDIO ; le plancher est passé à 2026.8.1 le 26/08/2026 pour les correctifs API, assistant vocal et handler de crash que ce projet exerce tous les jours, puis à 2026.9.0 le 16/09/2026 ; la fenêtre d'appairage, la clé donnée par Home Assistant et les firmwares signés (3.0) y sont vérifiés (raisons dans le commentaire au-dessus demin_version:). - Home Assistant 2026.8 ou plus récent (c'est lui qui donne sa clé de chiffrement à la tablette, voir l'étape 4).
- Un M5Stack Tab5 et le nom de sa puce d'écran (révisions matérielles).
1. Cloner et localiser le point d'entrée¶
git clone https://github.com/Axellum/M5-Tab5-ESPHome-LVGL.git
cd M5-Tab5-ESPHome-LVGL
Le fichier principal est tab5-ha-hmi.yaml à la racine du dépôt. Tous les autres fichiers YAML dans Tab5/ sont inclus comme packages par ce point d'entrée.
2. Créer votre fichier de réglages de compilation¶
Copiez le modèle :
cp Tab5/user_entities.example.yaml Tab5/user_entities.yaml
Tab5/user_entities.yaml est gitignoré (ne jamais le committer). Pour une installation standard, rien n'y est à remplacer : toutes les lignes sont facultatives.
Langue de l'écran : le français par défaut ; ajoutez tab5_langue: English (ou Deutsch, Nederlands, Español, Italiano, Türkçe) pour une autre langue au premier démarrage. Elle se change ensuite depuis Home Assistant (select « Langue »), voir traductions.
Fuseau horaire : rien à régler depuis la 3.0. La tablette prend celui de Home Assistant et garde le dernier reçu : le réveil reste juste quand HA manque après une coupure de courant. Une ancienne ligne tab5_fuseau est ignorée.
Révision du Tab5 : si la puce écran de votre autocollant n'est pas la ST7123, ajoutez tab5_ecran: st7121 ou tab5_ecran: ili9881c dans ce fichier (voir révisions matérielles). Pour la ST7123, ne mettez rien.
Plusieurs écrans : gardez le nom par défaut (tab5-ha-hmi) pour le premier et donnez le sien à chaque autre écran, tab5_nom: salon-7b (minuscules, chiffres et tirets ; tab5_nom_affiche pour le nom montré dans Home Assistant), ou -s tab5_nom salon-7b sur la ligne de commande. Home Assistant pousse le même affichage à chaque écran connecté, rien à y régler (ADR-0063). Ne renommez pas une tablette déjà installée.
Vos appareils (lumières, clim, plantes, TV…) ne se règlent plus ici (depuis la 3.0) : vous les choisissez dans Home Assistant, à la souris, voir l'étape 6 et adapter à sa maison ; les anciennes clés entity_light_… d'un fichier existant sont simplement ignorées. Le point d'entrée tab5-ha-hmi.yaml les charge via substitutions: !include Tab5/user_entities.yaml. Il ne reste aucune clé d'entité : Home Assistant retrouve seul les entités de la tablette (satellite vocal, lecteur média, select de pipeline) et celles du bouton « MAJ Écran » (ADR-0025) ; d'anciennes lignes entity_tab5_…, entity_primary_active et entity_push_automation sont ignorées.
3. Créer votre clé de signature du firmware¶
Depuis la 3.0, le firmware ne contient aucun secret : ni mot de passe Wi-Fi, ni clé API (ADR-0020). Ce qui protège la tablette, c'est une signature : par le réseau, elle n'accepte qu'un firmware signé par la même clé que celui qu'elle fait tourner. Créez cette clé privée une fois, à la racine du dépôt :
python -m espsecure generate-signing-key --version 2 --scheme rsa3072 tab5_signature.pem
espsecure est installé avec ESPHome. Le fichier est gitignoré ; pour le ranger ailleurs, donnez son chemin dans Tab5/user_entities.yaml (tab5_cle_signature: …). Gardez-en une copie hors de votre ordinateur : sans elle, la tablette ne se met plus à jour que par USB.
Plus de secrets.yaml : celui d'une 2.x n'est simplement plus lu (voir passer à la 3.0).
4. Premier flash (USB) et Wi-Fi¶
Connectez le Tab5 à votre ordinateur via USB-C. Ensuite :
esphome run tab5-ha-hmi.yaml
La tablette n'a pas encore de réseau Wi-Fi. Donnez-lui le vôtre, au choix :
- par l'USB, juste après le flash : la page d'installation du projet (Chrome ou Edge), Connecter et installer, puis son bouton Wi-Fi, ou ESPHome Web, Connect, puis Configure Wi-Fi. Les deux passent par Improv et marchent avec un firmware compilé soi-même. Fermer cette fenêtre redémarre la tablette une fois : c'est normal ;
- sans câble : connectez un téléphone au réseau ouvert « Tab5 Fallback AP » ; une page s'ouvre (sinon allez sur http://192.168.4.1) pour choisir votre réseau.
Le réseau est gardé d'une mise à jour à l'autre. Ensuite, ajoutez la tablette à Home Assistant, dans les 30 minutes qui suivent son démarrage.
Mises à jour par le Wi-Fi¶
Une fois la tablette sur votre réseau, les compilations suivantes passent par le Wi-Fi :
esphome run tab5-ha-hmi.yaml --device 192.168.x.x
L'envoi n'est plus chiffré (il n'y a pas de clé dans le YAML) ; la tablette vérifie la signature et refuse un firmware signé par une autre clé. Vos compilations sont signées par votre clé, rien d'autre à faire.
Journaux : esphome logs cherche la clé dans le YAML et n'en trouve plus. Utilisez python tools/tab5_logs.py --host 192.168.x.x --config-ha \\<ip-de-ha>\config : il lit la clé que garde Home Assistant (.storage/core.config_entries, ou la variable TAB5_CLE_API) et ne l'affiche jamais. Plus de détails dans diagnostiquer.