[gelöst] 0.6.0-1053 (Raspian 8 Jessie): Fehler mit TI CC1101

Hallo Sathya,

ich habe gerade mal versucht, von 1022 (was funktioniert) auf 1053 zu “upgraden”. Das ist schief gegangen, trotz “dpkg -r” der alten Pakete und “dpkg -i” des neuen nigthlies.

Ja, ich habe die Interface-Config in die neue Datei geschrieben und die alte “physicalinterfaces.conf” entfernt.

Hier die im .err-File gemeldeten Fehler:

11/20/15 22:22:00.149 Error in file Systems/IPhysicalInterface.cpp line 637 in function virtual void BaseLib::Systems::IPhysicalInterface::setGPIODirection(uint32_t, BaseLib::Systems::IPhysicalInterface::GPIODirection::Enum): Could not write to direction file (/sys/class/gpio/gpio25/direction) of GPIO with index 1: Permission denied 11/20/15 22:22:00.150 Error in file Systems/IPhysicalInterface.cpp line 672 in function virtual void BaseLib::Systems::IPhysicalInterface::setGPIOEdge(uint32_t, BaseLib::Systems::IPhysicalInterface::GPIOEdge::Enum): Could not write to edge file (/sys/class/gpio/gpio25/edge) of GPIO with index 1: Permission denied 11/20/15 22:22:00.150 Error in file Systems/IPhysicalInterface.cpp line 287 in function virtual void BaseLib::Systems::IPhysicalInterface::openGPIO(uint32_t, bool): Failed to open GPIO value file "/sys/class/gpio/gpio25/value": Permission denied 11/20/15 22:22:00.150 Module HomeMatic BidCoS: TI CC110X "My-CC1101": Error in file PhysicalInterfaces/TICC1100.cpp line 879 in function virtual void BidCoS::TICC1100::startListening(): Couldn't listen to rf device, because the gpio pointer is not valid: /dev/spidev0.0
Das muss irgendetwas damit zu tun haben, dass homegear unter dem User “homegear” läuft, aber die beiden Dateien “edge” und “direction” usw. nur für “root” zugänglich sind. Ich glaube, da stimmt was mit den Anteilen nicht, die unter “root” laufen müssen, bevor zum Benutzer “homegear” gewechselt wird. Just a wild guess…

Nach dem De-Installieren von 1053 und Zurückgehen auf 1022 geht wieder alles.

Lösung: siehe weiter unten, es müssen udev-Regeln bei der Standard-Jessie-Installation auskommentiert werden!

Beste Grüße,
HomeSweetHome

Hallo HomeSweetHome,

der Fehler liegt daran, dass die Dateien “edge” und “direction” jetzt erst nach der Modulinitialisierung gesetzt werden, um das GDO0-135-kHz-Problem, welches den Raspberry Pi extrem auslastet zu lösen. An dieser Position braucht der Benutzer homegear aber Schreibzugriff auf die beiden Dateien. Ich hatte vergessen, dass ich beim Setzen der Berechtigungen dem Benutzer homegear nur Schreibzugriff auf die Datei “value” gebe. Das führt zu dem Fehler. Er ist auf GitHub bereits gelöst, nur schien die Version bei deinem Download noch nicht online zu sein. Vermutlich hat die aktuelle 1053 die Änderungen (bei gleichen Commit-Nachrichten wird die Versionsnummer nicht erhöht) aber warte sicherheitshalber noch auf die 1054 - die gibt’s Montag. Damit sollte es klappen.

Viele Grüße

Sathya

1 Like

Hallo Sathya,

ich habe 1054 installiert und trotzdem dieselben Berechtigungs Fehler.
Wenn ich homegear als root starte ist alles OK.

Viele Grüße
Gunnar

Hast du zufällig das offizielle Raspbian am Laufen? Poste mal die Ausgabe von

In der aktuellen Version von Homegear klappt das Öffnen definitiv. Allerdings funktioniert es wegen zweier udev-Regeln nicht im offiziellen Raspbian. Diese Regeln setzen die Gruppe auf “/sys/class/gpio” auf “gpio” und die Berechtigungen auf 750 oder 550. Funktionieren tut es unlogischerweise auch nicht, wenn der Benutzer Homegear in der Gruppe gpio ist. Diese beiden Regeln müssen entsprechend einfach gelöscht werden, dann klappt es. Die verantwortlichen Regeln enthalten das Wort “gpio”. Du kannst sie in den beiden udev-Regelverzeichnissen also mit “grep -R gpio .” finden.

Viele Grüße

Sathya

Hallo Sathya,

das war’s! Aktuell läuft bei mir Homegear 0.6.0-1065 mit CC1101 ohne Probleme.

Also WICHTIG für “Standard-Raspbian-Jessie”-Benutzer, die auf dem Raspi das SPI-Interface für einen CC1101 nutzen wollen:

[ul][li]cd /etc/udev/rules.d,[/li]
[li]vi (oder nano…) 99-com.rules,[/li]
[li]dort die beiden Regeln auskommentieren ("#" davor setzen), die sich einmal auf das SUBSYSTEM “gpio*” und einmal auf das SUBSYSTEM “bcm2836-gpiomem” beziehen,[/li]
[li]reboot (bin nicht sicher, ob das sein muss, ich hab’s gemacht).[/li][/ul]

Und dann laufen auch die neueren Versionen. Wenn man das nicht macht, dann sieht man im Log-File die oben gemeldeten Fehler. Ist aber nur ein indirektes Problem von Homegear… :wink:

Gruß,
HomeSweetHome

Guten Abend,

ich bekomme ebenfalls folgenden Fehler:

04/01/16 23:11:22.894 Error in file Systems/IPhysicalInterface.cpp line 715 in function virtual void BaseLib::Systems::IPhysicalInterface::setGPIOEdge(uint32_t, BaseLib::Systems::IPhysicalInterface::GPIOEdge::Enum): Could not write to edge file (/sys/class/gpio/gpio25/edge) of GPIO with index 1: Permission denied 04/01/16 23:11:22.895 Error in file Systems/IPhysicalInterface.cpp line 330 in function virtual void BaseLib::Systems::IPhysicalInterface::openGPIO(uint32_t, bool): Failed to open GPIO value file "/sys/class/gpio/gpio25/value": Permission denied 04/01/16 23:11:22.895 Module HomeMatic BidCoS: TI CC110X "My-CC1101": Error: Couldn't listen to rf device, because the GPIO descriptor is not valid: /dev/spidev0.0 04/01/16 23:11:22.895 Module HomeMatic BidCoS: TI CC110X "My-CC1101": Connection to TI CC1101 closed unexpectedly... Trying to reconnect... 04/01/16 23:11:22.901 Error in file Systems/IPhysicalInterface.cpp line 680 in function virtual void BaseLib::Systems::IPhysicalInterface::setGPIODirection(uint32_t, BaseLib::Systems::IPhysicalInterface::GPIODirection::Enum): Could not write to direction file (/sys/class/gpio/gpio25/direction) of GPIO with index 1: Permission denied

In der Datei “99-com.rules” unter “/etc/udev/rules.d” steht folgendes:

## 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$ SUBSYSTEM=="input", GROUP="input", MODE="0660" SUBSYSTEM=="i2c-dev", GROUP="i2c", MODE="0660" SUBSYSTEM=="spidev", GROUP="spi", MODE="0660"

Ich nutze ein CC1101 Modul von Pollin. Verbunden ist GD0 mit GPIO25. Auf meinem RasPi 2 läuft raspbian wheezy mit homegear 0.6.0-1279.

Gruß
Marcus

EDIT:

Habe jetzt mein Raspbian von Wheezy auf Jessie aktualisiert und auch homegear. Der Fehler erscheint nicht mehr. Allerdings kann ich mein HM-SEC-SCO nicht anlernen. Wie kann ich prüfen ob mein RPi mit dem Modul überhaupt richtig kommunizieren kann?

EDIT2:

Hat sich erledigt… Ich hatte eine Buchsenleiste an das Modul gelötet… zumindest teilweise :confused: … Habe die Buchsenleiste entfernt und gehe nun direkt mit Kabeln an die Kontakte. Seit dem funktioniert alles. :blush:

Hallo,

ich denke, ich hab das Problem gelöst ohne die Systemdateien patchen zu müssen. Kann jemand noch verifizieren, bitte?
Schritte sind wie folgend:

  1. usermod -a -G gpio homegear
  2. Editieren /etc/init.d/homegear:
    RUNASGROUP=homegear nach RUNASGROUP=gpio ändern
  3. Editieren: vi /lib/systemd/system/homegear.service:
    In ExecStartPre Zeile “-g homegear” nach “-g gpio” ändern. Rest so lassen
    In ExecStart Zeile “-g homegear” nach “-g gpio” ändern. Rest so lassen
  4. systemctl daemon-reload

Natürlich davor die wegkommentierten Zeilen in 99-com.rules wieder einkommentieren und natrülich vor den Änderungen homegear dienst stoppen und danach wieder starten

Hallo @falkena,

das ist eine gute Lösung. Eigentlich sollte Punkt 1 bereits reichen. Warum das nicht der Fall ist, muss ich noch einmal recherchieren.

Viele Grüße

Sathya

@sathya Habe ich schon: Es liegt am Punkt 3. In der Datei


steht in Zeilen 13 und 14:
ExecStartPre=/usr/bin/homegear -u homegear -g homegear -p /var/run/homegear/homegear.pid -pre
ExecStart=/usr/bin/homegear -u homegear -g homegear -p /var/run/homegear/homegear.pid

Homegear startet also immer mit “-u homegear -g homegear”, egal was in RUNASGROUP geschrieben wurde.

1 Like

Hallo @falkena,

das stimmt. Es gibt allerdings ein weiteres Problem: Selbst wenn der Benutzer homegear in der Gruppe gpio ist, hat dieser in einer Standard-Raspbian-Installation keinen Zugriff auf die GPIOs. Das gleiche Problem gilt für die Gruppe dialout und den Zugriff auf tty-Geräte. Es sollte ja eigentlich reichen, den Benutzer Homegear zu den Gruppen hinzuzufügen, um entsprechenden Zugriff zu erhalten. Aus irgendeinem Grund ist das jedoch nicht der Fall. Da muss ich noch einmal schauen, woran das liegt.

Viele Grüße

Sathya