1-Wire und i2C Verbindungsprobleme

  • Ich habe auf einem Pi4 System das OS Bookworm 64Bit Lite installiert. Nun bekomme ich aber keine 1-Wire Konfiguration zum Laufen.
    Ich habe zwar unter raspi-config 1-Wire aktiviert, bekomme aber keine Verbindung hergestellt.

    ls /sys/bus/w1/devices/
    Code Auswählen

    ls: Zugriff auf '/sys/bus/w1/devices/' nicht möglich: Datei oder Verzeichnis nicht gefunden

    Irgenwie wird der 1W-Bus nicht aktiviert.

    Ein anderes Problem ist eine i2C Verbindung zu einer SUSV bzw. macht die Installation der SUSV schon Probleme . Früher musste ich die i2C-Verbindung in der /boot/config.txt

    Code
    dtparam=i2c1=on
    dtparam=i2c_arm=on

    einrichten.

    Den Parameter dtparam=i2c1=on gibt es anscheinend nicht mehr, zumindest wenn ich diesen Parameter nun in der /boot/firmware/config.txt eintrage funktioniert der i2C nicht mehr. Was hat sich da alles beim Pi4 bzw. bei Bookworm geändert?

    Lg

    Chris

    Bullseye, Bookworm, FHEM
    RFXtrx433E, SIGNALduino, nanoCUL433MHz & 868MHz, HomeMatic

    FS20, IT, HomeMatic, WMR200, TEK603, YouLess, APC, SUSV, Resol VBUS, Fronius DataloggerWeb2

  • Burny September 24, 2024 at 7:23 PM

    Added the Label RPi 4
  • Du musst die auf Deinem System befindliche /boot/firmware/overlays/README Datei lesen/beachten.

    Mit dtoverlay=i2c1 [Name: i2c1] aktivierst Du i2c1 an den default-GPIOs 2,3, gleichzeitig auch dtparm=i2c_arm mit der default baudrate von 100000 [Name: <The base DTB>].

    Daneben stehen für den Pi 4 =BCM2711 noch:

    Name: i2c3

    Name: i2c4

    Name: i2c5

    Name: i2c6

    zur Verfügung.


    Für 1-wire gilt dtoverlay=w1-gpio laut [Name: w1-gpio] der README Datei.

    Servus !

    RTFM = Read The Factory Manual, oder so

    Edited once, last by RTFM: W1 ergänzt (September 24, 2024 at 9:15 PM).

  • Zwischenzeitlich habe ich einiges ausprobiert. Unter anderem auch ein apt dist-upgrade. Seit dem funktioniert zumindest der i2c wieder mit der alten Konfiguration.

    Code
    /etc/modules
    i2c-bcm2708
    i2c-dev
    Code
    /etc/modprobe.d/raspi-blacklist.conf
    ### blacklist spi and i2c by default (many users don't need them)
    
    # blacklist spi-bcm2708
    # blacklist i2c-bcm2708
    Code
    /boot/firmware/config.txt
    dtparam=i2c_arm=on
    dtparam=i2c1=on
    dtparam=spi=on


    Aber nach wie vor funktioniert der 1-Wire-Bus nicht.

    Code
    /boot/firmware/config.txt
    ### 1-Wire Temperaturfühler mit externem Pullup Widerstand
    dtoverlay=w1-gpio-pullup

    Darüber finde ich in der Readme keinen brauchbaren Hinweis, damit der 1-Wire-Bus wieder funktioniert.

    Lg

    Chris

    Bullseye, Bookworm, FHEM
    RFXtrx433E, SIGNALduino, nanoCUL433MHz & 868MHz, HomeMatic

    FS20, IT, HomeMatic, WMR200, TEK603, YouLess, APC, SUSV, Resol VBUS, Fronius DataloggerWeb2

    Edited once, last by Burny (September 25, 2024 at 11:10 AM).

  • /boot/firmware/config.txt
    dtparam=i2c_arm=on
    dtparam=i2c1=on
    dtparam=spi=on

    i2c1 kommt in meiner README "Name: <The base DTB>" nicht vor. Ein falscher dtparm Eintrag wird den Bootprozess aber nicht zum Absturz bringen.


    w1-gpio-pullup verlangt einen 4,7 kOhm Widerstand zwischen dem external pullup Pin (default GPIO 5) und dem gpio (1w-data) Pin (default GPIO 4)


    w1-gpio ist das bisherige dtoverlay, bei dem ständig ein pullup zwischen 3,3V und dem gpio (1-w Data) verschaltet ist. Das geschieht duch den internen Pullup im SOC und kann nicht mehr abgeschaltet werden. Wenn Du daher einen weiteren Pullup zwischen 3,3 V und Data "extern" verschaltest, hast Du den Gesamtwiderstand verringert.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Laut Readme

    Code
    $ uname -r
    6.6.51-v8+

    gibt es i2c1

    1-Wire wird aufgrund der langen Leitung mit einem externen Widerstand betrieben.

    Da ist irgendetwas dennoch faul an der aktuellen Bookworm Version. Die 1-Wire Schnittstelle funktioniert nicht. Bei diesem Pi4 System gehe ich auf Bullseye zurück, da ich eine Kopie der vorherigen Version noch habe.

    Ich werde mir eine Testsystem mit Bookworm erstellen um den Fehler zu finden.

    Lg

    Chris

    Bullseye, Bookworm, FHEM
    RFXtrx433E, SIGNALduino, nanoCUL433MHz & 868MHz, HomeMatic

    FS20, IT, HomeMatic, WMR200, TEK603, YouLess, APC, SUSV, Resol VBUS, Fronius DataloggerWeb2

  • Ich verstehe nicht, was Du mir sagen willst.

    dtparam= wird nur verwendet, wenn Du Änderungen/Einstellunhen von "The base DTB" (ganz am Anfang vom README) konfigurieren willst.

    dtoverlay= wird bei allen anderen Modulen verwendet


    dtoverlay=w1-gpio

    dtoverlay=w1-gpio-pullup

    unterscheiden sich, wo die Pullup Spannung herkommt.

    Beim dtoverlay=gpio kommt sie vom 3,3 V Ausgang

    Beim dtoverlay=gpio-pullup kommen 3,3 V vom GPIO Pin 5 (default), sodass über einen 4,7 kOhm Widerstand GPIO Pin 5 mit GPIO Pin 4 extern verbunden werden muss. Das hat mit langer Leitung nichts am Hut.


    Du solltest dtoverlay=w1-gpio mit dem zusätzlichen pullup auf 3,3 V, wie bisher, verwenden.


    Servus !

    RTFM = Read The Factory Manual, oder so

    Edited once, last by RTFM: dtparam berichtigt (September 25, 2024 at 4:08 PM).

  • Post by Nille (September 25, 2024 at 4:01 PM).

    This post was deleted by the author themselves (September 26, 2024 at 9:07 AM).
  • Das muss ich mir noch genauer ansehen.

    Die aktuellen Erkenntnisse tragen noch einiges an Verwirrungen bei.

    Ich habe ein und die selbe Bookworm Lite 64Bit 6.6.51-v8+ SD-Karte an zwei verschieden Pi4 getestet und unterschiedliches erhalten.

    Am Pi4 Model B Rev1.1 2GB funktioniert 1-Wire getestet ohne 1-Wire Tempfühler

    Code
    ls /sys/bus/w1/devices/
    00-1c0000000000  00-9c0000000000  00-ec0000000000  w1_bus_master1

    und i2c

    Code
    i2cdetect -y 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         -- -- -- -- -- -- -- 0f
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: 20 21 22 -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --

    Am Pi4 Model B Rev1.4 4GB funktioniert 1-Wire und i2c nicht.

    Code
    ls /sys/bus/w1/devices/
    ls: Zugriff auf '/sys/bus/w1/devices/' nicht möglich: Datei oder Verzeichnis nicht gefunden
    Code
    i2cdetect -y 1
    Error: Could not open file `/dev/i2c-1' or `/dev/i2c/1': No such file or directory

    Das ist vollkommen unlogisch. Pi4 ist doch Pi4

    Am Pi4 Model B Rev1.4 4GB funktioniert 1-Wire und i2c aber mit Bullseye Lite. Da habe ich nur den Pi3 gegen den Pi4 Model B Rev1.4 4GB ausgetauscht und die SD-Karte des Pi3 drinnen.

    Warum verhalten sich zwei unterschiedliche Revisionen verschieden?

    Ich habe mir vor längerer Zeit einmal die Mühe gemacht meine Erkenntnisse zusammen zu tragen und einen Übersichtsplan zu zeichnen. Anscheinend stimmt zwar meine Zeichnung, aber die Konfiguration von 1-Wire nicht.

    RTFM du redest von GPIO Pin 4 & GPIO Pin 5. An Pin 4 und Pin 5 ist bei mir nichts was mit 1-Wire zu tun hat.

  • Quote

    GPIO4 entspricht PIN-Nummer 7

    Das ist mir schon klar, und ist ein wenig verwirrend unterscheidet man nach GPIO, WiringPi oder Pin.

    Nur GPIO Pin 4 ist nach meiner Auffassung +5V, und GPIO Pin 5 ist I2C Clock.

    Es müsste GPIO 4 - Pin 7 und +3,3V - Pin 1 heissen.

    Bezieht man sich auf die GPIOs, ist GPIO 4 - Pin 7 und GPIO 5 - Pin 29.

    Lg

    Chris

    Bullseye, Bookworm, FHEM
    RFXtrx433E, SIGNALduino, nanoCUL433MHz & 868MHz, HomeMatic

    FS20, IT, HomeMatic, WMR200, TEK603, YouLess, APC, SUSV, Resol VBUS, Fronius DataloggerWeb2

  • Das ist mir schon klar, und ist ein wenig verwirrend unterscheidet man nach GPIO, WiringPi oder Pin.

    Nicht wirklich. So verstehe ich zumindest diesen Satz.

    GPIO + Nummer ist die Bezeichnung für einen Anschluß an den Microcontroller, wo der herausgeführt wird, ist die Pin +Nummer. Die Pinnummern werden nach einer bestimmten Logik an dem mechanischen Erscheinen festgemacht, wobei die Zählweise ausgehend von einem markierten Pin definiert ist. Beim Pi ist dies anders als z.B. bei ICs in DIL.
    Und dann gibt es noch die Signalnamen.

    Beispiel I²C:
    Das Signal SCL des I²C-Busses 1 ist im µC mit GPIO3 verbunden und das wurde an Position 5 (Pin) herausgefüht.

    Aus diesem Grund ist Deine selbserstelltes PDF schlecht gemacht. Du zeigst nur die (mechanische) Pinbelegung, aber im Text verwendest Du auch die Bezeichnung, die links oben in Deinem Bild keine Zuordnung haben.

    WiringPi ist eine Bibliothek. Was da verwendet wird, weiß ich nicht. Aber ich vermute die verwenden eines der drei Namen und dementsprechend mußt Du zuordnen.

    Wenns ner net G'wittern tun tut.

  • verwirrend unterscheidet man nach GPIO, WiringPi oder Pin.

    Deshalb habe ich immer GPIO x verwendet.

    Klickst Du im Link von #9 auf WireringPi, hast Du die Arduino Nummern.

    WiringPi at Raspberry Pi GPIO Pinout


    Die Fiemware vom Pi4 1.2 auf 1.4 hat sich geändert. Ob im autoprobe Fake-Dateien, oder keine Dateien angelegt werden, hat mit dem Funktionieren von w1, oder i2c nichts am Hut. Du musst ein w1, oder i2c Device richtig anschliessen, umzu testen, ob das eingetragene Device Tree Overlay funktioniert.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Kommen wir wieder zurück zu dem eigentlichem Problem.

    OS Bookworm Lite 64Bit ist aktuell. 1-Wire wurde über raspi-config aktiviert und hinterlässt in der Datei /boot/firmware/config.txt den Eintrag

    Code
    [all]
    dtoverlay=w1-gpio

    Warum hat der Pi4 dennoch das Problem das der 1-Wire Bus nicht funktioniert.

    Lg

    Chris

    Bullseye, Bookworm, FHEM
    RFXtrx433E, SIGNALduino, nanoCUL433MHz & 868MHz, HomeMatic

    FS20, IT, HomeMatic, WMR200, TEK603, YouLess, APC, SUSV, Resol VBUS, Fronius DataloggerWeb2

  • Wenn Du wirklich einmal nach Deinen "Erkenntnissen" 5 V mit einem CLK/DATA Pin verbunden hast, könntest Du den GPIO im SoC geschrottet haben.

    Das kannst Du mit "pintest", siehe < man pintest >, überprüfen.

    Dazu darf nichts an den zu prüfenden Pins angesteckt sein.

    GPIO 2,3,4 (= Pin 3,5,7) alles abstecken und < pintest -p 2,3,4 > im Terminal eingeben, ohne Klammern.


    dtoverlay=w1-gpio verlangt die Datenleitung auf GPIO 4 (= Pin7) neben VCC und Ground. VCC und Ground darf nicht vertauscht werden. Siehe Datenblatt Pin Configurations.

    Es darf auch kein weiteres dtoverlay=w1-gpio(-pullup) in config.txt vorkommen und nur einmal der [all] - Filter an letzter Stelle aufscheinen.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Ich habe den Pin-Test ausgeführt.

    Code
    $ pintest -p 4
    This program checks the board's user-accessible GPIO pins. The board's model
    is: Raspberry Pi 4B rev 1.1. The following pins are selected for testing:
    GPIO4
    Please ensure that nothing is connected to any of the pins listed above for
    the test duration.
    Proceed with test? [y/N] y
    Testing GPIO4...ok

    Laut dem Test ist alles in Ordnung. Dennoch funktioniert 1-Wire nicht. Das war ohnehin meine Vermutung, denn wie schon erwähnt funktioniert unter Bullseye Lite 1-Wire.

    Code
    $ ls /sys/bus/w1/devices/
    ls: Zugriff auf '/sys/bus/w1/devices/' nicht möglich: Datei oder Verzeichnis nicht gefunden.
    Code
    sudo nano /boot/firmware/config.txt
    [all]
    dtoverlay=w1-gpio

    Bei der i2c Konfiguration habe ich zumindest einen Fehler gefunden. Hier ist unter Bookworm Lite 64Bit unbedingt darauf zu achten, dass dtparam=i2c_arm=on und dtparam=spi=on in der Datei /boot/firmware/config.txt auf der originalen Position bleiben.

    Früher funktioniert die Einträge am Ende der Datei unter dem Punkt [all] wie ich es seit lange Zeit ausgeführt hatte.

    Lediglich dtparam=i2c1=on darf unter [all] angeführt werden. Zumindest funktioniert es so. Informationen dazu habe ich bisher noch keine gefunden ob es so richtig ist.


    In der Zwischenzeit habe ich Tests mit Bullseye Lite 64Bit und Bookworm Lite 64Bit durchgeführt, und eindeutig festgestellt, das Bookworm Lite 64Bit ein Softwarefehler vorhanden ist, oder ein zusätzliches Treiberpaket notwendig ist, warum die 1-Wire Schnittstelle nicht funktioniert.

    Folgende Vorgehensweise:

    Auf dem Raspberry Pi 4 Model B Rev 1.1 2GB sind 3 I2c Module installiert (1 x I2C_MCP23017 Adr. 20,21, 1 x I2C_MCP23017 Adr. 22 und eine SUSV Adr. 0f, 68)

    Eine frische Imageinstallation mit Bullseye Lite 64Bit auf eine USB-SSD installiert.


    Eine frische Imageinstallation mit Bookworm Lite 64Bit auf eine USB-SSD installiert.

    Ich werde eine frische Bullseye Lite 64Bit verwenden und die Bookworm Version einstweilen vergessen bis das Problem gelöst wurde. Sollte es zu diesem Fehler Updates einmal geben werde ich nochmals einen Test ausführen.

    Grundsätzlich müsste der 1-Wire Treiber von Bullseye auch auf Bookworm funktionieren, sofern es nur am Treiber liegt. Wo sind eigentlich die Gerätetreiber zu finden?

    Lg

    Chris

    Bullseye, Bookworm, FHEM
    RFXtrx433E, SIGNALduino, nanoCUL433MHz & 868MHz, HomeMatic

    FS20, IT, HomeMatic, WMR200, TEK603, YouLess, APC, SUSV, Resol VBUS, Fronius DataloggerWeb2

    Edited 4 times, last by Burny (September 28, 2024 at 11:30 AM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!