Appareils Matter indisponibles pendant coupure internet

Bonjour,

Mon problème

Je dispose des capteurs de porte Ikea Thread et une prise Tapo Matter Wifi. Depuis ce midi je suis coupé d’internet et je n’ai plus aucun appareils Matter accessible. Ils sont tous indisponibles dans Home Assistant, qu’ils soient sur le protocole Thread ou Wifi. Je pensais qu’avec Matter il était possible de continuer à piloter ses appareils en locale même sans connexion internet. Pour le détail, c’est le câble fibre optique qui s’est plié ce midi et une intervention est prévu ce jeudi. D’ici mes appareils apparaissent hors ligne.

Peut-être aussi que c’est un problème dans ma configuration. En tout cas l’IPV6 est toujours activé du côté de Home Assistant (en automatique sur les interfaces réseaux end0 et wlan0 mais champs serveur dns vide depuis la coupure). Aussi, le changement qu’il y a eu depuis cette coupure, c’est que mes appareils ont toujours des adresses IPV4 assignées mais plus d’adresses IPV6. Du coup est ce que le problème provient du côté de mon modem Bouygues (Bbox Wifi 7), du Thread Border Router ou d’une configuration dans Home Assistant ?

Pour information j’avais activé DHCPV6 du côté de la Bbox (je ne sais pas s’il y a un lien). Côté config on ne peut pas faire grand chose sur l’interface d’administration de la box si ce n’est d’assigner des IPV4 et IPV6 statiques aux appareils du réseau local. Mais l’assignation de l’IPV6 à un appareil ne se fait seulement quand internet est disponible.

N’étant pas un spécialise réseau, si quelqu’un a une explication je suis preneurs. :slight_smile:

Ma configuration


Thread Border Router : Clé Sonoff Zbdongle E avec le dernier firmware Thread (2.4.4).

Logs Matter Server :

-----------------------------------------------------------
 Add-on: Matter Server
 Matter WebSocket Server for Home Assistant Matter support.
-----------------------------------------------------------
 Add-on version: 8.1.2
 You are running the latest version of this add-on.
 System: Home Assistant OS 16.3  (aarch64 / raspberrypi5-64)
 Home Assistant Core: 2026.1.1
 Home Assistant Supervisor: 2026.01.0
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service banner successfully started
s6-rc: info: service matter-server: starting
s6-rc: info: service matter-server successfully started
s6-rc: info: service legacy-services: starting
[19:02:57] INFO: Starting Matter Server...
s6-rc: info: service legacy-services successfully started
[19:02:58] INFO: Using 'end0' as primary network interface.
[19:02:59] INFO: Successfully send discovery information to Home Assistant.
2026-01-13 19:03:02.033 (MainThread) INFO [matter_server.server.stack] Initializing CHIP/Matter Logging...
2026-01-13 19:03:02.034 (MainThread) INFO [matter_server.server.stack] Initializing CHIP/Matter Controller Stack...
[1768327382.075004][117:117] CHIP:CTL: Setting attestation nonce to random value
[1768327382.075248][117:117] CHIP:CTL: Setting CSR nonce to random value
[1768327382.076209][117:117] CHIP:DL: ChipLinuxStorage::Init: Using KVS config file: /tmp/chip_kvs
[1768327382.080947][117:117] CHIP:DL: Wrote settings to /tmp/chip_kvs
[1768327382.081161][117:117] CHIP:DL: ChipLinuxStorage::Init: Using KVS config file: /data/chip_factory.ini
[1768327382.081289][117:117] CHIP:DL: ChipLinuxStorage::Init: Using KVS config file: /data/chip_config.ini
[1768327382.081325][117:117] CHIP:DL: ChipLinuxStorage::Init: Using KVS config file: /data/chip_counters.ini
[1768327382.082465][117:117] CHIP:DL: Wrote settings to /data/chip_counters.ini
[1768327382.082480][117:117] CHIP:DL: NVS set: chip-counters/reboot-count = 34 (0x22)
[1768327382.082842][117:117] CHIP:DL: Got Ethernet interface: end0
[1768327382.083013][117:117] CHIP:DL: Found the primary Ethernet interface:end0
[1768327382.083172][117:117] CHIP:DL: Got WiFi interface: wlan0
[1768327382.087482][117:117] CHIP:DL: Found the primary WiFi interface:wlan0
[1768327382.087491][117:117] CHIP:PAF: WiFiPAF: WiFiPAFLayer::Init()
2026-01-13 19:03:02.087 (MainThread) INFO [chip.storage] Initializing persistent storage from file: /data/chip.json
2026-01-13 19:03:02.088 (MainThread) INFO [chip.storage] Loading configuration from /data/chip.json...
2026-01-13 19:03:02.197 (MainThread) INFO [chip.CertificateAuthority] Loading certificate authorities from storage...
2026-01-13 19:03:02.197 (MainThread) INFO [chip.CertificateAuthority] New CertificateAuthority at index 1
2026-01-13 19:03:02.198 (MainThread) INFO [chip.CertificateAuthority] Loading fabric admins from storage...
2026-01-13 19:03:02.198 (MainThread) INFO [chip.FabricAdmin] New FabricAdmin: FabricId: 0x0000000000000002, VendorId = 0x134B
2026-01-13 19:03:02.199 (MainThread) INFO [matter_server.server.stack] CHIP Controller Stack initialized.
2026-01-13 19:03:02.199 (MainThread) INFO [matter_server.server.server] Matter Server initialized
2026-01-13 19:03:02.199 (MainThread) INFO [matter_server.server.server] Using 'end0' as primary interface (for link-local addresses)
2026-01-13 19:03:02.200 (MainThread) INFO [matter_server.server.server] Starting the Matter Server...
2026-01-13 19:03:02.203 (MainThread) INFO [matter_server.server.helpers.paa_certificates] Skip fetching certificates (already fetched within the last 24h).
2026-01-13 19:03:02.203 (MainThread) INFO [chip.FabricAdmin] Allocating new controller with CaIndex: 1, FabricId: 0x0000000000000002, NodeId: 0x000000000001B669, CatTags: []
2026-01-13 19:03:02.332 (Dummy-2) CHIP_ERROR [chip.native.DL] Long dispatch time: 127 ms, for event type 2
2026-01-13 19:03:02.350 (MainThread) INFO [matter_server.server.vendor_info] Loading vendor info from storage.
2026-01-13 19:03:02.364 (MainThread) INFO [matter_server.server.vendor_info] Loaded 386 vendors from storage.
2026-01-13 19:03:02.364 (MainThread) INFO [matter_server.server.vendor_info] Fetching the latest vendor info from DCL.
2026-01-13 19:03:02.374 (MainThread) ERROR [matter_server.server.vendor_info] Unable to fetch vendor info from DCL: Cannot connect to host on.dcl.csa-iot.org:443 ssl:default [Temporary failure in name resolution]
2026-01-13 19:03:02.375 (MainThread) INFO [matter_server.server.vendor_info] Saving vendor info to storage.
2026-01-13 19:03:02.380 (MainThread) INFO [matter_server.server.device_controller] Loaded 1 nodes from stored configuration
2026-01-13 19:03:02.386 (MainThread) INFO [matter_server.server.server] Matter Server successfully initialized.
2026-01-13 19:03:08.902 (MainThread) ERROR [matter_server.server.client_handler] [548427098608] Error while handling: check_node_update (node 1): Fetching software versions from DCL for device with vendor id 4476 product id 32775 failed.

Log OpenThread Border Router :

-----------------------------------------------------------
 Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.15.3
 You are running the latest version of this add-on.
 System: Home Assistant OS 16.3  (aarch64 / raspberrypi5-64)
 Home Assistant Core: 2026.1.1
 Home Assistant Supervisor: 2026.01.0
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service banner successfully started
s6-rc: info: service otbr-agent: starting
[19:06:34] INFO: Setup OTBR firewall...
[19:06:34] INFO: Migrating OTBR settings if needed...
2026-01-13 19:06:34 haos asyncio[226] DEBUG Using selector: EpollSelector
2026-01-13 19:06:34 haos zigpy.serial[226] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-Itead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_V2_8641d1a8bf49ef11a11bd68cff00cc63-if00-port0' (baudrate=460800, xonxoff=False, rtscts=False)
2026-01-13 19:06:34 haos serialx.platforms.serial_posix[226] DEBUG Configuring serial port '/dev/serial/by-id/usb-Itead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_V2_8641d1a8bf49ef11a11bd68cff00cc63-if00-port0'
2026-01-13 19:06:34 haos serialx.platforms.serial_posix[226] DEBUG Configuring serial port: [0, 0, 3248, 0, 4100, 4100, [b'\x03', b'\x1c', b'\x7f', b'\x15', b'\x04', 0, 0, b'\x00', b'\x11', b'\x13', b'\x1a', b'\x00', b'\x12', b'\x0f', b'\x17', b'\x16', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00']]
2026-01-13 19:06:34 haos serialx.platforms.serial_posix[226] DEBUG Setting low latency mode: True
2026-01-13 19:06:34 haos serialx.platforms.serial_posix[226] DEBUG Setting modem pins: ModemPins[!dtr !rts]
2026-01-13 19:06:34 haos serialx.platforms.serial_posix[226] DEBUG TIOCMBIC: 0x00000006
2026-01-13 19:06:34 haos zigpy.serial[226] DEBUG Connection made: <serialx.platforms.serial_posix.PosixSerialTransport object at 0x7fb6c27a10>
2026-01-13 19:06:34 haos universal_silabs_flasher.spinel[226] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=0, network_link_id=0, flag=2), command_id=<CommandID.RESET: 1>, data=b'\x02')
2026-01-13 19:06:34 haos universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x80\x01\x02\xea\xf0~'
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Immediately writing b'~\x80\x01\x02\xea\xf0~'
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Sent 7 of 7 bytes
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Event loop woke up reader
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Received b'~\x80\x06\x00p\xeet~'
2026-01-13 19:06:34 haos universal_silabs_flasher.spinel[226] DEBUG Decoded HDLC frame: HDLCLiteFrame(data=b'\x80\x06\x00p')
2026-01-13 19:06:34 haos universal_silabs_flasher.spinel[226] DEBUG Parsed frame SpinelFrame(header=SpinelHeader(transaction_id=0, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_IS: 6>, data=b'\x00p')
2026-01-13 19:06:34 haos universal_silabs_flasher.spinel[226] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2026-01-13 19:06:34 haos universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Sent 7 of 7 bytes
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Event loop woke up reader
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Received b'~\x83\x06\x08\x08\xb9_\xff\xfeYD\xc6\xac\x04~'
2026-01-13 19:06:34 haos universal_silabs_flasher.spinel[226] DEBUG Decoded HDLC frame: HDLCLiteFrame(data=b'\x83\x06\x08\x08\xb9_\xff\xfeYD\xc6')
2026-01-13 19:06:34 haos universal_silabs_flasher.spinel[226] DEBUG Parsed frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_IS: 6>, data=b'\x08\x08\xb9_\xff\xfeYD\xc6')
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Closing at the request of the application
2026-01-13 19:06:34 haos zigpy.serial[226] DEBUG Waiting for serial port to close
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Closing connection: None
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Closing file descriptor 7
2026-01-13 19:06:34 haos serialx.descriptor_transport[226] DEBUG Calling protocol `connection_lost` with exc=None
2026-01-13 19:06:34 haos zigpy.serial[226] DEBUG Connection lost: None
Adapter settings file /data/thread/0_8b95ffffe5944c6.data is the most recently used, skipping
[19:06:34] INFO: Starting otbr-agent...
[NOTE]-AGENT---: Running 0.3.0-b067e5ac-dirty
[NOTE]-AGENT---: Thread version: 1.3.0
[NOTE]-AGENT---: Thread interface: wpan0
[NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///dev/serial/by-id/usb-Itead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_V2_8641d1a8bf49ef11a11bd68cff00cc63-if00-port0?uart-baudrate=460800&uart-init-deassert
[NOTE]-AGENT---: Radio URL: trel://end0
[NOTE]-ILS-----: Infra link selected: end0
49d.21:47:30.985 [C] P-SpinelDrive-: Software reset co-processor successfully
00:00:00.050 [N] RoutingManager: BR ULA prefix: fd3b:aff5:5544::/48 (loaded)
00:00:00.050 [N] RoutingManager: Local on-link prefix: fd8c:f83:bb0c:48f0::/64
00:00:00.069 [N] Mle-----------: Role disabled -> detached
00:00:00.084 [N] P-Netif-------: Changing interface state to up.
00:00:00.097 [W] P-Netif-------: Failed to process request#2: No such process
00:00:00.097 [W] P-Netif-------: Failed to process request#6: No such process
s6-rc: info: service otbr-agent successfully started
s6-rc: info: service otbr-agent-configure: starting
Done
00:00:00.349 [W] P-Daemon------: Failed to write CLI output: Broken pipe
s6-rc: info: service otbr-agent-configure successfully started
s6-rc: info: service otbr-agent-rest-discovery: starting
[19:06:35] INFO: Successfully sent discovery information to Home Assistant.
s6-rc: info: service otbr-agent-rest-discovery successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
00:00:25.995 [N] Mle-----------: RLOC16 b400 -> fffe
00:00:26.413 [N] Mle-----------: Attach attempt 1, AnyPartition reattaching with Active Dataset
00:00:32.913 [N] RouterTable---: Allocate router id 45
00:00:32.913 [N] Mle-----------: RLOC16 fffe -> b400
00:00:32.917 [N] Mle-----------: Role detached -> leader
00:00:32.917 [N] Mle-----------: Partition ID 0x3857f843
[NOTE]-BBA-----: BackboneAgent: Backbone Router becomes Primary!
00:00:35.331 [W] DuaManager----: Failed to perform next registration: NotFound
00:00:41.794 [W] P-RadioSpinel-: Error processing result: NoAddress
00:00:41.794 [W] P-RadioSpinel-: Error waiting response: NoAddress

Ta box operateur est opérationnelle ? Ton reseau interne aussi ?
Par quoi commençaient tes ipv6 ?

Je ne sais pas ce que tu entends par « box opérationnelle » mais en tout cas tous mes appareils (pc, téléphones, tablettes, PS5) sont actuellement connectés à la box en WIFI. Home Assistant est à la fois connecté via Ethernet et Wifi. Tous les appareils sont visibles sur l’interface d’administration de la box.

TIDJYDEV c’est le nom donné dans l’interface bouygues pour identifier mon serveur Home Assistant.


A noter que lorsque je ping mon serveur Home Assistant, ça fonctionne en me retournant une adresse ipv6 commençant par fe80::

Donc ta box est opérationnelle pas de soucis a ce niveau là.

C’est donc un problème d’attribution des ipv6. Sur les box operateur ces ip sont attribués par internet même en local. En gros la box demande un lot de prefix ip et la fai lui donne. Apres la box les attribues. Si la connexion externe est coupé ces prefixes sont considérés comme dépassé et les ip révoquée… Plus rien ne marche.
Tu n’aurais pas de problème avec une box intermédiaire (asus, ubiquiti…) qui gèrent elles même les prefix.

Bref encore une preuve que mater c’est un futur genial, performant et ouvert a tout le monde… Le futur remplaçant du zigbee on vous dit !

Logiquement matter utilises les adresses locale (local-link adresse en fe:80)

Mais c’est clair thread est un sacré foutoir

Je me demande si c’est pas plutôt un soucis de mdns dans ce cas

Au sein du reseau pas dans la communication avec ha.

Si c’est le cas c’est définitivement une usine a gaz

A moins d’avoir un routeur perso mais c’est pas a la porté de tout le monde.

En tout cas la Freebox reste ok côté IPv6 même sans internet

Ils ont une gestion plus geek de leur box que orange et Bouygues qui sont très très dépendante de l’internet pour tout les « services » qui leur sont liés. Normalement les adresse ula devrait être dispo sans internet mais avec ces box on est a l’abri de rien.

On va se marrer dans quelques semaines avec toutes les personnes qui se sont ruées sur le ikea thread sans avoir une infra stable pour faire tourner l’ensemble… Si elles arrivent a mettre en place l’usine a gaz qui permet d’avoir un border router lié a ha.

Après le firewall de la Freebox en IPv6 c’est tout ou rien pas terrible dans le genre :rofl:

Surtout que pas mal de leur box ont le firewall IPv6 désactivé

Du coup si je comprends bien la solution serait d’installer un router entre la box et le TBR afin qu’il assigne les préfix ipv6 aux appareils du réseau local ?

Ou arrêter d’utiliser matter :joy:

3 « J'aime »

Tu securiserais l’ensemble du reseau et serait plus dépendant des services nécessitant Internet de ta box fai.

1 « J'aime »

Mon réseau Zigbee fonctionne très bien. C’est pas parce que c’est le cas que les gens n’ont pas le droit d’utiliser/tester Matter ^^ A lire plusieurs forums, tout est à jeter dans Matter :upside_down_face:

tu peux tester tant que tu veux bien sur

pas tout a jeter mais via ton test tu viens de te rendre compte que c’est une usine a gaz

1 « J'aime »

De retour pour de nouvelles investigations. J’ai récupéré ma connexion fibre optique il y a 3/4 jours et même avec ça, mes appareils WIFI et Thread étaient toujours marqués comme indisponibles dans HA. J’ai dû tous les réassocier à nouveau pour qu’ils fonctionnent. Cependant, j’ai à nouveau fait un test hors ligne (câble fibre optique débranché de la box internet) et mes appareils WIFI et Thread étaient toujours disponibles dans HA. Mais aussi mes automatisations continuaient de fonctionner.

Ca m’aide pas à comprendre ce qu’il s’est passé la première fois à la perte de la connexion internet mais j’ai au moins la confirmation que mon installation Matter, que ce soit du côté du protocole WIFI ou du protocole Thread, fonctionne bien sans connexion internet. C’est déjà un bon résultat et conforme aux spécifications de la norme Matter. Ouf ! Mais vraisemblablement lors du « bug » il y a surement eu un paramètre changé dans ma box qui a fait tomber mon réseau Matter.

Je vais quand même pousser le test en mettant mon installation Home Assistant sans connexion internet une journée entière pour confirmer le comportement. Je ferai un update à ce moment là.

Les deux pistes d’explication t’ont été données plus haut, la trop forte dépendance des box operateur à la présence de lien Internet pour la gestion des baux ipv6 et du multicast. Il suffit que un des deux ai un bug lors de la coupure ou que le renouvellement soit fait il y a trop longtemps et c’est le drame. La seule alternative fiable et sûr est d’installer un vrai routeur derrière la box.
Si c’est arrivé une fois et que rien n’a été changer dans le système ça arrivera encore.

Puisque j’ai refais le test sans connexion internet, ce que tu expliques ne semble pas être le problème. Sinon à la déconnexion de la fibre j’aurai eu le même problème. Je dois effectuer d’autres tests avancés avant de tirer des conclusions non vérifiées. D’autant plus qu’après une recherche google, je ne vois aucun sujet faisant un lien sur des difficultés rencontrées entre les box opérateurs et Matter. Je suis plus sur la piste d’un problème de configuration.

D’ailleurs il me semble que l’opérateur internet n’a pas besoin de proposer l’IPV6 à son client pour que Matter soit pris en charge. IPV6 est géré localement par le border router. Il faut juste que le routeur accepte de router les adresses IPV6 du réseau local. Peu importe internet ou pas internet.

C’est plus complexe que ça. Les baux ont une durée de vie et il suffit que la coupure arrive au « mauvais » moment, ou que le « bug » d’adressage n’arrive pas et ça passe plus. Idem pour le broadcast.

Pour les adresses dans le réseau thread oui (entre les objet et la clef). Pour les adresses réseau local oui et non. Sur un routeur FAI, les adresse GUA, tu as besoin d’un préfixe qui est donnée à la box par le FAI et souvent sur les box fai les ULA en sont dépendante, voir elles ne sont carrément pas géré par la box d’office (coucou les livebox). C’est cette adresse ULA qui permet la communication entre les appareils thread et HA. Si cette adresse est révoquée cela pose problème. Si tu as que les adresse locale de OPTB, elles ne sont pas routables et tu te retrouve avec le problème que tu as eu.