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

Schmello

Benutzer
Mitglied seit
30. Jan 2018
Beiträge
61
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
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
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. Jan 2018
Beiträge
61
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
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
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. Sep 2020
Beiträge
3
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. Sep 2020
Beiträge
3
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.
 

Fuga

Benutzer
Mitglied seit
14. Sep 2020
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Bei mir war es der Stick. Habe einen neuen bestellt und ging auf Anhieb
 

boardman

Benutzer
Mitglied seit
30. Jun 2008
Beiträge
25
Punkte für Reaktionen
1
Punkte
3
Mein Stick Läuft im RaspPi, ich versuche nun auf die DS920+ zu migrieren...

mit dmesg sehe ich das:
1601201349807.png

also ttyUSB0

im Docker Container habe ich die Umgebungsvariable ergänzt wie hier beschrieben:
https://registry.hub.docker.com/r/buanet/iobroker/
1601201411097.png

Dennoch habe ich im IOBrocker keine Serial Devices... fehlt da noch was?
 

boardman

Benutzer
Mitglied seit
30. Jun 2008
Beiträge
25
Punkte für Reaktionen
1
Punkte
3
Nachtrag: hab auch mit /dev/ttyACM0 versucht, aber kein Erfolg
/$ lsusb
|__usb1 1d6b:0002:0404 09 2.00 480MBit/s 0mA 1IF (Linux 4.4.59+ xhci-hcd xHCI Host Controller 0000:00:15.0) hub
|__1-2 0403:6001:0600 00 2.00 12MBit/s 200mA 1IF (Hjelmslund Electronics USB485 Iso stick HEWMFIZ2)
|__1-4 f400:f400:0100 00 2.00 480MBit/s 200mA 1IF (Synology DiskStation 7F00048809EFD657)
|__usb2 1d6b:0003:0404 09 3.00 5000MBit/s 0mA 1IF (Linux 4.4.59+ xhci-hcd xHCI Host Controller 0000:00:15.0) hub
 

mgutt

Benutzer
Mitglied seit
14. Nov 2012
Beiträge
429
Punkte für Reaktionen
20
Punkte
18
Mach es mal so wie es Docker vorsieht. Und zwar mit dem --device Flag:
https://stackoverflow.com/a/24231872/318765
Die Umgebungsvariable ist nur für die Anwendung im Container. Der Container selbst muss aber erstmal überhaupt das Recht erhalten auf eine Hardware-Ressource zugreifen zu dürfen. Denk dran, dass der Container vollkommen isoliert wird von der Host-Maschine.

Allerdings frage ich mich, ob der IOBroker Container die richtige Stelle dafür auf. Müsste man das nicht mit dem deconz Container machen. Der enthält doch überhaupt erst die Treiber vom Stick oder sind die auch im IOBroker Container enthalten?
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat