Root Rechte für GPIO Benutzung

  • Hallo alle zusammen,


    ich arbeite erst seit kurzem mit dem Raspberry Pi, bin deshalb ein richtiger Neuling und kenne mich noch nicht wirklich damit aus.


    Hauptsächlich möchte ich mit dem Raspberry Pi, über Python, Programme schreiben. Deshalb wollte ich am Anfang erst ein paar kleine Programme zum üben schreiben. Dadurch wollte ich lernen wie man die GPIOs ansteuert etc.
    Mein erstes Programm war eine blinkende LED. Ich habe das Programm geschrieben/ausgeführt, aber dann kam eine Fehlermeldung: "[Errno 13] Permission denied" und dazu noch "Try running as root!".


    Deshalb meine Frage, wie kann ich mich als Root anmelden damit ich über Python die GPIOs steuern kann???


    Gruß Kellermann66

  • Hallo Kellermann66,


    ruf dein Programm mal mit dem Zusatz "sudo" auf. Also zum Beispiel wie folgt.


    Code
    sudo ./python_skript.py


    Oder wenn dein Python-Skript nicht direkt ausgeführt werden kann (fehlende Shebang und/oder fehlende Rechte), dann mit folgendem Aufruf.


    Code
    sudo python ./python_skript.py


    Gruß Georg

  • Ich habe alles mal probiert und warum auch immer hat nichts geklappt.


    Entweder es kam "[Errno 2] No such file or directory" oder "Authentication failure". Selbst wenn ich das vorhandene Programm etwas änder und dann abspeichern möchte kommt "[Errno 13] Permission denied"...

  • Mit dem Standardbenutzer, der von Anfang an da ist. Also ich habe wheezy installiert und habe direkt angefangen zu programmieren.
    Das file liegt in einem Ordner "Programme" auf dem Desktop.

  • Standardmässig sind 2 Benutzer vorhanden - einmal der "überalles stehender und mächtigster" Benutzer root, das ist quasi der Administrator... Und einmal der normale Benutzer " pi ", der "sudo" benutzen muss wenn er root-Befehle (wie zB "reboot" oder "apt-get install") ausführe will


    Wenn du mit dem Terminal, oder auch Konsole genannt, unter " startx " arbeitest und das Python Script ausführen willst, gibts 3 bzw 4 Möglichkeiten dies zu tun:


    1) Vorher in das Verzeichnis wechseln wo die Datei liegt und dann mit vorrangestelltem " ./ " die Datei ausführen, also:

    Code
    cd /home/pi/Desktop
    ./python_skript.py


    2) Vorher in das Verzeichnis wechseln wo die Datei liegt und anstatt "./" den zu verarbeiteten Interpreten (SheBang) gefolgt von einem Leerzeichen vorranstellen, also:

    Code
    cd /home/pi/Desktop
    python python_skript.py


    3) Den Vollständigen Pfad zur Datei eingeben:

    Code
    /home/pi/Desktop/python_skript.py


    4) Den Vollständigen Pfad zur Datei eingeben, mit vorrangestelltem Interpreten (SheBang):

    Code
    python /home/pi/Desktop/python_skript.py



    Den Interpreten angeben brauch man i.d.R. nur wenn das Script entweder nicht ausführbar ist, oder in der ersen Zeile des Scripts nicht sowas wie " #!/bin/python " steht (das gibt dem System darüber auskunft welcher Interpret das nachstehende verarbeiten soll), oder man temporär Parameter an den Interpreten übergeben möchte zum Beispiel zum debuggen des Codes...



    So, nun zu dem was auch schon im 2.Post erwähnt wurde:


    Da du anscheint als normaler Benutzer " pi " nicht die nötigen Rechte hast, musst du das Script mit root-Rechten ausführen.
    Das wiederum geht so wie bereits erwähnt, entweder mit vorrangestelltem " sudo " oder das Script direkt als root-Benutzer ausführen..
    Ersteres wäre vermutlich einfacher, also mit sudo. Nun käme es darauf an wo du dich befindest nachdem du das Terminal / Konsole aufgemacht hast, vermutlich direkt in deinem Homedir ( /home/pi ) aber da liegt das Script ja nicht, also kannst du auch kein " sudo ./python_script.py " ausführen weil dann selbstverständlich "No such File" als Fehlermeldung kommt..


    Also musst du eins von den 1-4 Beispielen von oben anwenden - ich würde dir empfehlen direkt in ds Verzeichnis zu wechseln..


    also entweder 1) :

    Code
    cd /home/pi/Desktop
    sudo ./python_script.py


    oder 2) :

    Code
    cd /home/pi/Desktop
    sudo python python_script.py


    alternativ, wenn du tatsächlich im " /home/pi " startest, ginge auch:

    Code
    sudo Desktop/python_script.py


    Um herrauszufinden in welchem Verzeichnis du dich aktuell befindest:

    Code
    pwd
  • Alles klar.
    Jetzt habe ich "cd/home/pi/Desktop/Programme" eingegeben und war dann in dem Ordner Programme. Danach hab ich dann "sudo python LED_Blink.py" eingegeben, doch es passierte daraufhin nichts. Also keine Fehlermeldung etc. Soll das so sein? Weil meine LED auch nicht blinkt. :/

  • Was meinst du mit "es passierte nichts" - kam dann einfach der Promt wieder oder war er mit ausführen des Scripts beschäftigt?


    Melde dich mal bitte übers Netzwerk mithilfe Putty auf dem RaspberryPi an und poste hier dann was du eingibst um das Script auszuführen, also sowas wie

    Code
    cd /home/pi/Desktop/Programme
    sudo python LED_Blink.py


    Oder mach ein Bild davon :)



    Ansonsten hast du vielleicht noch ein Problem in deinem Script - ggf das mal in

    Code
    posten
  • hehe Oke also kommt dann gleich der Promt wieder wo man den nächsten Befehl eingeben kann...


    Dann wurde das Script anstandlos ausgeführt, also ohne Fehler auszuwerfen usw, wenn das Script dann aber nicht das gemacht hat was es hätte tun sollen, liegt das Problem im Code

  • Hallo
    Ich bin neu hier und Anfänger. Ich gehe davon aus das alles was ich hier schreibe Schnee von gestern ist, aber vielleicht kann mir einer bei meinem Problem helfen. Wenn das Programm eine neue Zeile ohne Inhalt anbricht, dann ist das Programm wahrscheinlich in Ordnung, es läuft in einer Schleife aus der es mit ctr-alt-c wieder raus geholt werden kann. Ich Tippe hier auf ein Problem mit der Hardware.
    Bei mir läuft das Programm mit einer Blinkenden LED im LXTerminal mit dem Befehl "sudo python Test.py".
    Das Problem mit dem ich kämpfe: Ich habe das Programm mit Stanis Python Editor geschrieben, aber es läuft mit diesem nicht. Hier kommt es auch zur Fehlermeldung "RuntimeError: No access to /dev/mem. Try running as root!"

  • Die Hardware hat damit nichts zu tun


    Wenn du das Script über die Konsole in den Hintergrund schicken willst musst du ans Ende deiner Kommandozeile ein " & " einfügen, also zum beispiel:

    Code
    sudo python Test.py &


    Dein nachfolgend beschriebendes Problem hat mit dem vorherigen aber nichts zu tun - die Fehlermeldungen von Linux sind eigentlich eindeutig und beschreiben auch tatsächlich das Problem (anders als bei Windoof)


    "RuntimeError: No access to /dev/mem. Try running as root!"


    musst du also tatsächlich wörtlich nehmen - wenn du kein/kaum Englisch kannst dann nutz http://translate.google.com o.ä.


    Prüfe anschliesend ob es /dev/mem überhaupt gibt :huh:



    Und ansonsten wäre es äussert hilfreich dein Script zu kennen denn sonst gehen die Ratespiele bis ins unendliche weiter :angel: