Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi Zugriff auf SPI via Python/spidev ohne Root-Rechte


von FlorenzW (Gast)


Lesenswert?

Hallo!

Ich habe an meinem Raspberry mit aktuellem Wheezy ein DOGM163-Display 
via SPI angeschlossen.
Als lib verwende ich:
https://github.com/Gadgetoid/DogLCD
Das funktioniert ganz prima mit Python/spidev - solange das Skript als 
root gestartet wird, ansonsten Fehlermeldung: try as root.

Für die zukünftige Verwendung wäre es wichtig, dass dieses Programm auch 
ohne root-Rechte auskommt. Ich habe bis jetzt jede verfügbare Anleitung 
ausprobiert, die versprach, dieses Problem zu lösen - ohne Erfolg.

Hat es jemand geschafft dieses Problem zu lösen und, wenn ja, wie?

FlorenzW

von FlorenzW (Gast)


Lesenswert?

Nachtrag, hier die Meldung aus der Python-Shell:

Traceback (most recent call last):
  File "/home/pi/DogLCD-hardware_spi/test.py", line 7, in <module>
    lcd.begin(doglcd.DOG_LCD_M163, CONTRAST)
  File "/home/pi/DogLCD-hardware_spi/doglcd.py", line 99, in begin
    GPIO.setup(self.lcdRS,GPIO.OUT);
RuntimeError: No access to /dev/mem.  Try running as root!
>>>

Ich habe den Verdacht, dass das Problem beim direkten Zugriff auf die 
Pins des GPIO entsteht und nicht bei der SPI-Übertragung.

Mein Nutzer ist aber Mitglied bei GPIO... grübel...:

pi@raspberrypi ~ $ id
uid=1000(pi) gid=1000(pi) 
Gruppen=1000(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(vide 
o),46(plugdev),60(games),100(users),105(netdev),999(input),1002(spi),100 
3(gpio)
pi@raspberrypi ~ $

von Peter II (Gast)


Lesenswert?

FlorenzW schrieb:
> No access to /dev/mem.

steht doch alles da!

dort hat er keine Rechte, wiederum wenn du jemand dort rechte gibst, 
kann du ihm auch gleich root rechte geben.

von FlorenzW (Gast)


Lesenswert?

Gibt's keine andere Möglichkeit als über /dev/mem auf's GPIO zuzugreifen 
oder ist die library da den einfachen Weg gegangen?

FlorenzW

von Uwe B. (boerge) Benutzerseite


Lesenswert?

MoinMoin,

Stichwort suid-Bit (http://de.wikipedia.org/wiki/Setuid). Probiere mal 
damit rum...

Grüße Uwe

von Peter II (Gast)


Lesenswert?

FlorenzW schrieb:
> Gibt's keine andere Möglichkeit als über /dev/mem auf's GPIO zuzugreifen
> oder ist die library da den einfachen Weg gegangen?

zumindest ist das der schnellste. Man müsste über ein Treiber modul 
gehen, was die IO als eigenes Device anlegt. Keine Ahnung ob es das 
gibt.

Da auf diesen PC ja nicht viele Nutzer gleichzeitig arbeiten, was 
spricht dagegen es als Root laufen zu lassen?

von (prx) A. K. (prx)


Lesenswert?

WiringPi gpio Programm verwenden. Ist langsam, geht aber ohne root. Oder 
damit die benötigten Pins exportieren, um über /sys/class/gpio drauf 
zugreifen zu können. Das SPI ist über /dev/spi-X und dessen Rechte 
verwendbar.

: Bearbeitet durch User
von FlorenzW (Gast)


Lesenswert?

Jetzt ist mir das Problem weitgehend klar. Auf den OneWire kann ich also 
ohne root zugreifen, da hier noch ein Treiber mit entsprechenden Rechten 
dazwischen sitzt. Aber direkt auf die Pins geht's ohne entsprechenden 
Treiber nicht, es sei denn man ist root.

Ich bedanke mich herzlich für Eure Bemühungen,
FlorenzW

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.