HM-MOD-RPI-PCB in docker-rpi nicht ansprechbar

Hallo zusammen,
ich versuche gerade Homegear in Docker auf einem Raspberry zum Laufen zu bekommenlaut Anleitung hier. Leider scheint die Anbindung an das HM-MOD-RPI-PCB nicht zu funktionieren. In den logs taucht immer wieder die Zeile
Module HomeMatic BidCoS: HM-MOD-RPI-PCB "My-HM-MOD-RPI-PCB": Error in file PhysicalInterfaces/Hm-Mod-Rpi-Pcb.cpp line 1139 in function void BidCoS::Hm_Mod_Rpi_Pcb::doInit(): Failed to open GPIO value file "/sys/class/gpio/gpio18/value": Permission denied
auf. Auch wenn ich den Container im priveliged mode starte.

Mein docker-compose.yml file sieht übrigens so aus. Hat jemand eine Idee?

 version: "3"
    services:
      homegear:
        image: homegear/homegear:stable
        container_name: homegear
        restart: unless-stopped
        ports:
          - 2001:2001
          - 2002:2002
          - 2003:2003
        environment:
          - HOST_USER_ID=111
          - HOST_USER_GID=115
          - TZ=Europe/Berlin
        privileged: true
        devices:
          # fuer ddashomematic device
                - /dev/ttyAMA0:/dev/ttyAMA0:rwm
        network_mode: host  # wegen UPNP discovery
        volumes:
          - /opt/homegear/etc:/etc/homegear:Z
          - /opt/homegear/lib:/var/lib/homegear:Z
          - /opt/homegear/log:/var/log/homegear:Z
          - /sys:/sys
          - /dev:/dev

Hat einer von Euch eine Idee?
Vielen Dank schon mal.

Hallo @dolittle,

wie sind denn im Container die Berechtigungen auf /sys/class/gpio/gpio18/value? Existiert die Datei?

Viele Grüße

Sathya

Hallo,
ich war eine ganze Weile mit anderen Dingen beschäftigt, daher erst jetzt meine Antwort.

$ ls -al /sys/class/gpio/gpio18/value
-rwxrwx--- 1 root 997 4096 Apr 12 08:20 /sys/class/gpio/gpio18/value

Der container läuft mit dem homegear user des host systems user id 111 und group id 115

$ id homegear
uid=111(homegear) gid=115(homegear) Gruppen=115(homegear),20(dialout),999(spi),997(gpio)

Wie man sehen kann, hat der user 111 auch die gruppe 997, um auf die Datei zugreifen zu können.

Wenn man den container mit “root” startet, erscheint die Fehlermeldung nicht. Aber das möchte ich nicht.

Hallo @dolittle,

sorry für die späte Antwort. Die Berechtigungen sehen soweit gut aus. Keine Ahnung, warum es nicht will, allerdings wirst du nicht der einzige sein, der das Problem hat. Ich vermute mal, du kannst auch nicht über die Konsole im Container in value schreiben, oder? Ich würde die Frage noch einmal in einem Dockerforum stellen und bin selbst neugierig, was die Lösung ist.

Viele Grüße

Sathya

Hi,
jetzt habe ich etwas gefunden. Tatsächlich hatte ich einen Fehler bei den Benutzerberechtigungen. Der obige Auszug war aus dem Host Betriebssystem.
Der User im Container ist nicht Mitgliet in 997 und das war genau auch der Fehler. Nachdem der User standardmäßig im Docker Image nicht in der Gruppe 997 ist, muss man die Gruppe über das Environment setzen.

1 Like

Hey @dolittle
Ich habe aktuell dasselbe Problem, was genau meinst du mit

Nachdem der User standardmäßig im Docker Image nicht in der Gruppe 997 ist, muss man die Gruppe über das Environment setzen.

Sorry, ich bin noch recht neu in dem Thema docker.

Alright, habe es bereits gefunden, mit environment is der Docker Container gemeint, d.h man muss folgendes im Container ausführen:

groupadd -g 997 gpio
usermod -a -G 997 homegear
1 Like

Hallo,
das ist eine Lösung, aber dann muss man das bei jeder Container Neuerstellung, wie nach einem Update erneut ausführen. Ich habe das in mein docker compose file integriert, hier ist meines. Fehlende UPNP discovery habe ich nie vermisst und damit dann auch nicht den Port 1900 blockiert.

version: "3"

services:
  homegear:
    image: homegear/homegear:stable
    container_name: homegear
    restart: unless-stopped
    ports:
      - 2001:2001
      - 2002:2002
      - 2003:2003
    environment:
      - HOST_USER_ID=111
      - HOST_USER_GID=997
      - TZ=Europe/Berlin
    privileged: true
    devices:
      - /dev/ttyAMA0:/dev/ttyAMA0:rwm
        #    network_mode: host  # wegen UPNP discovery
    volumes:
      - ./etc:/etc/homegear:Z
      - ./lib:/var/lib/homegear:Z
      - ./log:/var/log/homegear:Z

oder Du fügst in den bei docker run die Option --user=[ user | user:group | uid | uid:gid | user:gid | uid:group ] hinzu, dann geht das auch und funktioniert auch bei upddates.

Vielleicht hilft das.

2 Likes