# Audit des firmwares Arborisis pour la Belgique Date : 11 octobre 2026. Cibles : Wio Tracker L1 Pro et Heltec WiFi LoRa 32 V3, mode normal compagnon. Sources locales : Arborisis-OS-L1PRO. Distribution existante : https://github.com/0xmagicduck/arborisis-firmware (binaires et guides, pas le code complet). ## Regles verifiees L'interface IBPT B01-23 V4.1 du 18/02/2020 autorise les dispositifs non specifiques dans 869,4-869,65 MHz, sous autorisation generale, sans protection et sans brouillage. Elle plafonne la puissance a 500 mW p.a.r. et permet un coefficient d'utilisation de 10 % comme alternative aux techniques d'acces et d'attenuation du brouillage. Le profil utilise cette alternative : aucune equivalence CAD = LBT/AFA n'est revendiquee. Sources primaires consultees : - [Interfaces IBPT](https://www.ibpt.be/operateurs/telecoms/equipements-hertziens/specifications-d-interfaces/appareils-de-courte-portee) - [PDF consolide, B01-23 page 21](https://www.ibpt.be/file/cc73d96153bbd5448a56f19d925d05b1379c7f21/3a32bbf04a46bed4de560b2292819f29e685b70a/25-11-b-fr.pdf#page=21) - [Autorisations generales IBPT](https://www.ibpt.be/operateurs/telecoms/spectre/autorisations-generales-d-utilisation-du-spectre-radioelectrique) 500 mW p.a.r. valent 26,9897 dBm p.a.r. La puissance conduite doit respecter `TX_dBm + gain_dBi - pertes_dB - 2,15 <= 26,9897`. Les images standard plafonnent TX a 22 dBm (environ 158 mW conduits), pour une antenne declaree de 2,15 dBi et aucune perte. A 22 dBm, le gain net maximal theorique est 7,1397 dBi. Une antenne plus directive impose de reduire TX. La tolerance de puissance reelle doit egalement etre prise en compte. ## Problemes et corrections - Le facteur de budget radio par defaut etait 1, soit un budget de 50 %. Il est maintenant 9 au minimum, soit 10 %. Les preferences anciennes sont corrigees au demarrage. Les limites plus faibles (5 %, 2 %, 1 %) restent possibles et persistent. - Les commandes compagnon et les menus permettaient des canaux hors Belgique, des bandes passantes non supportees et des reglages de budget non limites. Le profil `ARBO_REGION_BE` verifie les bords nominaux du canal, les valeurs SX1262, SF/CR, le budget et la puissance. Le prereglage americain est retire. - Le budget rechargeable pouvait autoriser un depassement sur une heure glissante. Un compteur de 61 tranches d'une minute impose au plus 360 secondes d'emission, avec une expiration conservatrice. Tous les paquets, relais, ACK, adverts, donnees brutes et messages locaux ou d'application passent par ce controle. - Les emissions sans interruption TX-done n'etaient pas debitees. Elles sont maintenant comptees, ainsi que les tentatives de demarrage incertaines. - Un redemarrage pouvait reinitialiser le budget. La reservation est maintenant sauvegardee avant TX dans deux petits fichiers du stockage principal. Au boot, la plus grande dette est restauree et vieillit pendant une heure de fonctionnement (jusqu'a une minute de marge), sans faire confiance a l'heure fournie par l'appli. Une dette corrompue bloque TX pendant cette periode ; une ecriture impossible garde le paquet en file et laisse la reception disponible. - Les trames radio trop courtes pouvaient provoquer une lecture hors limites. Les en-tetes et commandes de configuration tronques sont maintenant refuses. - Les versions candidate et leur SHA-256 sont distincts des anciennes releases. Une archive des sources et un inventaire de sommes relient les images au code. Le canal par defaut est 869,618 MHz / BW 62,5 kHz / SF8 / CR8 (4/8). Son bord nominal superieur est 869,64925 MHz : la marge nominale de 750 Hz ne remplace pas une mesure du spectre et de la derive de l'oscillateur. Le prereglage historique 869,525 / BW250 remplit nominalement la sous-bande, sans marge de frequence ; une verification RF est necessaire avant de le recommander. Les autres variantes et le repeater dedie ne sont pas des releases de cet audit. ## Validation et distribution `sh tools/test-belgian-radio.sh` teste le code reel du dispatcher avec ASan/UBSan : bords de canal, gain d'antenne, migration de preferences, heures glissantes, rollover, restauration du quota, stockage indisponible, timeout TX et trames tronquees. `sh tools/test-heltec-companion.sh` couvre calibration et CAD et l'isolation du repeater. Les deux simulateurs d'interface sont verifies avec le profil Belgique. `node tools/prepare-belgian-firmware.mjs --site '/chemin/du/site-rails'` execute les tests, compile les quatre variantes BLE/USB, verifie les plages UF2, le DFU applicatif et les partitions ESP32, puis prepare les fichiers dans `release/belgium-2026-10-11`. Le script refuse un changement des sources pendant la compilation et ne publie rien. Les candidats sont L1 Pro 2.3.0 BE et Heltec V3 1.1.0 BE. Leur validation est logicielle, pas une certification RED/CE et pas une preuve d'emission RF conforme. Les nouvelles images n'ont pas ete flashees pendant cet audit. Restent a verifier sur des cartes reelles : spectre, puissance p.a.r. avec l'antenne, trafic intense et coupures d'alimentation pendant les sauvegardes, latence et usure du stockage, conservation des donnees, BLE/USB et echanges avec un second noeud. Le stockage principal doit etre disponible. La dette ne s'efface pas avec les compteurs de statistiques ; un effacement volontaire du stockage efface aussi la dette. Pour une mise a jour Heltec, utiliser le `.bin` applicatif a `0x10000` uniquement apres verification des partitions et du slot actif. L'image `-merged.bin` a `0x0` est destinee a une premiere installation : elle peut remplacer NVS et les partitions. Sauvegarder l'identite et les donnees avant toute migration de layout. Le UF2 L1 Pro reste dans `0x27000..0xED000`, a l'ecart du stockage et du bootloader.