pi4j ohne root-Rechte
lima-city → Forum → Programmiersprachen → Java
ansteuerung
anwendung
bedenklich halte
bibliothek
eigentum
einzige problem
export
exportieren
gruppe
hindernis
kleine url
mikrocontroller
nutzer
programm
raten
richtigen spur
start
tat
url
zugriff
-
Hallo Allerseits,
ich möchte gern via Java auf die GPIO eines Raspberry Pi's zugreifen.
Leider benötigt die Library pi4j root - Rechte zur Ausführung, was ich für bedenklich halte, insbesondere dann, wenn ich das Ganze als Webanwendung gestalten will.
hat jemand eine Lösung? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Eine Möglichkeit wäre folgende:
Du erstellst eine gpio-Gruppe und fügst den Nutzer, unter dem die Java-Anwendung läuft, zu dieser Gruppe hinzu. Dann lässt du bei jedem Systemstart ein Script ausführen, dass als root die benötigten GPIO-Pins aktiviert (über /sys/class/gpio/export) und dann das Eigentum für /sys/class/gpio/gpioX/direction und /sys/class/gpio/gpioX/value an diese gpio-Gruppe (chgrp gpio <datei>) überträgt und der Gruppe Schreibrechte gibt (chmod 664 <datei>).
Mit dieser Methode müsste die Anwendung keine unnötigen Rechte erhalten. Das einzige Problem ist allerdings, dass du schon vor dem Start der Anwendung wissen musst, welche GPIO-Pins benötigt werden, aber das sollte in den meisten Fällen kein allzu großes Hindernis sein.
LG cookies
Edit: Das funktioniert natürlich nur, wenn pi4j auch sysfs zur Ansteuerung verwendet, es wäre auch möglich, dass mmap benutzt wird. Außerdem darf sich die Library nicht zu blöd anstellen, d.h. sie muss damit klar kommen, dass die Pins schon vor dem Start aktiviert („exportiert“) sind.
Edit2: Falls pi4j nicht damit klar kommt, wäre es auch möglich, einfach selbst direkt mit sysfs zu arbeiten, was auch kein Hexenwerk ist.
Beitrag zuletzt geändert: 11.1.2014 18:57:42 von cookies -
Erst einmal vielen Dank, ich denke, da sind wir auf der richtigen Spur. was ich allerdings gesehen habe, ist, dass p4j mmap benutzt und nicht sysfs...
Vorher die benötigten Pins zu exportieren, sollte in der Tat nicht das Problem sein.
Aber wie gehe ich mit mmap um?
-
Dann würde ich persönlich dir dazu raten, einfach direkt sysfs ohne Bibliothek oder das gpio-Tool von WiringPi (das nutzt setuid, um root-Rechte zu erlangen) zu verwenden. Für beide Möglichkeiten habe ich vor einiger Zeit mal eine kleine Anleitung im mikrocontroller.net-Wiki geschrieben.
Direkter Speicherzugriff (mmap bzw. /dev/mem) ist nur als root möglich bzw. wenn du einem anderen Nutzer Zugriff auf /dev/mem gibst. (Extrem schlechte Idee! Da wäre es noch sicherer, dein Java-Programm als root laufen zu lassen, was ich dir allerdings auch nicht raten würde.)
Lg cookies
Beitrag zuletzt geändert: 23.1.2014 17:15:34 von cookies -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage