Beiträge von HarryH

    Ja, ich habe es lokal bei mir mit LE12 ausprobiert, per echo die GPIO Pins umzustellen. Mit den richtigen Ziffern, kam keine Fehlermeldung mehr zurück und das GPIO Pin wurde exportiert. Es war allerdings nur eine Trockenübung, da ich diese Platine selbst nicht einsetze.

    Auch hatte ich bedenken bei den Infos die ich gefunden habe, ob ich mich ggf. um 1 verzählt habe. Wenn man die Ausgabe von gpioinfo (System-Tools Addon muss installiert sein) benutzt zum Vergleich, passt aber alles zusammen: 58 Pins + Nummerierung ab 0, wobei GPIO14 = 14 ist.

    Edit:
    erfolgreicher Probelauf auf GPIO24:
    Zustand vorher:

    GPIO24 zu Ausgang umkonfigurieren:

    Code: console
    echo "536" > /sys/class/gpio/export
    echo "out" > /sys/class/gpio/gpio536/direction

    GPIO24 ist jetzt auf Ausgang umkonfiguriert:

    GPIO24 Pin zurück auf Input stellen und wieder freigeben:

    Code: console
    echo "in" > /sys/class/gpio/gpio536/direction
    echo "536" > /sys/class/gpio/unexport

    Bitte beachten:
    Es ist vermutlich nur eine Frage der Zeit wann diese Möglichkeit die Pins zu konfigurieren aus dem Kernel endgültig rausgeschmissen wird. In Zukunft könnte die Umstellung auf "pinctrl" notwendig sein oder eine Migration zu Python3 die einzig verbleibende Variante für LE12 werden. Aktuell ist nur noch lgpio und gpiozero in den RPi-Tools enthalten. gpiozero setzt auf lgpio auf und macht es unter Umständen einfacher, aber auch langsamer. Zu allem Überfluss ist lgpio auch mit ein paar fiesen Bugs gespickt...

    PS: Von einem Nutzer im LibreELEC Forum kam gerade die Rückmeldung, dass es bei ihm nach den von mir vorgeschlagenen Änderungen wieder funktioniert.

    Quellen:

    wiringPi broken since kernel 6.5.7 · Issue #5668 · raspberrypi/linux
    Describe the bug Starting with kernel 6.5.7 applications which uses gpios are broken. Steps to reproduce the behaviour e.g. the start of an application which…
    github.com
    Trying to write to /sys/class/gpio/export – write error: Invalid argument
    I have an Intel aaeon upboard and I want to use its GPIO pins. To do that I'm trying the below code: echo 17 > /sys/class/gpio/export But when I run it,…
    superuser.com

    Controlling GPIO from Linux User Space
    The Pins They Are A-Changin’

    RobertMV,

    besteht das Problem noch?

    Wenn ja, probiere mal die Zeilen 3/4 passend zu ändern.
    GPIOpin=527
    GPIOpin1=526

    Hintergrund: Die verwendete Schnittstelle sysfs-gpio gilt schon lange als veraltet und wurde im Kernel größer 6.5 geändert. Bisher wurde ein gpiochip0 instanziert. Wobei die 0 den Index im Speicher angibt. Bei neueren Kerneln werden diese GPIOchips dynamisch erzeugt. Vermutlich ist dies auch zwingend notwendig um z.B. den RP1 des Pi5 adressieren zu können. Hier ein Beispiel von meinem RPi4 mit LE12 beta 1.

    Code: console
    # ls -la /sys/class/gpio/
    total 0
    drwxr-xr-x    2 root     root             0 Feb 27 18:26 .
    drwxr-xr-x   50 root     root             0 Jan  1  1970 ..
    --w-------    1 root     root          4096 Apr  9 18:16 export
    lrwxrwxrwx    1 root     root             0 Feb 27 18:26 gpiochip512 -> ../../devices/platform/soc/fe200000.gpio/gpio/gpiochip512
    lrwxrwxrwx    1 root     root             0 Feb 27 18:26 gpiochip570 -> ../../devices/platform/soc/soc:firmware/soc:firmware:gpio/gpio/gpiochip570
    --w-------    1 root     root          4096 Apr  9 18:17 unexport


    Der gpiochip512 ist der mit den 58 adressierbaren GPIO Pins und entspricht dem bisherigen gpiochip0. Damit man keinen "I/O error" oder "Invalid argument" bekommt, muss man diese Zählweise verwenden: Chipnummer + GPIO Nummer

    Alt: 0 + GPIO14 = 14
    Neu: 512 + GPIO14 = 526

    Da ich nicht sicher bin, ob bei Raspberry Pis kleiner als dem RPi5 immer gpiochip512 angelegt wird, sollte man sicherheitshalber mit ls -la /sys/class/gpio/ nachschauen und ggf. neu berechnen.
    Mit cat /sys/class/gpio/gpiochip512/ngpio (Rückgabewert: 58)

    Code: console
    :~ # cat /sys/class/gpio/gpiochip512/ngpio 
    58

    bzw. cat /sys/class/gpio/gpiochip512/label (Rückgabewert: pinctrl-bcm2711) lässt sich prüfen ob man den Richtigen versucht zu benutzen.

    Code: console
    :~ # cat /sys/class/gpio/gpiochip512/label 
    pinctrl-bcm2711

    Auf der Basis dieser Infos könnte man die Bash Skripte vermutlich auch automatisiert suchen lassen.

    Wenn bei Dir auch der gpiochip512 angelegt wurde, sollten Deine beiden Skripte so angepasst wieder funktionieren:

    Bash: irswitch.sh
    #!/bin/bash
        # this is the GPIO pin receiving the shut-down signal
        GPIOpin1=526
    Bash: shutdown.sh
    #!/bin/bash
        if [ "$1" != "reboot" ]; then
          GPIOpin=527
          GPIOpin1=526