knxd mit B&J 6123 USB

Begonnen von pirndi, 30 Mai 2016, 21:19:03

Vorheriges Thema - Nächstes Thema

pirndi

Hallo!


Ich habe einen kleinen Homeserver auf den ich FHEM laufen habe (kein raspi sonder x64)
Ich habe als Linux Lubuntu 16.04 drauf. Ich bin gerade dabei alles auf den neuesten Stand zu bringen und habe deshalb auch den umstieg von eibd auf knxd gewagt.
Ich hatte bereits mit eibd probleme mit dem autostart und habe sie jetzt wieder mit knxd.

wenn ich knxd mit sudo im Terminal starte dann läuft alles (zugriff mit ETS und FHEM)
Aber als Dienst will es einfach nicht starten.
Ich vermute das es ein Berechtigungsproblem ist da er es als user knxd starten will. Kann das sein?

wenn ich die knxd.conf original lasse dann startet auch knxd. Sobald ich die Parameter ändere bekomme ich einen  fehler

Zitathserver@Server-Daniel:~$ systemctl status knxd.service
? knxd.service - KNX Daemon
   Loaded: loaded (/lib/systemd/system/knxd.service; disabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Mon 2016-05-30 20:59:47 CEST; 5s ago
  Process: 27463 ExecStart=/usr/bin/knxd $KNXD_OPTS (code=exited, status=1/FAILURE)
Main PID: 27463 (code=exited, status=1/FAILURE)

Mai 30 20:59:47 Server-Daniel systemd[1]: knxd.service: Unit entered failed state.
Mai 30 20:59:47 Server-Daniel systemd[1]: knxd.service: Failed with result 'exit-code'.


so läuft es wenn ich es manuell starte:

Zitatsudo knxd -e=1.1.128 -u /run/eib -i -D -T -R -S -b usb:3:3:1:0:0

ich hab in der config  -u /run/eib -i weggelassen wie es in der Beschreibung steht!!

smurfix

Zitat von: pirndi am 30 Mai 2016, 21:19:03

Ich vermute das es ein Berechtigungsproblem ist da er es als user knxd starten will. Kann das sein?


Dem ist so. Du musst die /etc/udev/rules.d/70-kndx.rules anpassen. Füge die folgende Zeile ein:
SUBSYSTEM=="usb", ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2", OWNER="knxd"

HEX1 und HEX2 musst du durch die Werte für dein Gerät ersetzen, die bekommst du mit "lsusb". Danach das Ding abziehen und neu anstecken, sollte reichen, ansonsten "sudo systemctl restart udev" und nochmal.
Bei ls -l /dev/usb siehst du dann einen Eintrag, der dem knxd gehört.

NB: Für alle: Bitte KNXD_OPTS aus /etc/knxd.conf direkt posten statt Behauptungen aufzustellen. ;-)

pirndi

So hab ich geändert aber es will nicht. Ich poste mal alle Infos die ich mit meinen begrenzten Linux Kenntnissen bekomme:

in der knxd.conf:
ZitatKNXD_OPTS="-e=1.1.128 -D -T -R -S -b usb:3:4:1:0:0"

wenn ich die config ändere und einen neustart des Dinstes mache:
Zitathserver@Server-Daniel:~$ systemctl restart knxd.service
Job for knxd.service failed because the control process exited with error code. See "systemctl status knxd.service" and "journalctl -xe" for details.

und:

Zitathserver@Server-Daniel:~$ systemctl status knxd.service
? knxd.service - KNX Daemon
   Loaded: loaded (/lib/systemd/system/knxd.service; disabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Die 2016-05-31 18:31:26 CEST; 8s ago
  Process: 2152 ExecStart=/usr/bin/knxd $KNXD_OPTS (code=exited, status=1/FAILURE)
Main PID: 2152 (code=exited, status=1/FAILURE)

Mai 31 18:31:26 Server-Daniel systemd[1]: knxd.service: Unit entered failed state.
Mai 31 18:31:26 Server-Daniel systemd[1]: knxd.service: Failed with result 'exit-code'.

mit findknxusb wird der Adapter gefunden
ZitatPossible addresses for KNX USB devices:
device: 3:4:1:0:0 (Busch-Jaeger Elektro GmbH:KNX-USB Interface (Flush mounted))

Zitathserver@Server-Daniel:~$ lsusb
Bus 002 Device 002: ID 8087:8001 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8009 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 03eb:204b Atmel Corp. LUFA USB to Serial Adapter Project
Bus 003 Device 004: ID 145c:1330 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

wenn ich es normal starte dann läufts?

Andi291

Servus!

Der KNXD besteht aus zwei Diensten. Starte die mal manuell nacheinander.

Also z.b.:

sudo systemctl stop knxd.service
sudo systemctl stop knxd.socket
sudo systemctl start knxd.service

Lass den Socket mal bewusst weg, und schau, was passiert.

Grüße, Andi

pirndi

hserver@Server-Daniel:~$ sudo systemctl stop knxd.service
[sudo] Passwort für hserver:
hserver@Server-Daniel:~$ sudo systemctl stop knxd.socket
hserver@Server-Daniel:~$ sudo systemctl start knxd.service
Job for knxd.service failed because the control process exited with error code. See "systemctl status knxd.service" and "journalctl -xe" for details.

hserver@Server-Daniel:~$ sudo systemctl status knxd.service
? knxd.service - KNX Daemon
   Loaded: loaded (/lib/systemd/system/knxd.service; disabled; vendor preset: enabled)
   Active: activating (start) since Die 2016-05-31 19:40:51 CEST; 3ms ago
Main PID: 4357 (knxd)
   CGroup: /system.slice/knxd.service
           ??4357 /usr/bin/knxd -e=1.1.128 -D -T -R -S -b usb:3:4:1:0:0

Mai 31 19:40:51 Server-Daniel systemd[1]: Stopped KNX Daemon.
Mai 31 19:40:51 Server-Daniel systemd[1]: Starting KNX Daemon...

sieht aber so aus als ob er die config nimmt...

pirndi

und nach ein paar sekunden das wieder:

Zitathserver@Server-Daniel:~$ sudo systemctl status knxd.service
? knxd.service - KNX Daemon
   Loaded: loaded (/lib/systemd/system/knxd.service; disabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Die 2016-05-31 19:43:15 CEST; 3s ago
  Process: 4437 ExecStart=/usr/bin/knxd $KNXD_OPTS (code=exited, status=1/FAILURE)
Main PID: 4437 (code=exited, status=1/FAILURE)

Mai 31 19:43:15 Server-Daniel systemd[1]: Failed to start KNX Daemon.
Mai 31 19:43:15 Server-Daniel systemd[1]: knxd.service: Unit entered failed state.
Mai 31 19:43:15 Server-Daniel systemd[1]: knxd.service: Failed with result 'exit-code'.
hserver@Server-Daniel:~$

Andi291

Puh...

Probier mal, nur den knxd.socket zu laden. Der wiederum müsste, wenn irgendwas auf den Sockets anfragt, den Daemon laden.

pirndi

 knxd.socket - KNX Daemon (socket)
   Loaded: loaded (/lib/systemd/system/knxd.socket; disabled; vendor preset: enabled)
   Active: inactive (dead)
   Listen: [::]:6720 (Stream)

Mai 31 19:40:02 Server-Daniel systemd[1]: [/lib/systemd/system/knxd.socket:5] Failed to parse address value, ignoring: run
Mai 31 19:40:02 Server-Daniel systemd[1]: Closed KNX Daemon (socket).
Mai 31 19:40:02 Server-Daniel systemd[1]: [/lib/systemd/system/knxd.socket:5] Failed to parse address value, ignoring: run
Mai 31 19:40:02 Server-Daniel systemd[1]: [/lib/systemd/system/knxd.socket:5] Failed to parse address value, ignoring: run
Mai 31 20:38:46 Server-Daniel systemd[1]: [/lib/systemd/system/knxd.socket:5] Failed to parse address value, ignoring: run

gibt es für den socket auch eine config datei?

Andi291

Nein, beide Services beziehen Ihre config aus der opts.

Sorry, ich bin raus.

Schick mal dem user smurfix eine PN und bitte ihn, hier zu posten.

Grüße, Andi

smurfix

Ich bin bereits hier.

Konkrete Frage: was sagt
ls -lR /dev/bus/usb
?

pirndi

Hallo!

Sorry hatte leider keine Zeit in den letzten Tagen

Zitathserver@Server-Daniel:~$ ls -lR /dev/bus/usb
/dev/bus/usb:
insgesamt 0
drwxr-xr-x 2 root root  80 Mai 29 11:38 001
drwxr-xr-x 2 root root  80 Mai 29 11:38 002
drwxr-xr-x 2 root root 100 Mai 31 18:25 003
drwxr-xr-x 2 root root  60 Mai 29 11:38 004

/dev/bus/usb/001:
insgesamt 0
crw-rw-r-- 1 root root 189, 0 Mai 29 11:38 001
crw-rw-r-- 1 root root 189, 1 Mai 29 11:38 002

/dev/bus/usb/002:
insgesamt 0
crw-rw-r-- 1 root root 189, 128 Mai 29 11:38 001
crw-rw-r-- 1 root root 189, 129 Mai 29 11:38 002

/dev/bus/usb/003:
insgesamt 0
crw-rw-r-- 1 root root 189, 256 Mai 29 11:38 001
crw-rw-r-- 1 root root 189, 257 Mai 29 11:38 002
crw-rw-r-- 1 root eibd 189, 259 Jun  4 18:56 004

/dev/bus/usb/004:
insgesamt 0
crw-rw-r-- 1 root root 189, 384 Mai 29 11:38 001


smurfix

Soso. Das USB-Device gehört also der Gruppe "eibd". Blöderweise setzt "meine" udev-Rule den User knxd. Eine eibd-Gruppe kenne ich so nicht.

Du hast folglich irgendwo eine eibd-Regel-Altlast rumliegen, die mit der vom knxd kollidiert. Oder was auch immer. Jedenfalls funktioniert meine Rule nicht.

Ändere die Rechte mal manuell
# sudo chown knxd /dev/bus/usb/003/004
und probier aus was passiert.

Zum udev-Regeln-Debuggen gibt es ansonsten genug Seiten im Netz ...

pirndi

So ich hab alle alten eibd Altlasten entfernt und alles auf knxd geändert. Jetzt läuft der Dienst aber der Socket will noch nicht so ganz

Zitathserver@Server-Daniel:~$ sudo systemctl status knxd.socket
? knxd.socket - KNX Daemon (socket)
   Loaded: loaded (/lib/systemd/system/knxd.socket; disabled; vendor preset: enabled)
   Active: inactive (dead)
   Listen: [::]:6720 (Stream)

Jun 05 21:21:53 Server-Daniel systemd[1]: [/lib/systemd/system/knxd.socket:5] Failed to parse address value, ignoring: run
Jun 05 21:26:02 Server-Daniel systemd[1]: [/lib/systemd/system/knxd.socket:5] Failed to parse address value, ignoring: run

smurfix

Sehr strange. Steht bei dir irgendwas Seltsames in der knxd.socket?

pirndi

So nach einen Neustart des Server läuft der Socket aber dafür der knxd Dienst wieder nicht....