Raspberry 4 mit SCC / GPIO permission denied

Verwendete Hardware und OS: Raspberry Pi 4 Model B Rev 1.1
Linux version 4.19.66-v7l+ (dom@buildbot) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1253 SMP Thu Aug 15 12:02:08 BST 2019
Interface: Busware SCC ver 2.0

Installation war erfolgreich und der Busware SCC blinkt rhythmisch im Sekundentakt.
$ dpkg -l | grep homegear

  • homegear 0.7.40-2948 armhf Interface program to your smart home devices
  • homegear-gateway 0.7.40-2948 armhf Universal communication gateway for Homegear
  • homegear-homematicbidcos 0.7.40-2948 armhf HomeMatic BidCoS module for Homegear
  • homegear-management 0.7.40-2948 armhf Management service for Homegear
  • homegear-nodes-core 0.7.40-2948 armhf Core nodes for Homegear’s Node-BLUE
  • libhomegear-base 0.7.40-2948 armhf Base library for Homegear
  • libhomegear-ipc 0.1.2-30 armhf IPC library for Homegear
  • libhomegear-node 0.1.7-40 armhf Node library for Homegear
  • python3-homegear 1.0.14-1 armhf Python module for Homegear

Pairing funktioniert aber leider nicht. Zwar kann ich mit homegear -r und families select 0 auf homematicBidCos stellen. Beim Befehl pon wird aber keins der getestet Devices gefunden (die bereits frĂĽher auf einer anderen Installation mit CUL USB-Stick funktionierten).

Im Homegear Gateway Logfile erhalte ich die Meldung:

tail -f /var/log/homegear-gateway/homegear-gateway.log
12/01/19 18:08:46.486 Info: Homegear Gateway is (now) running as user with id 109 and group with id 114.
12/01/19 18:08:46.488 Could not write GPIO with index 18: Operation not permitted
12/01/19 18:08:46.502 Could not write GPIO with index 17: Operation not permitted
12/01/19 18:08:47.502 Could not write GPIO with index 17: Operation not permitted
12/01/19 18:08:50.844 Startup complete.
12/01/19 18:08:50.844 Starting UPnP server...
12/01/19 18:08:50.844 Info: UPnP server started listening.
12/01/19 18:08:50.845 Info: UPnP server: Binding to address: 10.0.x.x
12/01/19 18:08:53.154 Error: File descriptor is invalid.
12/01/19 18:08:53.155 Error in file Sockets/SerialReaderWriter.cpp line 479 in function void BaseLib::SerialReaderWriter::readThread(bool, bool, BaseLib::SerialReaderWriter::CharacterSize, bool): Resource deadlock avoided

Wie muss denn eine /etc/udev/rules.d/99-com.rules konkret aussehen, damit Homegear auf die GPIO-Pins Zugriff hat - müssen wirklich sämtliche Zeilen mit dem Begriff “GPIO” auskommentiert werden?
Die Doku sagt:
“If you’re using the official Raspbian, you need to comment the lines containing “gpio” in file /etc/udev/rules.d/99-com.rules (place a “#” at the beginning of the lines) for Homegear to be able to access the GPIOs.”

Also hab ich momentan folgende in Verwendung und auch getriggert :
SUBSYSTEM=="input", GROUP="input", MODE="0660"
SUBSYSTEM=="i2c-dev", GROUP="i2c", MODE="0660"
SUBSYSTEM=="spidev", GROUP="spi", MODE="0660"
#SUBSYSTEM=="bcm2835-gpiomem", GROUP="gpio", MODE="0660"
SUBSYSTEM=="argon-*", GROUP="video", MODE="0660"
SUBSYSTEM=="rpivid-*", GROUP="video", MODE="0660"
#SUBSYSTEM=="gpio", GROUP="gpio", MODE="0660"
#SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c '\
# chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\
# chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio;\
# chown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\
# '"

KERNEL=="ttyAMA[01]", PROGRAM="/bin/sh -c '\
ALIASES=/proc/device-tree/aliases; \
if cmp -s $ALIASES/uart0 $ALIASES/serial0; then \
echo 0;\
elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \
echo 1; \
else \
exit 1; \
fi\
'", SYMLINK+="serial%c"

KERNEL=="ttyS0", PROGRAM="/bin/sh -c '\
ALIASES=/proc/device-tree/aliases; \
if cmp -s $ALIASES/uart1 $ALIASES/serial0; then \
echo 0; \
elif cmp -s $ALIASES/uart1 $ALIASES/serial1; then \
echo 1; \
else \
exit 1; \
fi \
'", SYMLINK+="serial%c"

Mir scheint aber, dass durch die Kommentierung der Zugriff durch Members der group gpio auf die Pins unterbunden wird oder täusche ich mich?
Bin fĂĽr Eure Hinweise dankbar, wo ich etwas drehen muss!

Auch dir ein freundliches “Hallo” und willkommen im Forum.

Du möchtest bitte die Formatierungsfunktionen des Forums nutzen, du kannst deinen Beitrag nachträglich bearbeiten.

grafik

Hallo pmayer
habs mit Formatieren versucht.
Gibts Ideen? Hast Du eventuell eine funktionierende /etc/udev/rules.d/99-com.rules ?

Freue mich sehr ĂĽber jede Hilfe!

1 Like

Hallo @Neo,

du kannst die Datei sogar löschen. Im Homegear-Image sind unter /etc/udev/rules.d überhaupt keine Einträge vorhanden.

Viele GrĂĽĂźe

Sathya

Hallo Sathya,
habe das Directory /etc/udev/rules.d leer gemacht und die Regeln mit udevadm trigger gelöscht.

Weiterhin kommen folgende Meldungen:

$ sudo tail -f /var/log/homegear-gateway/homegear-gateway.log
...
12/15/19 10:55:43.309 Info: Dropping privileges to user homegear (109) and group homegear (114)
12/15/19 10:55:43.309 Info: Homegear Gateway is (now) running as user with id 109 and group with id 114.
12/15/19 10:55:43.310 Could not write GPIO with index 18: Operation not permitted
12/15/19 10:55:43.310 Could not write GPIO with index 17: Operation not permitted
12/15/19 10:55:44.311 Could not write GPIO with index 17: No such device
12/15/19 10:55:47.426 Startup complete.
...

Das hängt wohl irgendwie mit der Freigabe der GPIO-Pins zusammen - obwohl die LED am SCC wie unten beschrieben blinkt:

By default the radio is held in RESET which is connected to GPIO17. You need explicitly pull GPIO17 HIGH to un-reset the radio:

$ if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi
$ echo out > /sys/class/gpio/gpio17/direction
$ echo 1 > /sys/class/gpio/gpio17/value

By doing this the LED@SCC should start blinking.

LOW level at GPIO18 is used to call the (avr109) bootloader. For normal operation leave it untouched or pull HIGH!

The SCC is shipped with “culfw”-firmware flashed and testet.

Hat jemand eine Idee, woran hier zu drehen wäre?

Viele GrĂĽĂźe
Neo

Hallo @Neo,

Hat jemand eine Idee, woran hier zu drehen wäre?

FĂĽhre mal folgende Zeilen aus:

if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi
echo out > /sys/class/gpio/gpio17/direction
echo 1 > /sys/class/gpio/gpio17/value
chown homegear:homegear /sys/class/gpio/gpio17/*

und starte anschlieĂźen homegear-gateway. Geht es dann?

Hallo Sathya,

danke fĂĽr die schnelle Reaktion. Leider kein Erfolg.

Hab den homegear-gateway daemon, gestoppt die Befehle zum setzten des GPIO 17 ausgeführt, den owner geändert und den daemon wieder neu gestartet. Dann folgendes:

$ sudo chown homegear:homegear /sys/class/gpio/gpio17/*
$ sudo ls -l /sys/class/gpio/gpio17/
-rwxrwx--- 1 homegear homegear 4096 Dez 15 13:11 active_low
lrwxrwxrwx 1 root     gpio        0 Dez 15 13:11 device -> ../../../gpiochip0
-rwxrwx--- 1 homegear homegear 4096 Dez 16 17:11 direction
-rwxrwx--- 1 homegear homegear 4096 Dez 15 13:11 edge
drwxrwx--- 2 homegear homegear    0 Dez 15 13:11 power
lrwxrwxrwx 1 root     gpio        0 Dez 15 13:11 subsystem -> ../../../../../../../class/gpio
-rwxrwx--- 1 homegear homegear 4096 Dez 15 13:11 uevent
-rwxrwx--- 1 homegear homegear 4096 Dez 16 17:11 value

$ sudo tail -f /var/log/homegear-gateway/homegear-gateway.log
12/16/19 17:31:23.095 Could not write GPIO with index 18: Operation not permitted
12/16/19 17:31:23.095 Could not write GPIO with index 17: Operation not permitted
12/16/19 17:31:24.096 Could not write GPIO with index 17: Operation not permitted
12/16/19 17:31:27.250 Startup complete.
12/16/19 17:31:27.344 Starting UPnP server...
12/16/19 17:31:27.344 Info: UPnP server started listening.
12/16/19 17:31:27.345 Error in file UPnP.cpp line 107 in function void UPnP::getAddress(): No IP address could be found.
12/16/19 17:31:27.345 Error: UPnP Server: Could not get IP address.
12/16/19 17:31:32.345 Warning: Could not bind UPnP socket.
12/16/19 17:31:32.346 Info: UPnP server: Binding to address: 10.0.1.54

Keine Ahnung, was ich tun kann.

Habe den Raspi 4 neu mit openHabian buster aufgesetzt und komme bereits einen Schritt weiter.
Die Installation des SCC hat funktioniert und es kommen BidCoS-Pakete auf der Schnittstelle an:

screen /dev/ttyAMA0 38400
Ar<Enter>

14B6845E2C917A0000008060BD00000000000922FFFD
F6845E2DB1C100000800743000000000091DFF16
4C0845E2DD77C0000080014E00002000B091BFF3C
4B7845E2C917A000008060BD000000000092FFEFF
F7845E2DB1C10000800743000000000092DFD16
14C1845E2DD77C000080014E0000200B0921FC3C
4B8845E2C917A000008060BD0000000000930FEFD
14F8845E2DB1C10000008007430000000000092BFF15

Nur leider kann ich weiterhin keine Devices pairen (Homematic Device wurde in Auslieferungszustand versetzt und gemeinsam mit dem von-Befehlt das Pairing aktiviert):

$ sudo homegear -r
[sudo] password for openhabian: 
Connected to Homegear (version 0.7.40-2948).

Please type >>help<< to list all available commands.
> ls
   ID │ Name                          
──────┼───────────────────────────────
    0 │ HomeMatic BidCoS              
    1 │ HomeMatic Wired               
  254 │ Miscellaneous                 
──────┴───────────────────────────────

fs 0
For a list of available family commands type >>help<<.
Family 0> pon
Pairing mode enabled for 60 seconds
Family 0> ls
No peers are paired to this central.

Hat jemand eine Idee?

Frohe Weihnachten fĂĽr alle
Neo

Zeig bitte mal die relevanten Teile aus der homematicbidcos.conf. Hast du rfKey und centralAddress passend gesetzt?

1 Like

Hallo pmayer,

der Kopf von /etc/homegear/families/homematicbidcos.conf sieht so aus:

---------------------------- HomeMatic BidCoS ----------------------------
___________________________________________________________________________

#######################################
########## General Settings ##########
#######################################

[General]
moduleEnabled = true
centralAddress = 0xFDEFA1
rfKey = 00112233445566778899F1BFFC76EE45
currentRfKeyIndex = 1
processBroadcastWithAesEnabled = false

Müssen die drei oberste Zeilen mit den ganzen Dashes und HomeMatic “---- BidCoS ----” da drin stehen?

Kannst du wegmachen, stören aber auch nicht.
Grundliegend sehen ich da aber keinen Fehler. Wie sieht der SCC-Teil bei dir aus?

@Neo, ist denn der Benutzer homegear Mitglied der Gruppe gpio?

root@pi4:/home/pi# groups homegear
homegear : homegear dialout spi gpio

@pmayer: Also der SCC-Teil sieht so aus:

#######################################
######### COC, SCC, CSM, CCD #########
#######################################
[COC, SCC, CSM, CCD]
id = ecoSCC
#default = true
deviceType = coc
device = /dev/ttyAMA0
responseDelay = 95
gpio1 = 17
gpio2 = 18
# stackPosition = 0

@job: Und der User Homegear:

$ groups homegear
homegear : homegear tty uucp dialout spi gpio

Hm. Das sieht für mich ok aus. Was sagt ls -la /dev/ttyAMA0 wenn homegear läuft? Die Ausgabe von lsusb wäre vielleicht auch noch interessant.

Hallo pmayer, here we go:

$ lsusb
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Und:

$ ls -la /dev/ttyAMA0 
crw-rw---- 1 homegear homegear 204, 64 Dec 25 00:10 /dev/ttyAMA0

Besten Dank fĂĽr weitere Tipps,
Neo

Hast Du denn die relevanten Schritte der Installationsanleitung auf deinem Pi4 durchgefĂĽhrt?

http://www.busware.de/tiki-index.php?page=SCC_Installation

So wie ich das verstehe, ist auch das dtoverlay=pi3-miniuart-bt relevant.

Hallo job

das habe ich. Und weil ich nicht weiter kam, hatte ich am 16.12. eine Mail an Busware geschickt. Aber leider habe ich noch keine Antwort bekommen.

Der SCC blinkt auch brav und auf einem alten Raspi 2B+ hat er funktioniert, ist aber immer mal wieder offline gegangen. Da dachte ich Memory Probleme seien die Ursache und habe einen Raspi 4 gekauft.

Bin bald soweit, einen weiteren CUL-Stick gegen den SCC zu tauschen…
Wär nur schön, auch von Herstellerseite einen Update zur Installation auf Raspi 4 und buster zu bekommen.

Schöne Weihnachten
Neo

Hallo zusammen,

jetzt hat es endlich funktioniert, neue HomeMatic Devices am SCC mit Homegear zu pairen:
In meiner Verzweiflung habe ich eine FHEM-Installation mit CUL-Stick auf einem anderen Raspi herunter gefahren und komplett von der Stromversorgung genommen. Schwups, hat das Pairing am openhab-SCC funktioniert.

Ăśberraschend an der Sache ist fĂĽr mich, dass es scheinbar weder ausreichend war, in FHEM den Autodetect zu deaktivieren. Sogar das Abschalten des fhem Daemon war nicht genug.

Kann es sein, dass zwei 868 MHz Sender/Empfänger in räumlicher Nähe (c. 20 Meter Abstand) trotz unterschiedlicher centralAddress und verschiedenem rfkey sich gegenseitig negativ beeinflussen? Brabbelt ein CUL-Stick solange er Strom hat irgendwas in den Äther (eine Frage für Busware)?

Wenn dem so wäre, ist es unverständlich, warum das gleiche Vorgehen mit einer laufenden FHEM-Installation bei einem Raspi 2B+ ohne Probleme vonstatten ging…

Auf jeden Fall: Vielen Dank fĂĽr Eure vielen Tipps und die UnterstĂĽtzung!!!

ThX
Neo

2 Likes