Ankündigung

Einklappen
Keine Ankündigung bisher.

KNXD funktioniert nach Debian Upgrade nicht mehr

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    KNXD funktioniert nach Debian Upgrade nicht mehr

    Hallo Leuts,

    nun hat es mich auch getroffen und ich finde keine Lösung :-(

    Mein Beagle lief mit Debian 8 und SHNG 1.5.1 prima. Wegen Letsencrypt brauchte ich ein Update, also auf Debian 9 gegangen.
    NGINX und OWserver liefen, KNXD startete nicht. Da dann schon Meldungen kamen, Python wäre bald aus der Wartung gleich auf Debian 10.
    Während des Upgrades kamenFragen zum KNXD, ob alte Versionen erhalten werden sollen, hab ich mit ja - also N für nicht ersetzen - entschieden, vielleicht falsch?

    KNXD wird gestartet, tut aber nix...

    systemctl status knxd

    ● knxd.service - KNX Daemon
    Loaded: loaded (/lib/systemd/system/knxd.service; enabled; vendor preset: enabled)
    Active: active (running) since Sun 2020-12-27 14:31:05 CET; 1min 5s ago
    Main PID: 889 (knxd)
    Tasks: 1 (limit: 1036)
    Memory: 272.0K
    CGroup: /system.slice/knxd.service
    └─889 /usr/bin/knxd -e 1.1.126 -E 1.2.150:8 -c -b ip:

    Started KNX Daemon.

    systemctl status knxd.socket

    ● knxd.socket - KNX Daemon (socket)
    Loaded: loaded (/lib/systemd/system/knxd.socket; enabled; vendor preset: enabled)
    Active: active (running) since Sun 2020-12-27 14:30:45 CET; 11min ago
    Listen: /var/run/knx (Stream)
    [::]:6720 (Stream)
    CGroup: /system.slice/knxd.socket

    Listening on KNX Daemon (socket).




    smarthome@ibbgateway:~$ knxtool groupsocketlisten ip:localhost

    DA RÜHRT SICH AUF DEM BUS ABER NICHTS...

    knxtool groupswrite ip:localhost 1/3/34 1
    Send request
    Da passiert auch nichts...

    VERMUTUNG:
    Mein IBB Cape mit der KNX Anbindung wird nicht benutzt. Ich werde Robert mal kontaktieren...


    Kann jemand von Euch mal erklären, was sich von Debian 8 nach Debian 10 (9) geändert hat und warum mein Buszugriff nach dem Upgrade nicht mehr läuft?

    Vielen Dank!
    Gruß
    Jürgen
    Zuletzt geändert von Jürgen; 27.12.2020, 14:51.

    #2
    Ich vermute, dass IBB Cape sitzt auf dem verwendeten Beagle Bord? Da wird der TPUART also über TTL sich irgendwo als /dev/tty... melden. Zeig dir doch mal an, was es da so gibt: "ls -la /dev/tty*" wobei du alle tty0-xx uns nicht posten musst.

    Was mich etwas verwirrst, du verwendest einmal ipt:192.168.1.231 und einmal ip:192.168.1.231 (ohe t). Wobei ich eigentlich erwarten würde, dass du dich über den seriellen Anschluss verbinden müsstest.

    Kommentar


      #3
      Hallo Tobias,
      ja, Cape auf dem BBB. ICh habe mal die Einstellungen vom Energiezwerg übernommen und die KNXD.ini gepflegt (https://knx-user-forum.de/forum/%C3%...B6glich/page15)

      Er hat da als Device /dev/ttyS2

      ls -la /dev/tty bringt bei mir:

      crw-rw-rw- 1 root tty 5, 0 Dez 27 15:19 /dev/tty

      Muss ich da dann die ttyS5 eintragen?

      Bin völlig verwirrt...

      Syslog sagt auch nicht wirklich was:

      Started KNX Daemon.
      Dec 27 15:15:47 ibbgateway systemd[1]: knxd.service: Main process exited, code=exited, status=1/FAILURE
      Dec 27 15:15:47 ibbgateway systemd[1]: knxd.service: Failed with result 'exit-code'.



      [A.tcp]
      server = knxd_tcp
      systemd-ignore = true
      [C.tpuarts]
      device = /dev/ttyS2
      driver = tpuart
      [debug-server]
      name = mcast:knxd
      [debug-tunnel]
      trace-mask = 0x0
      [main]
      cache = B.cache
      addr = 1.1.126
      client-addrs = 1.1.150:8
      connections = server,A.tcp,C.tpuarts
      systemd = systemd
      [server]
      debug = debug-server
      discover = true
      server = ets_router
      tunnel = tunnel
      [tunnel]
      debug = debug-tunnel


      Gruß Jürgen

      Kommentar


        #4
        ls -l /dev/tty* du musst das * als Wildcard anhängen. Die Bezeichnung der /dev/ttyS wird "dynamisch" gemacht. Es kann sein, dass es jetzt ttyS1 ist.

        Kommentar


          #5
          Einmal mit Profis arbeiten :-(
          Das scheinen die interessanten zu sein:

          crw--w---- 1 root tty 247, 0 Dez 27 15:16 /dev/ttyGS0
          lrwxrwxrwx 1 root root 5 Dez 27 15:15 /dev/ttyO0 -> ttyS0
          lrwxrwxrwx 1 root root 5 Dez 27 15:15 /dev/ttyO1 -> ttyS1
          lrwxrwxrwx 1 root root 5 Dez 27 15:15 /dev/ttyO2 -> ttyS2
          lrwxrwxrwx 1 root root 5 Dez 27 15:15 /dev/ttyO4 -> ttyS4
          crw--w---- 1 root tty 4, 64 Dez 27 15:15 /dev/ttyS0
          crw-rw---- 1 root dialout 4, 65 Dez 27 15:15 /dev/ttyS1
          crw-rw---- 1 root dialout 4, 66 Dez 27 15:15 /dev/ttyS2
          crw-rw---- 1 root dialout 4, 67 Dez 27 15:15 /dev/ttyS3
          crw-rw---- 1 root dialout 4, 68 Dez 27 15:15 /dev/ttyS4
          crw-rw---- 1 root dialout 4, 69 Dez 27 15:15 /dev/ttyS5

          Gruß Jürgen


          Kommentar


            #6
            Mach mal "ls -l /dev/serial/by-path". Einer davon ist ein Symlink auf deinen knx-Port. Verwende in der knxd-Konfiguration diesen Symlink. Der ändert sich garantiert nicht nach Reboot. Du musst außerdem noch dem knxd Zugriff gewähren, das geht am einfachsten mit einer systemd-Ergänzungsregel:

            Code:
            mkdir /etc/systemd/system/knxd.service.d
            cat >/etc/systemd/system/knxd.service.d/owner.conf <<END
            [Service]
            ExecStartPre=!chown knxd /dev/serial/by-path/whatever
            END
            DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

            Kommentar


              #7
              Hallo und Danke für Eure Hilfe!
              @Smurf: ls: Zugriff auf '/dev/serial/by-path' nicht möglich: Datei oder Verzeichnis nicht gefunden

              das mkdir verstehe ich ja, aber was sagt mir der Code? Sorry, bin Windowsuser...

              cat >/etc/systemd/system/knxd.service.d/owner.conf <<END
              [Service]
              ExecStartPre=!chown knxd /dev/serial/by-path/whatever
              END


              Ich habe in einem anderen Beitrag nun die passende Konfiguration eines anderen Cape Users gefunden:

              KNXD_OPTS="-e 1.1.126 -E 0.0.2:8 -c -D -R -T -S -b tpuarts:/dev/ttyS2"

              Für den Service Start habe ich nun wieder die knxd.conf eingegeben:

              sudo systemctl edit --full knxd

              [Unit]
              Description=KNX Daemon
              After=network.target knxd.socket
              Requires=knxd.socket

              [Service]
              EnvironmentFile=/etc/knxd.conf
              ExecStart=/usr/bin/knxd /etc/knxd.conf
              User=knxd
              Group=knxd
              Type=notify

              #Restart=on-failure
              #RestartSec=10

              [Install]
              WantedBy=multi-user.target network-online.target
              Also=knxd.socket


              Ich drehe mich im Kreis :-(

              Dez 27 18:19:14 ibbgateway knxd[1057]: E00000084: [ 1:main] There is no KNX addr= in section 'main'.
              Dez 27 18:19:14 ibbgateway knxd[1057]: F00000109: [ 1:main] Error setting up the KNX router.
              Dez 27 18:19:14 ibbgateway systemd[1]: knxd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT

              Morgen suche ich weiter :-(

              Gruß Jürgen

              Kommentar


                #8
                Zitat von Jürgen Beitrag anzeigen
                Hallo und Danke für Eure Hilfe!
                @Smurf: ls: Zugriff auf '/dev/serial/by-path' nicht möglich: Datei oder Verzeichnis nicht gefunden
                Ah. Sorry, die gibt es erst mit Debian 11 serienmäßig. Du wirst stattdessen eine udev-Regel bauen müssen.

                Das Prinzip ist zB hier beschrieben: https://unix.stackexchange.com/quest...r-input-device
                DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

                Kommentar


                  #9
                  Hallo Smurf..

                  Hmpf, Chinesisch....

                  Ich suche nun schon seit Stunden, was sich mit knxd 0.14 auf Debian 10 so grundlegend geändert hat, dass meine Cape KNX Schnittstelle nicht mehr läuft.

                  Vorher funktionierte:
                  \etc\systemd\system\eibd.service mit den Einstellungen

                  [Service]
                  ExecStart=/usr/bin/eibd --eibaddr 1.1.126 --GroupCache --Server --Routing --Tunnelling --Discovery --tpuarts-ack-all-group --listen-tcp --listen-local tpuarts:/dev/ttyS2


                  Nun habe ich in der knxd.conf

                  KNXD_OPTS="-e 1.1.126 -E 1.1.150:8 -D -R -T -S tpuarts:/dev/ttyS2"

                  Und bekomme im journalctl -xe

                  Dez 27 20:39:10 ibbgateway knxd[1316]: E00000084: [ 1:main] There is no KNX addr= in section 'main'.
                  Dez 27 20:39:10 ibbgateway knxd[1316]: F00000109: [ 1:main] Error setting up the KNX router.
                  Dez 27 20:39:10 ibbgateway systemd[1]: knxd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
                  -- Subject: Unit process exited

                  Was ist "section main"? Der Fehler wird oft bei Google gefunden, aber genau erklärt nicht. Ist das die Zeile in der knxd.conf?

                  Kollege HOTZEN beschreibt genau dieses Problem hier: (long argument-names got invalid when upgrading from 0.10 to 0.14?)

                  https://github.com/knxd/knxd/issues/259


                  Die Lösung sieht nach einer knxd.ini Datei aus, statt der knxf.conf - eine Erklärung dazu habe ich aber auch noch nicht...

                  Smurf hat mal geschrieben:

                  Test: v0.14 ist so weit

                  Größere Änderungen:
                  • Es gibt jetzt eine Konfigurationsdatei. Wenn man statt "knxd" das Programm "knxd_args" aufruft, werden die alten Optionen als INI-Datei ausgegeben. Den knxd kann man dann mit der so produzierten Datei (als einziges Argument) aufrufen.

                  knxd_args finde ich nicht bei mir, ist die knxd.ini nun also Standard?

                  Bin völlig verwirrt... 😵

                  Gruß Jürgen







                  Kommentar


                    #10
                    Zitat von Jürgen Beitrag anzeigen
                    Nun habe ich in der knxd.conf

                    KNXD_OPTS="-e 1.1.126 -E 1.1.150:8 -D -R -T -S tpuarts:/dev/ttyS2"
                    Setze noch ein -b vor die Schnittstelle.

                    Die Lösung sieht nach einer knxd.ini Datei aus, statt der knxf.conf - eine Erklärung dazu habe ich aber auch noch nicht...
                    die beiden Varianten sind gleichwertig. Entweder knxd mit einem Argument aufrufen, das muss dann der Name des ini File sein. Oder dann alle Parameter gemäss KNXD_OPTS. Ich kann dir aber nicht sagen wie in deiner systemd Konfig die Argumente aus KNXD_OPTS an knxd übergeben werden. Gemäss erstem Post gelingt es scheinbar.

                    knxd_args finde ich nicht bei mir, ist die knxd.ini nun also Standard?
                    knxd_args befindet sich nicht im Standard Path für ausführbare Programme, such mal unter /usr/lib oder nimm dpkg -L <Paketname> zu Hilfe


                    EIB/KNX, VISU mit knxd + linknx + knxweb, Steuerbefehle via SMS und Email mit postfix + procmail

                    Kommentar


                      #11
                      Hallo Leuts,

                      vielen Dank für Eure Ideen, Licht schalten über knxd funktioniert nun. (Smarthome startet noch nicht, aber das ist eine andere Baustelle, da mache ich gleich die Installation von 1.7.2)

                      Hier zur Info für andere Anwender des IBB Capes:

                      sudo systemctl edit --full knxd

                      [Unit]
                      Description=KNX Daemon
                      After=network.target knxd.socket
                      Requires=knxd.socket

                      [Service]
                      EnvironmentFile=/etc/knxd.ini
                      ExecStart=/usr/bin/knxd /etc/knxd.ini
                      User=knxd
                      Group=knxd
                      Type=notify

                      Restart=on-failure
                      RestartSec=10

                      [Install]
                      WantedBy=multi-user.target network-online.target
                      Also=knxd.socket

                      /etc/knxd.ini

                      [A.tcp]
                      server = knxd_tcp
                      #systemd-ignore = true
                      [C.tpuarts]
                      device = /dev/ttyS2
                      driver = tpuart
                      [debug-server]
                      name = mcast:knxd
                      [debug-tunnel]
                      #trace-mask = 0x0
                      [main]
                      cache = B.cache
                      addr = 1.1.126
                      client-addrs = 1.1.150:8
                      connections = server,A.tcp,C.tpuarts
                      systemd = systemd
                      [server]
                      debug = debug-server
                      discover = true
                      server = ets_router
                      tunnel = tunnel
                      [tunnel]
                      debug = debug-tunnel

                      Gruß Jürgen

                      Kommentar


                        #12
                        Lange Argumentnamen funktionieren immer noch, aber der knxd kann jetzt mehr als eine Schnittstelle, daher müssen die direkt vor die Zielobjekte.

                        DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

                        Kommentar


                          #13
                          Ich benutze seit Jahren das Cape vom Robert. In den letzten Posts "Beaglebone mit Cape" wurde das Debian Upgrade auf Version 10 recht gut beschrieben.
                          Meine KNXD Einstellungen in der knxd.conf waren

                          Code:
                          KNXD_OPTS="-e 1.0.1 -E 1.0.200:8 -u /tmp/eib --GroupCache --Discovery --Routing --Tunnelling --Server --tpuarts-ack-all-group --layer2=tpuarts:/dev/ttyS2"
                          Ein
                          Code:
                          /usr/lib/knxd_args -e 1.0.1 -E 1.0.200:8 -u /tmp/eib --GroupCache --Discovery --Routing --Tunnelling --Server --tpuarts-ack-all-group --layer2=tpuarts:/dev/ttyS2
                          ergab folgende Einstellung, die ich dann in die knxd.ini übernahm.

                          [A.unix]
                          path = /tmp/eib
                          server = knxd_unix
                          systemd-ignore = false

                          [C.tpuarts]
                          ack-group = true
                          device = /dev/ttyS2
                          driver = tpuart
                          [debug-server]
                          name = mcast:knxd

                          [main]
                          addr = 1.0.1
                          cache = B.cache
                          client-addrs = 1.0.200:8
                          connections = A.unix,server,C.tpuarts
                          systemd = systemd

                          [server]
                          debug = debug-server
                          discover = true
                          router = router
                          server = ets_router
                          tunnel = tunnel

                          Soweit funktioniert alles...oder irgendetwas vergessen???

                          Kommentar


                            #14
                            Nahmd..

                            Ich gebe auf..
                            Mit 4.4. lief noch alles, nun habe ich einen Weg gefunden, auch meinen Kernel auf zunächst 4.19 zu heben, nun startet shng tzwar noch, der KNX Dienst aber nicht mehr und der OW Server auch nicht.
                            Scheinbar wird das Cape mit dem neuen Kernel nicht erkannt :-(

                            Den Kernel hab ich von Robert Nelsen aus dem Beagle Update Script :-(
                            Die knxd.ini habe ich von Daniel übernommen, nur die Adresse geändert.
                            Macht aber erst mit dem neuen Kernel Probleme :-(


                            Jan 9 17:23:22 ibbgateway kernel: [ 28.317135] pvrsrvkm: loading out-of-tree module taints kernel.
                            Jan 9 17:23:23 ibbgateway systemd[1]: knxd.service: Service RestartSec=10s expired, scheduling restart.
                            Jan 9 17:23:23 ibbgateway systemd[1]: knxd.service: Scheduled restart job, restart counter is at 1.
                            Jan 9 17:23:23 ibbgateway systemd[1]: Stopped KNX Daemon.
                            Jan 9 17:23:23 ibbgateway systemd[1]: knxd.service: Ignoring invalid environment assignment 'systemd-ignore=false': /etc/knxd.ini
                            Jan 9 17:23:23 ibbgateway kernel: [ 28.950320] [drm] Initialized pvr 1.17.4948957 20110701 for 56000000.sgx on minor 1
                            Jan 9 17:23:23 ibbgateway systemd[1]: knxd.service: Ignoring invalid environment assignment 'ack-group=true': /etc/knxd.ini
                            Jan 9 17:23:23 ibbgateway systemd[1]: knxd.service: Ignoring invalid environment assignment 'client-addrs=1.1.150:8': /etc/knxd.ini
                            Jan 9 17:23:23 ibbgateway systemd[1]: Starting KNX Daemon...
                            Jan 9 17:23:23 ibbgateway knxd[808]: E00000067: [23:C.tpuarts] Opening /dev/ttyS2 failed: Permission denied
                            Jan 9 17:23:23 ibbgateway knxd[808]: F00000105: [20:C.tpuarts] Link down, terminating
                            Jan 9 17:23:23 ibbgateway systemd[1]: Started KNX Daemon.
                            Jan 9 17:23:23 ibbgateway systemd[1]: knxd.service: Main process exited, code=exited, status=1/FAILURE
                            Jan 9 17:23:23 ibbgateway systemd[1]: knxd.service: Failed with result 'exit-code'.

                            Ich bleibe besser auf 4.4. :-( Läuft ja

                            Gruß Jürgen

                            Kommentar


                              #15
                              Code:
                              Ignoring invalid environment assignment 'systemd-ignore=false': /etc/knxd.ini
                              Äh, das sieht so aus, als würde in deiner knxd.service-Datei ziemlicher Unfug drinstehen.

                              Korrekt ist: in der knxd.service findest du
                              Code:
                              EnvironmentFile=/etc/knxd.conf
                              und in der knxd.conf steht der Verweis auf die .ini-Datei:
                              Code:
                              KNXD_OPTS=/etc/knxd.ini
                              DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

                              Kommentar

                              Lädt...
                              X