NEWS
Matter (Adapter) Problem
-
hier mal ein update, die Geräte kommen und gehen wie von Geisterhand.
Mal sind sie tagelang da und dann wieder ohne eine Auffälligkeit weg.
Sie kommen und gehen wie sie wollen.
Aktuell sind sie wieder weg, in den Objekten sieht es aber aktuell so aus:

Scheinbar alle da und ok.
-
-
-
Claude hat das hier gerade rausgefunden und sagt:
Controller fails to start: "Storage is locked by another process" (stale ota/matter.pid, PID no longer exists)Description
After a few days of normal operation, matter.0 shows a green instance but no devices are available. Restarting the instance does not help. The controller fails to start on every attempt with a storage lock error. The lock is held by a PID that no longer exists (stale lock).
Rebooting the whole Raspberry Pi also fixes it, but I now have to do that regularly. Removing the stale lock files manually (see below) fixes it without a reboot.
Environment
ioBroker.matter: 1.3.1
js-controller: 7.2.2
admin: 8.0.14
Node.js: 24.21.0
OS: Debian 13 (trixie), Raspberry Pi 5 (8 GB), arm64
Thread network via Apple border router, 8 IKEA Thread devices
SymptomsInstance is green, no log output, devices are missing in the adapter UI
After restarting the instance, the log shows the error below and the devices are still missing
The error occurred on every start attempt (e.g. 13:10, 15:36, 15:44)
Logerror: matter.0 (3445) Failed to start the controller: [crashed-dependency] MatterController unavailable due to initialization error Caused by: [endpoint-behaviors] Behaviors have errors Cause #0: [behavior-initialization] Error initializing controller.ota-provider.otaSoftwareUpdateProvider Caused by: [crashed-dependency] controller.ota-provider.softwareupdates initialization failed Cause #1: [behavior-initialization] Error initializing controller.ota-provider.softwareupdates Caused by: [crashed-dependency] DclOtaUpdateService unavailable due to initialization error Caused by: [storage-lock] Storage is locked by another process (pid 2087) at acquireLock (@matter/nodejs/src/fs/lock-utils.ts:139:19) at acquireDirectoryLock (@matter/nodejs/src/fs/lock-utils.ts:90:5) at DatafileRoot.#acquireRef (@matter/general/src/storage/DatafileRoot.ts:74:29) at FlatFileBlobStorageDriver.initialize (@matter/nodejs/src/storage/fs/FlatFileBlobStorageDriver.ts:46:9) at StorageService.#openBlobFilesystem (@matter/general/src/storage/StorageService.ts:395:13)Analysis
ps -p 2087 returns nothing, so the process named in the error does not exist anymore.
fuser on the lock file shows no process holding it.
The directory iobroker-data/matter.0/ota/ contained:
matter.lock (0 bytes)
matter.pid (content: 2087 999e67500e993e0a)
driver.json
Both matter.lock and matter.pid were dated the previous day (Oct 19, 15:20), i.e. left over from an earlier run.
Workaroundiob stop matter.0 mv iobroker-data/matter.0/ota/matter.pid iobroker-data/matter.0/ota/matter.lock <somewhere else> iob start matter.0After this, all 8 nodes connected again immediately.
Expected behavior
A stale lock (PID not running) should be detected and ignored or cleaned up, and the lock should be released on adapter shutdown or termination. Even if the lock cannot be acquired, a failing OTA service should not prevent the whole controller from starting.
Könnte vielleicht dann auftreten, wenn ich den „update“ Knop klicke.
Allerdings ist Claude gerade wieder aufgebraucht. Werde ich morgen mit ihm weiter bereden. -
Claude hat das hier gerade rausgefunden und sagt:
Controller fails to start: "Storage is locked by another process" (stale ota/matter.pid, PID no longer exists)Description
After a few days of normal operation, matter.0 shows a green instance but no devices are available. Restarting the instance does not help. The controller fails to start on every attempt with a storage lock error. The lock is held by a PID that no longer exists (stale lock).
Rebooting the whole Raspberry Pi also fixes it, but I now have to do that regularly. Removing the stale lock files manually (see below) fixes it without a reboot.
Environment
ioBroker.matter: 1.3.1
js-controller: 7.2.2
admin: 8.0.14
Node.js: 24.21.0
OS: Debian 13 (trixie), Raspberry Pi 5 (8 GB), arm64
Thread network via Apple border router, 8 IKEA Thread devices
SymptomsInstance is green, no log output, devices are missing in the adapter UI
After restarting the instance, the log shows the error below and the devices are still missing
The error occurred on every start attempt (e.g. 13:10, 15:36, 15:44)
Logerror: matter.0 (3445) Failed to start the controller: [crashed-dependency] MatterController unavailable due to initialization error Caused by: [endpoint-behaviors] Behaviors have errors Cause #0: [behavior-initialization] Error initializing controller.ota-provider.otaSoftwareUpdateProvider Caused by: [crashed-dependency] controller.ota-provider.softwareupdates initialization failed Cause #1: [behavior-initialization] Error initializing controller.ota-provider.softwareupdates Caused by: [crashed-dependency] DclOtaUpdateService unavailable due to initialization error Caused by: [storage-lock] Storage is locked by another process (pid 2087) at acquireLock (@matter/nodejs/src/fs/lock-utils.ts:139:19) at acquireDirectoryLock (@matter/nodejs/src/fs/lock-utils.ts:90:5) at DatafileRoot.#acquireRef (@matter/general/src/storage/DatafileRoot.ts:74:29) at FlatFileBlobStorageDriver.initialize (@matter/nodejs/src/storage/fs/FlatFileBlobStorageDriver.ts:46:9) at StorageService.#openBlobFilesystem (@matter/general/src/storage/StorageService.ts:395:13)Analysis
ps -p 2087 returns nothing, so the process named in the error does not exist anymore.
fuser on the lock file shows no process holding it.
The directory iobroker-data/matter.0/ota/ contained:
matter.lock (0 bytes)
matter.pid (content: 2087 999e67500e993e0a)
driver.json
Both matter.lock and matter.pid were dated the previous day (Oct 19, 15:20), i.e. left over from an earlier run.
Workaroundiob stop matter.0 mv iobroker-data/matter.0/ota/matter.pid iobroker-data/matter.0/ota/matter.lock <somewhere else> iob start matter.0After this, all 8 nodes connected again immediately.
Expected behavior
A stale lock (PID not running) should be detected and ignored or cleaned up, and the lock should be released on adapter shutdown or termination. Even if the lock cannot be acquired, a failing OTA service should not prevent the whole controller from starting.
Könnte vielleicht dann auftreten, wenn ich den „update“ Knop klicke.
Allerdings ist Claude gerade wieder aufgebraucht. Werde ich morgen mit ihm weiter bereden. -
Ich habe einen AppleTV (den mit LAN) und einen HomePod mini, wenn du das meinst.
Eine Fritzbox 7530 und einen 8 Port LAN Switch von Netgear.
Es lief ja alles schon monatelang perfekt.
Die MoT Teile sind alle von IKEA.Es kam in letzter Zeit nix neues dazu.
-
Claude hat das hier gerade rausgefunden und sagt:
Controller fails to start: "Storage is locked by another process" (stale ota/matter.pid, PID no longer exists)Description
After a few days of normal operation, matter.0 shows a green instance but no devices are available. Restarting the instance does not help. The controller fails to start on every attempt with a storage lock error. The lock is held by a PID that no longer exists (stale lock).
Rebooting the whole Raspberry Pi also fixes it, but I now have to do that regularly. Removing the stale lock files manually (see below) fixes it without a reboot.
Environment
ioBroker.matter: 1.3.1
js-controller: 7.2.2
admin: 8.0.14
Node.js: 24.21.0
OS: Debian 13 (trixie), Raspberry Pi 5 (8 GB), arm64
Thread network via Apple border router, 8 IKEA Thread devices
SymptomsInstance is green, no log output, devices are missing in the adapter UI
After restarting the instance, the log shows the error below and the devices are still missing
The error occurred on every start attempt (e.g. 13:10, 15:36, 15:44)
Logerror: matter.0 (3445) Failed to start the controller: [crashed-dependency] MatterController unavailable due to initialization error Caused by: [endpoint-behaviors] Behaviors have errors Cause #0: [behavior-initialization] Error initializing controller.ota-provider.otaSoftwareUpdateProvider Caused by: [crashed-dependency] controller.ota-provider.softwareupdates initialization failed Cause #1: [behavior-initialization] Error initializing controller.ota-provider.softwareupdates Caused by: [crashed-dependency] DclOtaUpdateService unavailable due to initialization error Caused by: [storage-lock] Storage is locked by another process (pid 2087) at acquireLock (@matter/nodejs/src/fs/lock-utils.ts:139:19) at acquireDirectoryLock (@matter/nodejs/src/fs/lock-utils.ts:90:5) at DatafileRoot.#acquireRef (@matter/general/src/storage/DatafileRoot.ts:74:29) at FlatFileBlobStorageDriver.initialize (@matter/nodejs/src/storage/fs/FlatFileBlobStorageDriver.ts:46:9) at StorageService.#openBlobFilesystem (@matter/general/src/storage/StorageService.ts:395:13)Analysis
ps -p 2087 returns nothing, so the process named in the error does not exist anymore.
fuser on the lock file shows no process holding it.
The directory iobroker-data/matter.0/ota/ contained:
matter.lock (0 bytes)
matter.pid (content: 2087 999e67500e993e0a)
driver.json
Both matter.lock and matter.pid were dated the previous day (Oct 19, 15:20), i.e. left over from an earlier run.
Workaroundiob stop matter.0 mv iobroker-data/matter.0/ota/matter.pid iobroker-data/matter.0/ota/matter.lock <somewhere else> iob start matter.0After this, all 8 nodes connected again immediately.
Expected behavior
A stale lock (PID not running) should be detected and ignored or cleaned up, and the lock should be released on adapter shutdown or termination. Even if the lock cannot be acquired, a failing OTA service should not prevent the whole controller from starting.
Könnte vielleicht dann auftreten, wenn ich den „update“ Knop klicke.
Allerdings ist Claude gerade wieder aufgebraucht. Werde ich morgen mit ihm weiter bereden.@darkblu Die Analyse passt. Mit dem Netzwerk hat das nichts zu tun: Der Controller startet gar nicht, weil im Verzeichnis
iobroker-data/matter.0/ota/eine alte Sperre von einem früheren Prozess liegen bleibt. Deshalb hilft auch der Neustart der Instanz nicht, nur der Reboot oder das Löschen der Dateien.Bis es behoben ist, ist dein Workaround in Ordnung:
iob stop matter.0 rm /opt/iobroker/iobroker-data/matter.0/ota/matter.lock /opt/iobroker/iobroker-data/matter.0/ota/matter.pid iob start matter.0Bitte kopier die Analyse auch in dein Issue https://github.com/ioBroker/ioBroker.matter/issues/898, vor allem den Inhalt vom Verzeichnis
otaund die Uhrzeit der Dateien. Spannend wäre auch, was um die Zeit der Dateien (19.10. 15:20) im Log passiert ist: Wurde die Instanz da gestoppt, gab es ein Update oder einen Neustart vom js-controller?In matter.js wurde in letzter Zeit an diesen Sperrdateien einiges geändert, und die nächste Adapterversion bringt ein neueres matter.js mit. @apollon77 kann bestimmt sagen, ob dein Fall damit erledigt ist.
-
-
@bluefox ,
gestern um 15:20:00 bis 15:20:59 sind im Log über 1500 Sachen passiert.
Ich blicke da aber nicht durch.Die Dateien aus dem ota Ordner habe ich auch bei Github hochgeladen, bzw nur die .json, die .pid und .lock gehen nicht.
Allerdings ist die .lock leer,
in der .pid steht: 3751 228c20699dd9506edie sind aber auch von heute, siehe screenshot:

-
@bluefox ,
gestern um 15:20:00 bis 15:20:59 sind im Log über 1500 Sachen passiert.
Ich blicke da aber nicht durch.Die Dateien aus dem ota Ordner habe ich auch bei Github hochgeladen, bzw nur die .json, die .pid und .lock gehen nicht.
Allerdings ist die .lock leer,
in der .pid steht: 3751 228c20699dd9506edie sind aber auch von heute, siehe screenshot:

@darkblu Dass die beiden Dateien heute wieder da sind, ist normal. Die laufende Instanz legt sie beim Start an und hält die Sperre, solange sie läuft. Zum Problem wird es erst, wenn der Prozess weg ist und die Dateien liegen bleiben. Prüf mal, ob 3751 gerade deine matter.0 ist:
ps -fp 3751Wenn dort matter.0 steht, ist alles in Ordnung.
Die 1500 Zeilen musst du nicht alle lesen. Uns interessiert nur, was matter.0 und der Host um die Zeit gemacht haben:
zgrep "2026-10-19 15:[12]" /opt/iobroker/log/iobroker.2026-10-19.log* | grep -E "matter\.0|host\." | head -200Poste die Ausgabe bitte hier oder im Issue. Wichtig ist vor allem, ob die Instanz da gestoppt oder neu gestartet wurde und ob dabei "send kill signal" oder ein Exit-Code auftaucht.
Damit wir das nächste Mal direkt sehen, was passiert: Wenn es wieder auftritt, lösch die Dateien erst nach diesem Befehl:
ls -la --time-style=full-iso /opt/iobroker/iobroker-data/matter.0/ota/ cat /opt/iobroker/iobroker-data/matter.0/ota/matter.pidDann suchen wir im Log nach genau dieser Uhrzeit und PID.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden