IOBroker Zigbee Stick nur im Modus *hoher Priorität ausführen* erkannt.

Schmello

Benutzer
Mitglied seit
30. Januar 2018
Beiträge
46
Punkte für Reaktionen
0
Punkte
6
Ich habe mir IOBroker im Docker eingerichtet. (buanet/ioBroker)
Danach in die Umgenungvariablen USBDEVICES - /dev/ttyACM0 eingetragen und den Container gestartet..
Im Log tauchen folgende Einträge auf.
Code:
zigbee.0    2020-08-29 12:53:37.803    info    (594) Terminated (NO_ERROR): Without reason
zigbee.0    2020-08-29 12:53:37.802    info    (594) terminating
zigbee.0    2020-08-29 12:53:37.778    error    at stop (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:8270:22)
zigbee.0    2020-08-29 12:53:37.778    error    at Zigbee.emit (events.js:315:20)
zigbee.0    2020-08-29 12:53:37.778    error    at Zigbee.onUnload (/opt/iobroker/node_modules/iobroker.zigbee/main.js:438:41)
zigbee.0    2020-08-29 12:53:37.778    error    at ZigbeeController.stop (/opt/iobroker/node_modules/iobroker.zigbee/lib/zigbeecontroller.js:302:20)
zigbee.0    2020-08-29 12:53:37.778    error    at ZigbeeController.callExtensionMethod (/opt/iobroker/node_modules/iobroker.zigbee/lib/zigbeecontroller.js:185:42)
zigbee.0    2020-08-29 12:53:37.778    error    at DeviceAvailability.stop (/opt/iobroker/node_modules/iobroker.zigbee/lib/zbDeviceAvailability.js:118:43)
zigbee.0    2020-08-29 12:53:37.778    error    at ZigbeeController.getClients (/opt/iobroker/node_modules/iobroker.zigbee/lib/zigbeecontroller.js:199:49)
zigbee.0    2020-08-29 12:53:37.778    error    at Controller.getDevices (/opt/iobroker/node_modules/zigbee-herdsman/dist/controller/controller.js:231:31)
zigbee.0    2020-08-29 12:53:37.778    error    at Function.all (/opt/iobroker/node_modules/zigbee-herdsman/dist/controller/model/device.js:234:16)
zigbee.0    2020-08-29 12:53:37.778    error    at Function.loadFromDatabaseIfNecessary (/opt/iobroker/node_modules/zigbee-herdsman/dist/controller/model/device.js:214:55)
zigbee.0    2020-08-29 12:53:37.778    error    (594) TypeError: Cannot read property 'getEntries' of null
zigbee.0    2020-08-29 12:53:37.776    error    (594) unhandled promise rejection: Cannot read property 'getEntries' of null
Unhandled    2020-08-29 12:53:37.775    error    promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
zigbee.0    2020-08-29 12:53:37.773    error    at processTicksAndRejections (internal/process/task_queues.js:97:5))
zigbee.0    2020-08-29 12:53:37.773    error    at ZigbeeController.stop (/opt/iobroker/node_modules/iobroker.zigbee/lib/zigbeecontroller.js:306:33)
zigbee.0    2020-08-29 12:53:37.773    error    at Controller.stop (/opt/iobroker/node_modules/zigbee-herdsman/dist/controller/controller.js:182:16)
zigbee.0    2020-08-29 12:53:37.773    error    at __awaiter (/opt/iobroker/node_modules/zigbee-herdsman/dist/controller/controller.js:23:12)
zigbee.0    2020-08-29 12:53:37.773    error    at new Promise (<anonymous>)
zigbee.0    2020-08-29 12:53:37.773    error    at /opt/iobroker/node_modules/zigbee-herdsman/dist/controller/controller.js:27:71
zigbee.0    2020-08-29 12:53:37.773    error    at Generator.next (<anonymous>)
zigbee.0    2020-08-29 12:53:37.773    error    at Controller.<anonymous> (/opt/iobroker/node_modules/zigbee-herdsman/dist/controller/controller.js:186:49)
zigbee.0    2020-08-29 12:53:37.773    error    at Function.all (/opt/iobroker/node_modules/zigbee-herdsman/dist/controller/model/group.js:88:15)
zigbee.0    2020-08-29 12:53:37.773    error    at Function.loadFromDatabaseIfNecessary (/opt/iobroker/node_modules/zigbee-herdsman/dist/controller/model/group.js:76:55)
zigbee.0    2020-08-29 12:53:37.773    error    (594) Failed to stop zigbee (TypeError: Cannot read property 'getEntries' of null
zigbee.0    2020-08-29 12:53:37.770    info    (594) Zigbee: disabling joining new devices.
zigbee.0    2020-08-29 12:53:37.764    info    (594) cleaned everything up...
zigbee.0    2020-08-29 12:53:37.763    error    at /opt/iobroker/node_modules/zigbee-herdsman/node_modules/@serialport/stream/lib/index.js:242:12
zigbee.0    2020-08-29 12:53:37.763    error    at SerialPort._error (/opt/iobroker/node_modules/zigbee-herdsman/node_modules/@serialport/stream/lib/index.js:198:14)
zigbee.0    2020-08-29 12:53:37.763    error    at SerialPort.<anonymous> (/opt/iobroker/node_modules/zigbee-herdsman/dist/adapter/deconz/driver/driver.js:95:45)
zigbee.0    2020-08-29 12:53:37.763    error    at __awaiter (/opt/iobroker/node_modules/zigbee-herdsman/dist/adapter/deconz/driver/driver.js:4:12)
zigbee.0    2020-08-29 12:53:37.763    error    at new Promise (<anonymous>)
zigbee.0    2020-08-29 12:53:37.763    error    at /opt/iobroker/node_modules/zigbee-herdsman/dist/adapter/deconz/driver/driver.js:8:71
zigbee.0    2020-08-29 12:53:37.763    error    at Generator.next (<anonymous>)
zigbee.0    2020-08-29 12:53:37.763    error    at Driver.<anonymous> (/opt/iobroker/node_modules/zigbee-herdsman/dist/adapter/deconz/driver/driver.js:97:28)
zigbee.0    2020-08-29 12:53:37.763    error    (594) Error: Error while opening serialport 'Error: Error: No such file or directory, cannot open /dev/ttyACM0'
zigbee.0    2020-08-29 12:53:37.762    error    (594) unhandled promise rejection: Error while opening serialport 'Error: Error: No such file or directory, cannot open /dev/ttyACM0'
Unhandled    2020-08-29 12:53:37.761    error    promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
Nachdem ich dann den Container mit hoher Priorität ausgeführt habe, wurde der Stick erkannt und funktioniert.
Ich habe irgendwo gelesen das das ausführen mit hoher Priorität wenn möglich nicht benutzt werden sollte, da es ein Sicherheitsrisiko ist.
Gibt es noch eine Möglichkeit den Container wieder normal zu starten und das der Stick trotzdem erkannt wird?
 

haydibe

Benutzer
Mitglied seit
12. April 2016
Beiträge
730
Punkte für Reaktionen
11
Punkte
38
Hast Du es nach der Anleitung des Image Maintainers aufgesetzt?

Falls nicht, würde ich mich daran halten!

Ich finde nur die Verwendung von MACVLAN zweifelhaft (meist wird es von Ahnungslosen "erzwungen", weil sie den Container verwenden wollen wie eine VM - im Gegensatz zu einer VM ist ein Container keine eigene Maschine, sondern nur(!) ein isolierter Prozess auf dem Host-Kernel).
 

Schmello

Benutzer
Mitglied seit
30. Januar 2018
Beiträge
46
Punkte für Reaktionen
0
Punkte
6
Ja daran habe ich mich gehalten :)
Ist ja nicht wirklich schwer ein Container auf der Synology ans laufen zu bekommen...
Verstehe nur nicht wieso der Stick nicht erkannt wird oder erst wenn man den Container mit hoher Priorität startet.
Ist dies denn wirklich ein Sicherheitsrisiko?
 

haydibe

Benutzer
Mitglied seit
12. April 2016
Beiträge
730
Punkte für Reaktionen
11
Punkte
38
Ein Container ist im Grunde nur ein isolierter Prozess auf dem Host Kernel. Docker verwendet unter anderem Folges um die Isolation herzustellen:
- CGROUPS sind zuständig für die Kontrolle von Ressourcen (CPU,RAM, IO) - per Default sieht ein Container alle Ressourcen die der Host sieht
- Capabilites sind zuständig für die Kontrolle der Berechtigungen im Kernel - der Default werden etliche Capabilites fallen gelassen, so das der Container nur mit stark eingeschränkten Berechtigungen arbeiten kann, daher klappt das einbinden von Geräten oder mounten von Netzwerkshares direkt im Container nicht... es sei den man fügt die notwendige Capability hinzu.
- Namespaces sind Teilbereiche des Kernel, bspw. IPC, UTS, NET

Ein Container mit hoher Prorität (=priviledged mode) läuft im selben Workspace der Namespaces wie der Host und hat alle Capabilites. Wenn in solch einem Container ein Dienst läuft der aus dem Internet erreichbar ist, und es einen Exploit dafür gibt, ist es für den Angreifer möglich quasi "root Rechter" auf dem Host zu erlangen...

Update: in der Anleitung ist ein Link auf die Github-Seite vom Image, dort wiederum ist im Abschnitt "Mounting USB device" ein Link auf die Docker run Anleitung in die Sektion "Add host device to container (--device)" gesetzt. Diesen Parameter kannst Du über die Syno-UI nicht setzen. Das klappt nur über die shell oder Portainer. Danach solltest du diesen Container aber nie wieder über die Syno-UI editieren, da die gerne mal Einstellungen wegwirft, die sie nicht kennt....

Vermutung: Du hast den Stick nicht per --device reingehangen, so dass der Container versucht das Gerät zu initialisieren, ihm dafür aber benötigte capabilites fehlen - die du per Holzhammer-Methode (=privilged mode) verfügbar machst. Verwende doch lieber --device und lass den privilged mode weg.

Ich sehe gerade, der Maintainer hat zum Thema USB Devices auch einen Blogpost geschrieben: https://buanet.de/2020/02/usb-devices-im-iobroker-docker-container-nutzen/
 
Zuletzt bearbeitet:

Fuga

Benutzer
Mitglied seit
14. September 2020
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
HI,

ich habe eine DS918+ und schon eine ganze Weile iobroker über docker lauf. Ich wollte jetzt auch den Zigbee Stick installieren aber bekomme es einfach nicht hin. Ich habe den Container über Portainer erstellt MACVLAN benutze ich auch aber bisher keine Probleme.
Die Synology selber erkennt den STick und er schaltet auch sofort auf Grün:
1600118427150.png
Ich habe die Umgenungvariablen USBDEVICES - /dev/ttyACM0 eingetragen und ihn gestartet mit folgender Meldung:

Usb-device-support is activated by ENV.
Setting permissions for /dev/ttyACM0...
chmod: Zugriff auf '/dev/ttyACM0' nicht möglich: Datei oder Verzeichnis nicht gefunden
Done.

Das Verzeichniss gibt es nicht. Habe ich irgendetwas übersehen? Muss man den Stick irgendwie noch initialisieren?
Den Link habe ich auch probiert: https://buanet.de/2020/02/usb-devices-im-iobroker-docker-container-nutzen/
aber die Seite ist wohl gerade offline.
 

Fuga

Benutzer
Mitglied seit
14. September 2020
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Komisch ist auch das die Grüne LED dauerhaft leuchtet sobald ich ihn reinstecke und das gleich nach dem auspacken.
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten, denn dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit einem hohen technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive oder Themen fremde Werbung. Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.