GPIO ohne root Rechte / X11
-
Schl87 -
1. Februar 2015 um 14:45 -
Erledigt
L
I
V
E
Stammtisch ab 20:30 Uhr im Chat
-
-
GPIO ohne root Rechte / X11? Schau mal ob du hier fündig wirst!
-
-
Wenn ich das Programm ohne "sudo" als "pi" ausführe kommt eine Meldung dass ich root - Rechte benötige. Ich muss das Programm aber als "pi" ausführen.
-
Welches Programm? Welche Meldung? :s
-
Vergib die Rechte des Programms neu mit "sudo chmod 755 -Dateiname-" ...
-
Entschuldige war sehr schwammig ausgedrückt.
Ich schreib ein Programm mit Pyhon mit dem ich über Putty einen Roboter steuern kann. Dazu verwende ich "x11 Forwarding" und tkinter um die Steuerbefehle zu registrieren. Allerdings muss ich hier als User Pi angemeldet sein um das Programm des Roboters auszuführen. Wenn ich es ohne root ausführe gibt mir das Terminal die Meldung ich habe nicht die Rechte für das Modul GPIO und solle root verwenden. (Den genauen Wortlaut hab ich gerade nicht zur Hand.) -
Und was sind die genau Gründe warum du die Gpio ohne Root Rechte benutzen willst?
-
Vergib die Rechte des Programms neu mit "sudo chmod 755 -Dateiname-" ...Muss ich das immer vor dem Start des Programms machen? Was bedeutet die Angabe?
Und was sind die genau Gründe warum du die Gpio ohne Root Rechte benutzen willst? -
Was sagt dir den dein Pi wenn du mit Root Rechten
Tkinter und X11 starten willst? -
Was sagt dir den dein Pi wenn du mit Root Rechten
Tkinter und X11 starten willst? -
Bei mir funktioniert X11 Forwarding auch als root Benutzer - wichtig ist halt das du das auch für diese PuTTY Session aktivierst, ansonsten gibt es da nix gesondertes einzustellen.
Ich kann aber auch problemlos ein Python-GPIO-Script als pi ausführen, ohne die von dir genannte Meldung zu kriegen... Copy&Paste doch mal bitte die exakte Meldung! Mir gehen diese ewigen Ratespiele langsam auf den Kecks
-
Es scheint so als würde für den User Root keine Konfigurations Datei existieren.
Am einfachsten wäre es wenn du die Konfiguration Datei einfach vom User Pi kopierst. -
Vergleich mal die Ausgabe von
des Benutzers root und des Benutzers pi ...
Evtl. reicht es schon, die DISPLAY-Variable richtig zu setzen ... localhost:10.0 kommt mir etwas sonderbar vor.cu,
-ds- -
Muss ich das immer vor dem Start des Programms machen? Was bedeutet die Angabe?
Wenn Dein Programm "test.py" heisst, werden die Rechte einmal vergeben ...
"sudo chmod 755 test.py"
-
So ich hab das Ganze noch einmal mit zwei PCs getestet und bekomme folgende Meldungen:
ohne sudo bekomme ich bei beiden PCs folgende Meldung:
mit sudo bekomme ich beim ersten PC:
mit sudo bekomme ich beim zweiten PC:
Vermuttlich wirklich nur eine Sache der Einstellungen.
Vergleich mal die Ausgabe von
des Benutzers root und des Benutzers pi ...
Evtl. reicht es schon, die DISPLAY-Variable richtig zu setzen ... localhost:10.0 kommt mir etwas sonderbar vor.cu,
-ds-beim ersten PC erhalte ich:
beim zweiten PC erhalte ich:
Beide greifen auf den gleichen Raspberry Pi zu und haben die gleichen Einstellungen in Putty:
-
Es scheint so als würde für den User Root keine Konfigurations Datei existieren.
Am einfachsten wäre es wenn du die Konfiguration Datei einfach vom User Pi kopierst.Wie mache ich das?
-
Das kann ich dir persönlich selbst nicht sagen.
Das war nur eine Idee von mir da ich (fast) das gleiche Phänomen bei Telegramm beobachtet habe, das für den User Pi und den User Root 2 unterschiedliche config Dateien gibt.
Ich weiß ja noch nicht mal wie Tkinter funktioniert und wie der eingerichtet wird aber du wirst ja Tkinter ja irgendwo konfiguriert haben.
Du müsstest den normalen config Pfad nur auf den Root User übertragen.
Aber ich gebe dir keine 100% Chance das es funktionieren wird. -
Wie man schon am ersten Screenshot sieht, steht da eine andere Fehlermeldung als du hier bisher beschrieben hast: No access to /dev/mem
Und wie gesagt, ich stelle auf Raspbian nichts ein sondern nur über PuTTY und kann mit root problemlos Xming nutzen (denn ich arbeite generell als root, einen pi benutzer gibts bei mir nicht).
Zeig mal bitte den vollständigen Code deines Python Scripts
(bitte in CODE!)Eine mögliche Alternative wäre pigpio's pigpiod daemon zu verwenden, der Dienst läuft dann als root und das Script selbst kann als normaler Benutzer laufen, der dann kein direkten Zugriff auf /dev/mem benötigt, das regelt dann der pigpiod Dienst
-
Den Code stell ich rein sobald ich Zuhause bin.
Wenn ich das richtig verstehe ist mein Putty bzw. Xming falsch konfiguriert?
Python
Alles anzeigenimport RPi.GPIO as io import time from tkinter import * import os #------------------------------------------------------------------------ # Setmode io.setmode(io.BCM) # Setwarning deaktivieren io.setwarnings(False) #------------------------------------------------------------------------ # Pins # Motor A (links) IN1=12 IN2=16 # Motor B (rechts) IN3=24 IN4=25 # Enable der Motoren ENA = 20 ENB = 21 # Pin definition io.setup(IN1, io.OUT) io.setup(IN2, io.OUT) io.setup(IN3, io.OUT) io.setup(IN4, io.OUT) io.setup(ENA, io.OUT) io.setup(ENB, io.OUT) #------------------------------------------------------------------------ # Antriebe stoppen def motor_stop(): io.output(IN1, False) io.output(IN2, False) io.output(IN3, False) io.output(IN4, False) #------------------------------------------------------------------------- # Vorwärts fahren def forward(): io.output(IN1, True) # Motor A vorwärts io.output(IN2, False) io.output(IN3, True) # Motor B vorwärts io.output(IN4, False) #------------------------------------------------------------------------- def keyup(e): key = e.keysym if key == "Up": motor_stop() print ("STOP") def keydown(e): key = e.keysym if key == "Up": forward() print ("Vorwärts") #------------------------------------------------------------------------- os.system('xset r off') io.output(ENA, True) io.output(ENB, True) root = Tk() frame = Frame(root, width=600, height=400) frame.bind("<KeyPress>", keydown) frame.bind("<KeyRelease>", keyup) frame.pack() frame.focus_set() root.mainloop()
Ausgeführt als User "pi":
als "root":
-
Wenn ich das richtig verstehe ist mein Putty bzw. Xming falsch konfiguriert?Ja.
Dein Python Script lässt sich bei mir normal starten, es geht auch ein tk Fenster unter Windows (über Xming) auf:
Coderoot@RoPi:/tmp# python3 tk.py Vorwaerts STOP Vorwaerts STOP Vorwaerts STOP root@RoPi:/tmp# echo $DISPLAY localhost:10.0 root@RoPi:/tmp#
Deinstallier Xming noch mal, installier es frisch aber diesmal OHNE irgendwas einzustellen
Ansonsten, wenn du denn unbedingt wissen willst wie Xming bei mir eingestellt ist:
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!