gpio ist belegt

Begonnen von maci, 06 Januar 2018, 19:50:05

Vorheriges Thema - Nächstes Thema

maci

Hallo,

Ich habe heute, nachdem ich wieder mal die Logs durchgesehen habe folgendes bemerkt. Eine gpio Eingang funktioniert plötzlich nicht mehr.
Ich habe mir dann die älteren FHEM Logs angesehen.
Seit genau 23. 11. 17 um 15:25:03 kam erstmals diese Meldung:
/usr/bin/gpio: Unable to open GPIO direction interface for pin 25: No such file or directory
Da dieser Eingang selten benutzt wird, habe ich es nicht bemerkt, da es bisher keine Auswirkungen auf den Betrieb hatte.

Ich habe nun die RPI_GPIO Definition für diesen Eingang mal gelöscht.
Das zugehörige notify mal deaktiviert.

Wenn ich den Eingang neu anlege kommt die Meldung sofort wieder.
Wenn ich den Eingang direkt im System anlegen will, da er ja auch im Verzeichnis /sys/class/gpio/ nicht vorhanden ist, bekomme ich:
pi@unipisrv:~ $ sudo echo 25 > /sys/class/gpio/export
echo: Schreibfehler: Das Gerät oder die Ressource ist belegt
pi@unipisrv:~ $

Funktioniert also auch nicht.

Der Eingang hängt an der Unipi Platine. Also ist er gegen Überspannung geschützt.

Bei einem sudo gpio -g readall
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
|     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
|   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5v      |     |     |
|   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
|   4 |   7 | GPIO. 7 |   IN | 0 |  7 || 8  | 1 | ALT5 | TxD     | 15  | 14  |
|     |     |      0v |      |   |  9 || 10 | 1 | ALT5 | RxD     | 16  | 15  |
|  17 |   0 | GPIO. 0 |   IN | 1 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
|  27 |   2 | GPIO. 2 |   IN | 1 | 13 || 14 |   |      | 0v      |     |     |
|  22 |   3 | GPIO. 3 |   IN | 1 | 15 || 16 | 1 | IN   | GPIO. 4 | 4   | 23  |
|     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
|  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
|   9 |  13 |    MISO |   IN | 1 | 21 || 22 | 1 | IN   | GPIO. 6 | 6   | 25  |
|  11 |  14 |    SCLK |   IN | 1 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
|     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
|   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
|   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
|   6 |  22 | GPIO.22 |  OUT | 0 | 31 || 32 | 1 | OUT  | GPIO.26 | 26  | 12  |
|  13 |  23 | GPIO.23 |  OUT | 0 | 33 || 34 |   |      | 0v      |     |     |
|  19 |  24 | GPIO.24 |  OUT | 0 | 35 || 36 | 1 | OUT  | GPIO.27 | 27  | 16  |
|  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
|     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+

wir er als Status 1 ausgegeben.

Ich habe bereits gesucht, ob es irgendein Script auf der Raspberry gibt, das diesen GPIO belegt, aber nichts gefunden.

Was kann da sein?

Gruß Georg
Fhem auf Dell Thinclient, Fhem auf Raspebrry Pi4,
UniPi Vers. 1.1 mit Raspberry Pi3, 1wire USB Adapter mit OWX
Netatmo Wetterstation + Regenmesser + Netatmo Thermostat
Homematic mit HMLan

eiten

Hallo Georg,

also, Dein echo nicht funktioniert ist klar, denn: du führst zwar das echo durch sudo als root aus, aber nicht die Weiterleitung per >. Das müsste zum Beispiel so lauten:
sudo bash -c "echo 1 > /sys/class/gpio/export"
Allerdings müsste er dann eher einen Permission denied bringen. Das resource busy kommt tatsächlich nur, wenn der schon verwendet wird. Kannst Du mal posten, was
sudo cat /sys/kernel/debug/gpio
so ausgibt?

Gruss, Edi

Beta-User

#2
Doof gefragt: Das "0V" bedeutet - jedenfalls, wenn ich das zusammen mit https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/ lese - dass dort GND liegt. Würde mich wundern, wenn das jemals geklappt hat.

Oder bin ich da auf dem Holzweg?

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

eiten

Zitat von: Beta-User am 11 Januar 2018, 17:22:25
Oder bin ich da auf dem Holzweg?
Vielleicht, er beschreibt da ja den Fehlerzustand... Keine Ahnung, wie das im funktionierenden Zustand ausgesehen hat  :o

Beta-User

War wohl ein Holzweg; jedenfalls wenn ich jetzt https://fhem.de/commandref_DE.html#RPI_GPIO iVm. http://www.panu.it/raspberry/ richtig verstanden habe. Also: vergesst die vorherige Anmerkung.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

klausw

Zitat von: maci am 06 Januar 2018, 19:50:05
Wenn ich den Eingang neu anlege kommt die Meldung sofort wieder.
Wenn ich den Eingang direkt im System anlegen will, da er ja auch im Verzeichnis /sys/class/gpio/ nicht vorhanden ist, bekomme ich:
pi@unipisrv:~ $ sudo echo 25 > /sys/class/gpio/export
echo: Schreibfehler: Das Gerät oder die Ressource ist belegt
pi@unipisrv:~ $

Dieser Fehler kommt aber auch wenn der GPIO bereits exportiert wurde.
Was zeigt denn "ls -l /sys/class/gpio/" bzw. "ls -l /sys/class/gpio/gpio25"?

Andere GPIO Funktionieren?

Aber die interessantere Frage wäre: was hast du am 23. 11. 17 vor 15:25:03 mit dem Raspberry gemacht  8)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

maci

Zitat von: klausw am 11 Januar 2018, 18:49:25
Dieser Fehler kommt aber auch wenn der GPIO bereits exportiert wurde.
Was zeigt denn "ls -l /sys/class/gpio/" bzw. "ls -l /sys/class/gpio/gpio25"?

Andere GPIO Funktionieren?

Aber die interessantere Frage wäre: was hast du am 23. 11. 17 vor 15:25:03 mit dem Raspberry gemacht  8)

Ergebnis der beiden Abfragen:
i@unipisrv:~ $ sudo ls -l /sys/class/gpio/gpio25
ls: Zugriff auf /sys/class/gpio/gpio25 nicht möglich: Datei oder Verzeichnis nicht gefunden
pi@unipisrv:~ $ sudo ls -l /sys/class/gpio/
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Jan 13 11:50 export
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio10 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio10
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio11 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio11
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio12 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio12
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio13 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio13
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio16 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio16
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio17 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio17
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio19 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio19
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio21 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio21
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio22 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio22
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio23 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio23
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio24 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio24
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio26 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio26
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio27 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio27
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio4 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio4
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio6 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio6
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio7 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio7
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio8 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio8
lrwxrwxrwx 1 root gpio    0 Jan 11 17:12 gpio9 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio9
lrwxrwxrwx 1 root gpio    0 Jan  1  1970 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
lrwxrwxrwx 1 root gpio    0 Jan  1  1970 gpiochip100 -> ../../devices/gpiochip2/gpio/gpiochip100
lrwxrwxrwx 1 root gpio    0 Jan  1  1970 gpiochip128 -> ../../devices/gpiochip1/gpio/gpiochip128
-rwxrwx--- 1 root gpio 4096 Jan 11 17:12 unexport
pi@unipisrv:~ $



Am Raspberry selbst habe ich gar nichts geändert, da ich diese Tage gar nicht zu Hause war.
Fhem auf Dell Thinclient, Fhem auf Raspebrry Pi4,
UniPi Vers. 1.1 mit Raspberry Pi3, 1wire USB Adapter mit OWX
Netatmo Wetterstation + Regenmesser + Netatmo Thermostat
Homematic mit HMLan

klausw

Also funktionieren alle anderen GPIOs.
Die Rechte passen auch.

Das Verzeichnis /sys/class/gpio/gpio25
bei gpio -g readall wird er aber als Input angezeigt.
Irgendwie seltsam, ich habe leider keine Idee woran das liegen kann.
Pilight oder ähnliche Programme, die auf GPIOs zugreifen hast du nicht laufen?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

eiten

Naja, sudo cat /sys/kernel/debug/gpio würde Klarheit verschaffen, was auf welchen gpio zugreift.

maci

Zitat von: eiten am 17 Januar 2018, 10:14:27
Naja, sudo cat /sys/kernel/debug/gpio würde Klarheit verschaffen, was auf welchen gpio zugreift.

Danke das hilft wieder weiter.

Hier mein Ergebnis:
pi@unipisrv:~ $ sudo cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-53, parent: platform/3f200000.gpio, pinctrl-bcm2835:
gpio-4   (                    |sysfs               ) in  lo IRQ
gpio-6   (                    |sysfs               ) out hi   
gpio-7   (                    |sysfs               ) in  lo IRQ
gpio-8   (                    |sysfs               ) in  hi IRQ
gpio-9   (                    |sysfs               ) in  hi IRQ
gpio-10  (                    |sysfs               ) in  lo IRQ
gpio-11  (                    |sysfs               ) in  hi IRQ
gpio-12  (                    |sysfs               ) out hi   
gpio-13  (                    |sysfs               ) out lo   
gpio-16  (                    |sysfs               ) out hi   
gpio-17  (                    |sysfs               ) in  hi IRQ
gpio-19  (                    |sysfs               ) out lo   
gpio-21  (                    |sysfs               ) in  hi IRQ
gpio-22  (                    |sysfs               ) in  lo IRQ
gpio-23  (                    |sysfs               ) in  hi IRQ
gpio-24  (                    |sysfs               ) in  lo IRQ
gpio-25  (                    |ads7846_pendown     ) in  hi   
gpio-26  (                    |sysfs               ) in  hi IRQ
gpio-27  (                    |sysfs               ) in  lo IRQ

gpiochip2: GPIOs 100-101, brcmvirt-gpio, can sleep:
gpio-100 (                    |?                   ) out hi   

gpiochip1: GPIOs 128-135, brcmexp-gpio, can sleep:
gpio-135 (                    |?                   ) in  hi   
pi@unipisrv:~ $


Der ads7846 ist der Touchscreen. Doch warum belegt der Touchscreen einen GPIO Pin, obwohl er per USB angeschlossen ist?

Interessant finde ich nur, dass ich den Touchscreen, bereits 2 Wochen bevor, der Fehler aufgetreten ist, installiert habe.
Fhem auf Dell Thinclient, Fhem auf Raspebrry Pi4,
UniPi Vers. 1.1 mit Raspberry Pi3, 1wire USB Adapter mit OWX
Netatmo Wetterstation + Regenmesser + Netatmo Thermostat
Homematic mit HMLan

eiten

Ich kann mir vorstellen, dass diese Interrupts verwendet werden, um zum Beispiel einen Tiefschlaf zu unterbrechen.
Hm, wie schaut denn deine /boot/config.txt aus? Vielleicht kannst Du da den Interrupt disablen, wenn du ihn auf einen ungültigen GPIO legst (geht bei manchen Overlays, den ads7846 kenn ich nicht.
dtoverlay=ads7846,penirq=255,speed=10000 oder so ähnlich. Die Frage ist dann natürlich, ob der dir nicht deine Signale auf dem GPIO stör wenn du ihn Berührst.

Gruss, Edi

maci

Hier meine boot/config.txt
# For more options and information see
# http://www.raspberrypi.org/documentation/configuration/config-txt.md
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
dtparam=i2c_baudrate=400000
# Enable UniPi RTC chip
dtoverlay=i2c-rtc,mcp7941x
#
#dtparam=i2s=on
dtparam=spi=on
enable_uart=1
# Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi
# 1wire local
#dtoverlay=w1-gpio,gpiopin=5,pullup=on

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
#dtparam=audio=on
max_usb_current=1
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0

dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900

hdmi_drive=1
gpu_mem=128
Fhem auf Dell Thinclient, Fhem auf Raspebrry Pi4,
UniPi Vers. 1.1 mit Raspberry Pi3, 1wire USB Adapter mit OWX
Netatmo Wetterstation + Regenmesser + Netatmo Thermostat
Homematic mit HMLan

eiten

Da haben wir ja den Übeltäter:
dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900

Ich kann mir ehrlich gesagt nicht vorstellen, das das vorher funktioniert hat.... Versuch mal den penirq auf 255 zu setzen, aslo penirq=255 und schau mal, ob dann der Touch noch funktioniert.

Gruss, Edi