GPIOs immer als root ansprechen?

  • Wenn ich dieses Tutorial (http://wiki.freepascal.org/Lazarus_on_Raspberry_Pi/de) richtig verstehe, dann muß ich die GPIOs immer als Root aufrufen, oder deren Berechtigung ändern, nachdem ich sie erstellt habe.

    Trifft das auch zu, wenn ich Libraries wie die wiringPi, rpi_hal oder pascalIO verwende?

    Gibt es eine Möglichkeit, daß zu umgehen? Da die GPIOs ja bei jedem Neustart neu erstellt werden, könnte ich mir vorstellen, daß ich beim Starten die GPIOs anlege, die Schreibrechte anpasse und die dann jedes Programm auch als Nicht-root nutzen kann. Stimmt das, und wie mache ich das, mit einem bash-Script?

    Warum werden die GPIOs eigentlich so restriktiv behandelt? Für I2C und SPI brauche ich doch auch keinen root-Zugriff, wenn ich es richtig verstanden habe.
    Automatisch zusammengefügt:
    Da fällt mir noch auf: Ich habe mit Node-RED rumgespielt, und das kann ich ganz normal starten (ohne root), und damit die GPIOs nutzen. Wie machen die das?

    Einmal editiert, zuletzt von Timm Thaler (25. März 2016 um 19:45)

  • Hallo Timm,

    das mit den Root-Rechten für GPIO bezieht sich auf ältere Versionen der GPIO-Libraries. Bei den aktuellen Versionen muss das meines Wissens nicht mehr gemacht werden.

    Übrigens brauchte bereits meine erste GPIO-Library, die ich 2013 in Icon programmiert habe, keine Root-Rechte, um einen GPIO zu setzen oder auszulesen oder irgendwelche Kommunikationen mit irgendwelchen Bauteilen zu starten. Aber soll's jeder machen, wie er kann.

    Hast Du eigentlich mittlerweile Lazarus auf Deinem RPi 3B installieren können? Ich habe da gerade Deine Anfrage im Lazarus-Forum gelesen...


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Jein. Das kommt auf die Berechtigungen an.

    Das wurde in einem deiner anderen Threads eigentlich schon angesprochen:


    Das haengt ein bisschen davon ab. Fuer den hier skizzierten Fall - Kernel-IO via /sys/ - sollte die Mitgliedschaft in der Gruppe gpio reichen. Wenn das System entsprechend aufgesetzt ist - bei raspibian sollte dem so sein.

    Allerdings ist das nicht unbedingt die beste Art, mit den GPIOs umzugehen. Da gibt's leider konzeptionelle Schwaechen. Weswegen kluge Menschen die Bibliothek pipgio erfunden haben, welche die IO-Register des BCM direkt ausliest, mittels DMA, aus dem Speicher. Und dafuer eine eigene API anbietet.

    Das klappt dann nur als root, weil man nur als solcher beliebige Speicherseiten und DMA-Kanaele nutzen kann. Da kaeme es jetzt etwas auf deinen Anwendungszweck an.

  • Hast Du eigentlich mittlerweile Lazarus auf Deinem RPi 3B installieren können?

    Ja, das läuft. Nächster Schritt ist die Ansteuerung der GPIOs und dann hoffe ich endlich mal die Serielle zum Laufen zu bringen.
    Automatisch zusammengefügt:

    Das wurde in einem deiner anderen Threads eigentlich schon angesprochen:

    Das habe ich auch durchaus zu Kenntnis genommen. Mein Problem ist momentan, die Vielzahl der Informationen zu verwerten und zu entscheiden, mit welcher Lib ich arbeiten will. Und dabei noch veraltete von aktuellen Informationen zu trennen.

    Auf der einen Seite sieht die pascalIO schon elegant aus. Auf der anderen Seite will ich damit ein paar Taster abfragen und ein paar Relais / Optokoppler ansprechen. Dafür dürften wahrscheinlich die File-Befehle völlig ausreichend sein.

    Mit den nativen File-Befehlen bin ich wahrscheinlich auf der sicheren Seite. Mit externen Libs weiß man immer nicht, ob die auch aktualisiert werden. Und momentan scheitere ich gerade daran, die pascalIO-Lib in das richtige Verzeichnis zu installieren, weil ich einfach keine Ahnung habe. GRRR! :wallbash:

    Einmal editiert, zuletzt von Timm Thaler (25. März 2016 um 20:31)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!