# Intégrations externes indisponibles sur SBC ARM sans support CONFIG\_CFS\_BANDWIDTH (Khadas, potentiellement Raspberry Pi)

**URL:** <https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703>\
**Category:** Développement\
**Created:** [Août 24, 2026, 7:25 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703 "2026-08-24T19:25:34Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Didier\_Hilary](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/didier_hilary/32/22400_2.png) [@Didier\_Hilary](https://community.gladysassistant.com/u/Didier_Hilary)\
**Post date:** [Août 24, 2026, 7:25 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703/1 "2026-08-24T19:25:34Z")

</div>

Bonjour,

Je remonte un problème bloquant pour toute intégration externe sur mon Khadas VIM1S (Ubuntu 24.04, kernel Amlogic `7.0.0+`).

**Symptôme** — impossible de démarrer une intégration externe (testé avec Shelly), erreur dans les logs :

```auto
Cannot restart container XXX: ... error setting cgroup config for procHooks process: 
openat2 /sys/fs/cgroup/.../cpu.max: no such file or directory

```

**Cause isolée** , reproductible hors Gladys :

bash

```auto
docker run --rm hello-world # OK
docker run --rm --cpus="1.0" hello-world # échoue avec la même erreur

```

**Confirmation kernel** :

bash

```auto
cat /boot/config-$(uname -r) | grep CFS_BANDWIDTH
→ CONFIG_CFS_BANDWIDTH is not set

```

Ce flag de compilation kernel fournit `cpu.max` (quota CPU cgroup v2). Sans lui, aucune limite `--cpus` ne peut être posée sur un conteneur — donc dès que les intégrations externes appliquent cette limite à la création, ça échoue systématiquement, sans contournement possible côté config système (testé : cgroup driver systemd et cgroupfs, délégation cgroup vérifiée correcte à tous les niveaux).

**Portée potentielle** : ce n’est pas isolé à mon matériel. Le Raspberry Pi a eu historiquement le même souci (ticket `raspberrypi/linux#3387`, toujours ouvert).

**Suggestion** : rendre la limite CPU optionnelle, ou basculer sur `--cpu-shares` (pondération, ne nécessite pas `cpu.max`) plutôt qu’un quota strict — voire détecter l’absence de `cpu.max` et créer le conteneur sans limite plutôt que d’échouer.

Je reste dispo pour tester sur ce matériel si besoin. Merci

---

<div class="post-metadata">

**Author:** ![mutmut](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mutmut/32/14064_2.png) [@mutmut](https://community.gladysassistant.com/u/mutmut)\
**Post date:** [Août 24, 2026, 8:44 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703/2 "2026-08-24T20:44:15Z")

</div>

Bienvenue sur le forum @Didier_Hilary !

Est-ce que ton problème ne ressemble pas à celui que nous avons eu sur les Synology ?

> [@Gladys Assistant 4.84.2 : Synology, clim, sonnettes, icônes Lucide et mise à jour plus sûre](https://community.gladysassistant.com/t/gladys-assistant-4-84-2-synology-clim-sonnettes-icones-lucide-et-mise-a-jour-plus-sure/10431):
>
> Salut à tous ! Après le lancement des intégrations externes en 4.84, cette version peaufine le sujet (notamment sur Synology), et ajoute plusieurs améliorations concrètes côté interface, clim, Gladys Plus et mise à jour système. Intégrations externes : correctifs Synology et droits /data Sur certains NAS Synology (ex. DS920+), le noyau Docker n’expose pas le scheduler CPU CFS. Gladys tentait alors de créer les conteneurs d’intégrations externes avec une limite CPU (NanoCPUs), ce qui faisait é…

> [@Gladys Assistant 4.84.3 : Synology (vrai fix), 217 icônes domotique et télécommande TV](https://community.gladysassistant.com/t/gladys-assistant-4-84-3-synology-vrai-fix-217-icones-domotique-et-telecommande-tv/10440):
>
> Salut à tous ! Petite release du soir, mais avec des correctifs bien concrets, notamment le vrai fix Synology, et les icônes manquantes (flocon, radiateur, etc.) demandées ce matin smileyIntégrations externes : vrai correctif Synology (NanoCPUs) En 4.84.2, la détection du support CPU CFS lisait les mauvaises clés JSON renvoyées par Docker (CPUCfsQuota au lieu de CpuCfsQuota). Résultat : sur certains NAS (ex. Synology DS920+), Gladys pensait encore pouvoir appliquer NanoCPUs, et l’installat…

Si c’est le cas, on transformera ton post en une demande de fonctionnalités pour la prise en compte d’autres machines.

---

<div class="post-metadata">

**Author:** ![Didier\_Hilary](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/didier_hilary/32/22400_2.png) [@Didier\_Hilary](https://community.gladysassistant.com/u/Didier_Hilary)\
**Post date:** [Août 27, 2026, 9:46 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703/3 "2026-08-27T21:46:11Z")

</div>

Bonsoir,

Le probleme ne semble pas etre exactement le meme, la commande suivante donne bien la bonne syntaxe si je comprends bien le probleme synology!!

khadas@Khadas:~$ docker info --format ‹&nbsp;{{json .}}&nbsp;› | python3 -m json.tool | grep -i cfs  
«&nbsp;CpuCfsPeriod&nbsp;»: true,  
«&nbsp;CpuCfsQuota&nbsp;»: true,

Peut-etre que le probleme vient de mon systeme, il ne gere pas bien les quotas!!

Y-a-t-il un moyen de desactiver ce mecanisme des quotas au niveau des integrations gladys?  
Merci

Cordialement

---

<div class="post-metadata">

**Author:** ![mutmut](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mutmut/32/14064_2.png) [@mutmut](https://community.gladysassistant.com/u/mutmut)\
**Post date:** [Août 28, 2026, 7:47 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703/4 "2026-08-28T07:47:08Z")

</div>

@pierre-gilles tu as déjà vu ce soucis ?

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 28, 2026, 7:50 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703/5 "2026-08-28T07:50:44Z")

</div>

J’ai lancé Fable dessus

---

<div class="post-metadata">

**Author:** ![cursor-bot](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cursor-bot/32/22252_2.png) [@cursor-bot](https://community.gladysassistant.com/u/cursor-bot)\
**Post date:** [Août 28, 2026, 8:01 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703/6 "2026-08-28T08:01:38Z")

</div>

Salut tout le monde !

Ce sujet est désormais **en cours de développement**.

Une PR a été ouverte pour démarrer les intégrations externes sur les kernels sans support CFS bandwidth :

> <https://github.com/GladysAssistant/Gladys/pull/3034>
>
> \### Description
> 
> External integrations were impossible to start on ARM SBCs whos…e kernel is compiled without \`CONFIG\_CFS\_BANDWIDTH\` (Khadas VIM1S Amlogic kernels among others), failing with:
> 
> \`\`\`
> error setting cgroup config for procHooks process: openat2 /sys/fs/cgroup/.../cpu.max: no such file or directory
> \`\`\`
> 
> On these cgroup v2 kernels the \`cpu\` controller exists, so \`docker info\` reports CFS support and container \*\*creation\*\* succeeds with \`NanoCpus\` set — only the \*\*start\*\* fails, in runc, on the missing \`cpu.max\` file. The existing recovery (added for Synology DSM in 4.84.2/4.84.3) only matched the creation-time HTTP 400 \`NanoCPUs can not be set\` of cgroup v1 kernels, so every code path recreated the container with the same CPU limit and the integration ended stuck in \`ERROR\`.
> 
> This PR recognizes the start-time \`cpu.max\` error too, and reuses the existing fallback (remember the lack of CFS support so all future descriptors omit \`NanoCpus\`, recreate the container without the limit, start it):
> 
> \- \`system.createContainer.js\`: new \`isCpuCfsError()\` matching both the creation-time HTTP 400 and the runc start-time \`cpu.max\` error; the creation retry now uses it.
> \- \`externalIntegration.start.js\`: when the stored CPU limit of an existing main container is rejected at start, the CFS support is marked absent before the recreation (so the new descriptor omits the limit); when a \*\*fresh\*\* container fails its first start on this error, it is recreated once without the limit — the failed container is removed, not left behind.
> \- \`externalIntegration.startSubContainer.js\`: the existing recreate-on-start-failure path now matches the cgroup v2 error too.
> \- Spec (\`docs/specs/external-integrations.md\`) updated accordingly.
> 
> No behavior change on kernels that can apply CPU limits: integrations keep their 0.5 CPU cap.
> 
> \## Forum
> 
> Forum: \`\`https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703\`\`
> 
> \### Checklist
> 
> \- \[x\] Tests pass: \`cd server && npm run coverage\` (Codecov requires 100% coverage on changed lines) and Cypress (\`npm run cypress:run\`) if the UI changed
> \- \[x\] Linter and prettier pass on both front and server (\`npm run eslint\`, \`npm run prettier\`)
> \- \[x\] No undocumented breaking change
> 
> 🤖 Generated with \[Claude Code\](https://claude.com/claude-code)
> 
> https://claude.ai/code/session\_01EBDTukkDt5cqA11hMAzHWY
> 
> \---
> \_Generated by \[Claude Code\](https://claude.ai/code/session\_01EBDTukkDt5cqA11hMAzHWY)\_

N’hésitez pas à suivre la PR, à tester (optionnel, surtout pour les petites demandes) et à faire vos retours ici si besoin.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 28, 2026, 8:24 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703/7 "2026-08-28T08:24:59Z")

</div>

Salut @Didier_Hilary,

Je te proposes un build arm64 pour tester ce correctif :

```auto
ghcr.io/gladysassistant/gladys-preview:claude-external-integrations-arm-unavailable-qk4lsh-arm64

```

Tu peux tester par exemple avec cette commande (attention aux volumes Docker, au port, pense bien à modifier cette commande selon ton installation) :

```auto
sudo docker run -d \
  --log-driver json-file \
  --log-opt max-size=10m \
  --cgroupns=host \
  --restart=always \
  --privileged \
  --network=host \
  --name gladys-claude-external-integrations-arm-unavailable-qk4lsh-arm64 \
  -e NODE_ENV=production \
  -e SERVER_PORT=80 \
  -e TZ=Europe/Paris \
  -e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/gladysassistant:/var/lib/gladysassistant \
  -v /dev:/dev \
  -v /run/udev:/run/udev:ro \
  ghcr.io/gladysassistant/gladys-preview:claude-external-integrations-arm-unavailable-qk4lsh-arm64

```

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 28, 2026, 2:10 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703/8 "2026-08-28T14:10:40Z")

</div>

J’ai aussi déployé le correctif dans la 5.0.1 :

> [@Gladys Assistant 5.0.1 : Déjà quelques correctifs!](https://community.gladysassistant.com/t/gladys-assistant-5-0-1-deja-quelques-correctifs/10736):
>
> Bonjour à tous waving_hand Gladys Assistant 5.0.1 vient de sortir ! C’est une version corrective, publiée juste après la 5.0.0 : pas de nouveauté majeure, essentiellement des correctifs sur les petits soucis que vous avez remontés aujourd’hui sur le forum et sur GitHub. Merci à vous pour tous ces retours folded_handsartist_palette Interface & dashboard Le décor Horizon est maintenant peint sur une couche fixe : plus de ralentissement au scroll du dashboard. Les cartes du dashboard n’ou…

---

<div class="post-metadata">

**Author:** ![Didier\_Hilary](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/didier_hilary/32/22400_2.png) [@Didier\_Hilary](https://community.gladysassistant.com/u/Didier_Hilary)\
**Post date:** [Août 29, 2026, 8:31 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703/9 "2026-08-29T08:31:57Z")

</div>

Bonjour,

Avec la version 5.0.1, j arrive à installer le service sur la machine 🙂

Mais malgre cela je n avais pas fait attention que mes modules sont des shelly gen1 donc non integrables dans gladys!!

J’ai découvert autre problème d’infrastructure sur mon Khadas VIM1S qui mérite d’être signalé, car il touche potentiellement **toutes** les intégrations externes en réseau bridge isolé, pas juste Shelly.

### Le symptôme

Un conteneur d’intégration externe (réseau `gladys-integrations`, bridge isolé 172.30.0.0/24) ne peut atteindre **aucun appareil du LAN** — timeout systématique en sortie, alors que l’hôte lui-même contacte ces mêmes appareils sans problème.

### La cause : mon kernel ne supporte aucun backend NAT

bash

```auto
docker run --rm --network gladys-integrations curlimages/curl http://<IP_LAN> --max-time 5
# → timeout

```

En creusant :

- **nftables absent** : `CONFIG_NF_TABLES is not set` dans le kernel
- **iptables-legacy absent aussi** : le module `ip_tables` n’existe pas non plus (`modprobe: FATAL: Module ip_tables not found`)

Donc Docker ne peut créer **aucune règle NAT/SNAT** , quel que soit le backend — les conteneurs en bridge isolé ne peuvent jamais atteindre le LAN. C’est pour ça que `"iptables": false` était déjà configuré dans mon `daemon.json` (probablement pour permettre à Docker de démarrer du tout, faute de backend NAT fonctionnel) — mais ce contournement empêche justement le NAT dont les intégrations externes ont besoin.

### Pourquoi ça touche potentiellement d’autres utilisateurs

C’est un kernel vendeur (Amlogic, très allégé, orienté Android TV box à l’origine) qui manque de plusieurs briques réseau/cgroup standards. Vu le nombre de SBC ARM «&nbsp;légers&nbsp;» utilisés dans la communauté domotique (TV box reconverties, mini-PC ARM bon marché…), ce n’est probablement pas un cas isolé.

### Suggestion

Pour les intégrations externes qui doivent contacter des appareils du LAN (comme Shelly, Tasmota, etc. — tout ce qui n’est pas purement MQTT via l’hôte), serait-il possible de proposer une option de configuration en **mode réseau `host`** plutôt que bridge isolé ? Ça contournerait complètement le besoin de NAT pour les utilisateurs dont le système ne le supporte pas, moyennant l’avertissement habituel de sécurité (isolation réduite).

Je reste dispo pour tester si besoin.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 29, 2026, 12:12 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703/10 "2026-08-29T12:12:36Z")

</div>

Salut Didier !

Merci pour cette investigation, c’est super précis et ça aide beaucoup. 🙏

Tu as mis le doigt sur la vraie cause : ton noyau est compilé sans netfilter (`CONFIG_NF_TABLES is not set`, pas d’iptables). Or c’est netfilter qui fait le NAT des réseaux bridge de Docker — sans lui, **aucun** conteneur en bridge ne peut atteindre le LAN, quelle que soit l’application. Ce n’est donc pas une limitation de Gladys : sur ce noyau, le réseau Docker est cassé en dessous de nos pieds (le [script officiel `check-config.sh` de Docker](https://github.com/moby/moby/blob/master/contrib/check-config.sh) flague d’ailleurs ces options comme requises).

**Concernant le `network=host`, je préfère être transparent : ce ne sera pas une option dans Gladys.** Tout le modèle de sécurité des intégrations externes repose sur l’isolation réseau : une intégration ne peut pas atteindre les services locaux de ta machine, ne peut pas parler aux autres intégrations, et la découverte réseau passe par un contrat explicite que tu approuves à l’installation. Avec le mode host, toutes ces garanties disparaissent — et « avec un avertissement » ne tient pas sur la durée : dès qu’une intégration populaire l’exige, l’avertissement devient un clic réflexe et la promesse « une intégration ne peut pas faire X » ne vaut plus rien. Détail qui a son importance : sans netfilter, l’isolation entre conteneurs (`enable_icc=false`) n’est de toute façon pas appliquée non plus — donc sur ce noyau, même sans mode host, on ne pourrait pas tenir nos garanties.

**La bonne nouvelle : c’est réparable côté OS, et proprement. 🎉**

1. **Vérifie d’abord si les modules existent mais ne sont pas chargés** : `sudo modprobe nf_tables` puis `ls /lib/modules/$(uname -r)/kernel/net/netfilter/`. Vu ton `CONFIG_NF_TABLES is not set`, c’est peu probable, mais ça vaut 30 secondes.
2. **La solution que je te recommande : passer sur Armbian pour ton VIM1S.** Il existe des [images Armbian officielles et maintenues pour le Khadas VIM1S](https://www.armbian.com/khadas-vim1s/), avec un noyau qui inclut netfilter. Docker (bridge, NAT, isolation) fonctionne normalement dessus. Pense à faire une sauvegarde Gladys avant, tu restaureras sur la nouvelle installation.
3. Alternativement, tu peux remonter le problème à Khadas : il y a déjà des tickets sur leur outil de build à ce sujet ([fenix #297](https://github.com/khadas/fenix/issues/297), [fenix #68](https://github.com/khadas/fenix/issues/68)) — les modules netfilter manquants dans leurs noyaux vendor sont un problème connu chez eux.

Tiens-moi au courant si tu tentes Armbian, ton retour servira à tous ceux qui sont sur des SBC avec des noyaux vendor allégés ! 😊

---

<div class="post-metadata">

**Author:** ![Didier\_Hilary](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/didier_hilary/32/22400_2.png) [@Didier\_Hilary](https://community.gladysassistant.com/u/Didier_Hilary)\
**Post date:** [Septembre 7, 2026, 8:23 UTC](https://community.gladysassistant.com/t/integrations-externes-indisponibles-sur-sbc-arm-sans-support-config-cfs-bandwidth-khadas-potentiellement-raspberry-pi/10703/11 "2026-09-07T20:23:15Z")

</div>

Bonsoir,

J ai migre sur armbian et reinstalle gladys, tout fonctionne correctement. J ai installe le support shelly et il a decouvert mon module shelly 2.5 gen1, j ai les infos remntees par le module mais je ne peux pas commander les relais avec l integration.

Merci pour l info sur armbian

Cordialement

Version installée:

PRETTY\_NAME=«&nbsp;Armbian 26.8.3 noble&nbsp;»  
NAME=«&nbsp;Ubuntu&nbsp;»  
VERSION\_ID=«&nbsp;24.04&nbsp;»  
VERSION=«&nbsp;24.04 LTS (Noble Numbat)&nbsp;»  
VERSION\_CODENAME=noble  
ID=ubuntu
