Raspberry Pi Zero W: SPI funktioniert nicht für RFM96W LoRa-Modul

  • Ich habe zwei Stück Adafruit RFM96W LoRa-Module, die via SPI an den Raspberry angeschlossen sind. An einem Raspberry Pi 2 und einem Raspberry Pi 3 funktionieren diese Module problemlos (Testskript von hier), die Datenübertragung quer durch die Wohnung klappte einwandfrei und auf Anhieb. Mit keinem meiner beiden Raspberry Pi Zero W V1.1 funktionierte jedoch das Lesen von Daten via SPI: Konkret liefert self.spi_read(REG_01_OP_MODE) (Zeile 267 im Testskript) immer 0, dh, ich scheitere bereits am Initialisieren, da via SPI nichts Sinnvolles eingelesen werden kann.

    Was ich bisher erfolglos versuchte:

    1) MISO MOSI Loopback klappt (https://www.raspberrypi.org/documentation/…troubleshooting).

    2) lsmod | grep spi liefert:
    spidev 7034 0

    spi_bcm2835 7424 0

    3) ls -l /dev/spi*

    crw-rw---- 1 root spi 153, 0 Dec 30 07:40 /dev/spidev0.0

    crw-rw---- 1 root spi 153, 1 Dec 30 07:40 /dev/spidev0.1

    4) rpi-update, dist-upgrade etc habe ich durchgeführt.

    Kernelversion: 4.9.70+ #1068 Mon Dec 18 21:54:13 GMT 2017 armv6l GNU/Linux

    5) Kreuzweises Tauschen von Drähten, LoRa-Modulen etc habe ich durchgeführt, ohne Ergebnis. Insgesamt sehe ich nur, dass Pi2 und Pi3 funktionieren, die beiden PiZeroW nicht.

    Hat hier jemand eine Idee dazu?


    Vielen Dank und liebe Grüße, Thomas

  • Raspberry Pi Zero W: SPI funktioniert nicht für RFM96W LoRa-Modul? Schau mal ob du hier fündig wirst!

    • Offizieller Beitrag

    Hallo smtp,

    war Dein Zero W bereits mit Stiftleiste bestückt (kann man so kaufen) oder hast Du selber gelötet? :denker: Ein "nicht gelungene" Lötstelle wäre zumindest eine mögliche Fehlerquelle.

    :no_sad:

    Lies mal hier: https://www.elektronik-kompendium.de/sites/raspberry-pi/2006061.htm

  • Bei beiden Pi Zero W habe ich selbst die Stiftliste angelötet. Aber abgesehen davon, dass ich eh ganz gut löten kann, ist es denke ich unwahrscheinlich, dass ich zwei mal an gleicher Stelle eine kalte Lötstelle produziere. Danke für den Hinweis bezüglich rpi-update - das war schon mehr eine Verzweiflungstat, weil ich sonst keinerlei Idee mehr habe, was da noch konkret bei den Zeros falsch sein könnte. :(

  • Moin smtp,

    schon mal mit der SPI-Baudrate gespielt??

    488000 Hz könnte schon zu viel sein. Siehe Zeile 247 in deinem Code.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin smtp,

    mhm, das ist auch meine einzigste Idee gewesen.

    Wegen Fehlermeldungen hast sicherlich schon im Log nachgesehen?

    Sri, ich passe.

    Eventuell hat jemand anderes aus dem Forum noch eine Idee.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Servus smtp,

    also ich würde jetzt erst mal ein frischen Image aufspielen.

    DG8BR  hyle hatte Dir ja schon den Hinweis wegen rpi-update gepostet ... wer weiss, was Du Dir damit verbogen hast.

    Danach mal am Zero mit dem frischen OS SPI aktivieren und nochmal ausprobieren.

    Und schau mal in's Log, was der zum Thema SPI so alles von sich gibt.

    cu,

    -ds-

    • Offizieller Beitrag

    Hallo dreamshader ,

    Hmm :denker:  hyle war das doch mit dem unaussprechlichem, unschreibbarem rpi-das_hat_Dir_der_Teufel_gesagt Befehl. :shy:

    BTW: Das wäre auch mein Vorschlag, ein neues aktuelles OS aufsetzen, erstmal ohne jeglichem update oder upgrade! Und "step by step" von vorne anfangen.

  • Vielen Dank für eure Hilfe! Leider ohne Erfolg. :(

    *Die Logfiles sind diesbezüglich vollkommen leer, in /var/log/ ändert sich nicht einmal der Zeitstempel irgendeiner Datei, wenn ich auf das LoRa-Modul zugreifen will (dmesg ist auch ohne Änderung).

    * Da ich ja zwei Zeros habe, habe ich beim zweiten ohnehin mit einem vollkommen neuen OS gestartet und erst sukzessive Updates inkl rpi-update durchgeführt.

    * Was ich in meiner Verzweiflung auch noch ausprobierte: Ich habe die Versorgungsspannung des LoRa-Moduls statt auf 3V3 auf 5V gehängt (nachdem das Modul einen Pegelwandler hat, ist das unfallfrei möglich). Das hat aber auch nicht das gewünschte Resultat gezeigt.

    Ich werde als nächstes mal mit einem SPI-IC (zB einem MCP23S17) schauen, ob wenigstens der funktioniert.

  • Gelöst!

    tl;dr: Irgendwo nach Kernel 4.9.41 schleicht sich ein Fehler ein, der SPI so kaputt macht, dass der RFM96W-Baustein nicht mehr angesprochen werden kann.

    Wie bin ich darauf gekommen?
    Ich habe ja wie oben beschrieben je einen Pi2 und Pi3, auf denen der RFM96W tadellos funktionierte. Spaßeshalber machte ich auf dem Pi3 ein

    Code
    sudo apt-get update
    sudo apt-get upgrade

    wie es in https://www.elektronik-kompendium.de/sites/raspberry-pi/2006061.htm als "empfohlen" bezeichnet wird. Dabei wurde der Kernel von 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 auf 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 aktualisiert. Und siehe da, ich kann den RFM96W nicht mehr initialisieren. Also habe ich mit rpi-upgrade wieder auf einen älteren Kernel zurück gestellt (konkret 4.9.30) und es funktionierte wieder. Ich habe dann die Zeros auch auf 4.9.30 gestellt, und auch hier klappt's nun.

    Das wirklich Unangenehme an der ganzen Geschichte: Die beiden Zeros waren einfach jünger als die Pi2/Pi3, und haben ihre jeweiligen neueren Kernels auf ganz natürlichem Wege via apt-get update/upgrade erhalten.

    Kann ich diesen Bug irgendwo melden?

    Danke an alle für eure Unterstützung und Tipps hier im Thread! :)

    Schönes neues Jahr,

    Thomas

  • Moin smtp,

    das freut mich für dich!

    Aber ich denke das ein kein Fehler in der SPI-Routine des Kernels vorliegt. Dann hätte es schon längst einen Aufschrei gegeben.

    Das ist , von meiner Seite, Spekulation.

    Mhm, wo du das melden kannst.... Keine Ahnung.

    Aber hier lesen viele mit. Da hat sicher jemand einen Tipp.

    Dir auch ALLES Gute für das neue Jahr.

    Gruss Bernd

    ps.: Bitte dein Thema beizeiten als erledigt markieren

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

    Einmal editiert, zuletzt von Bernd666 (1. Januar 2018 um 18:50) aus folgendem Grund: ein gestrichen, kein gesetzt

  • Hi smtp,

    das ist doch mal eine interessante Entdeckung. Ich selbst habe noch nie einen Patch bei den Kernelentwicklern eingereicht, aber wenn du tatsächlich einen Bug gefunden haben solltest, wovon ja auszugehen ist, würde es denke ich sinnvoll sein, diesen zu melden oder sogar zu fixen. So haben alle was davon!

    Was ich nun tun würde:

    - Die genaue Version herausfinden (4.9.30 und 4.9.41 gehen, 4.9.59 nicht mehr, aber es ist dennoch ein großer Sprung)

    - Im Release-Log schauen, was geändert wurde - eventuell auch im Sourcecode, wenn du dir das zutraust

    - Bei der LKML (Linux Kernel Mailing List) nachfragen und/oder

    - Auf https://bugzilla.kernel.org einen Bug reporten

    Edit: das ganze weicht allerdings wohl ab, wenn der Bug in Code von der Raspi-Foundation liegt und nicht im Upstream-Kernel. Bin mir da nicht sicher, ob der Raspi allein auf SPI-Support im vanilla Kernel setzt oder ob da was drangebastelt wurde.

    Solltest du das angehen wollen: viel Erfolg und halte uns doch auf dem laufenden!

  • Ich denke in der Tat nicht, dass das ein genereller Fehler in den SPI-Routinen des Kernels ist (zB hat ja auch wie weiter oben geschrieben das Loopback funktioniert). Eher ist's wahrscheinlich in spezielles Problem des Adafruit RFM96W mit bestimmten Kernelversionen.

    Da ich selbst von Kernel-Entwicklung überhaupt keine Ahnung habe, werde ich einfach an Adafruit schreiben. Die können sowas sicher besser lösen als ich.

    Einmal editiert, zuletzt von smtp (1. Januar 2018 um 18:27)

Jetzt mitmachen!

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