i2c-detect antwortet auf ALLE adressen!

  • Hallo,

    ich habe ein kleines Problem: Ich habe einen BMP085 für Temperatur- und Luftdruckmessung an das Raspberry PI angeschlossen, Kernelmodule i2c-dev und i2c-bcm2708 geladen, und bis jetzt hat das auch immer zuverlässig funktioniert.

    IRGENDWAS hat sich aber geändert (HW-Defekt)? jetzt funktioniert der Sensor irgendwie nicht mehr.

    Ich bekomme folgende Ausgabe von i2c-detect (also eine Antwort auf ALLEN Adressen), selbst wenn KEINE Hardware am GPIO angeschlossen ist:

    Gibt es dafür eine Erklärung?


    Code
    root@raspberrypi:/home/pi# i2cdetect -y -r 0
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
    10: -- -- 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 
    20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 
    30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 
    40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 
    50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 
    60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 
    70: 70 71 72 73 74 75 76 77
  • Hallo orca30,

    ich gehe davon aus, dass Du den neuesten Kernel (= 3.10...) verwendest. Feststellen kannst Du das mit "uname -r".

    Falls zutreffend, musst Du dafür sorgen, dass zuerst das Kernelmodul "w1-therm" und dann erst "w1-gpio" geladen wird.

    Das kannst Du - vermutlich- in /etc/modules bzw. einem ähnlich benannten Verzeichnis bei raspbian einstellen. Nachdem ich "archlinux" verwende, kann ich es Dir nicht genau sagen (da wäre es im Verzeichnis "/etc/modules-load.d").

    Das ist ein bug (ist bereits weitergeleitet), durch diesen workaround aber kein grosses Problem.

    Hope it helps ;)

  • Hallo,

    danke für die schnelle Antwort. Aber das war es seltsamerweise nicht, ich habe in der modules die Reihenfolge von w1-therm und w1-gpio geändert -> keine Änderung.

    Ich habe aber mittlerweile selbst was rausgefunden:

    lsmod zeigt im Fehlerfall ein Modul i2c_bcm2708 an.

    Wenn man dieses mit rmmod entfernt und mit modprobe i2c-bcm2708 lädt gehts mit i2c-detect, alles ok. :s

    Ich werde mal untersuchen, wo das Fehlerhafte i2c_bcm2708 herkommt.

    Komisch, oder?

  • Sorry, das habe ich oben in der Eile unvollständig gepostet, also nochmal:

    Lade die Module beim Booten in dieser Reihenfolge:

    Code
    w1_therm
    w1_gpio
    i2c_dev
    i2c_bcm2708

    Das sollte funktionieren.

    Gruß, mmi


  • Sorry, das habe ich oben in der Eile unvollständig gepostet, also nochmal:

    Lade die Module beim Booten in dieser Reihenfolge:

    Code
    w1_therm
    w1_gpio
    i2c_dev
    i2c_bcm2708

    Das sollte funktionieren.

    Gruß, mmi

    so ging es bei mir nicht. Erst als ich in der Blacklist die beiden Module wieder hab Blacklisten lassen und dann über modules nachladen lassen war der Fehler weg.

    nach umstellung der modules datei. fehler blieb.

    Code
    i2cdetect -y 0
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
    10: -- -- 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 
    20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 
    30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 
    40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 
    50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 
    60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 
    70: 70 71 72 73 74 75 76 77


    zusätzlich die Blacklist reaktiviert. Fehler ist weg. (aber noch ungetestet)

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

    cu C-3po

  • Ok, das sind je nach Distri die Feinheiten, da muss man etwas "experimentieren". ;)

    Wesentlich ist, daß Du zum Ziel gekommen bist!:thumbs1:

  • Hi
    Ich brauch auch mal Unterstützung.icon_helpnew.gif
    Die Ausgabe sah bei mir genauso aus ... ist also von der Reihenfolge abhängig.
    Leider bekomme ich nicht die Adresse 0×20 angezeigt?!?
    Gleich angeschlossen, nur ohne Taster,LED,Wiederstände.
    Hier mal meine Ausgabe... (gibt es weitere möglichkeiten zu testen?)

    ....
    [ 120.553296] bcm2708_i2c_init_pinmode(0,0)
    [ 120.553327] bcm2708_i2c_init_pinmode(0,1)
    [ 120.553843] bcm2708_i2c bcm2708_i2c.0: BSC0 Controller at 0x20205000 (irq 79) (baudrate 100k)
    [ 120.553964] bcm2708_i2c_init_pinmode(1,2)
    [ 120.553982] bcm2708_i2c_init_pinmode(1,3)
    [ 120.559471] bcm2708_i2c bcm2708_i2c.1: BSC1 Controller at 0x20804000 (irq 79) (baudrate 100k)
    root@rasptemp:~# lsmod
    Module Size Used by
    i2c_bcm2708 3949 0
    i2c_dev 5557 0
    w1_gpio 2363 0
    w1_therm 2921 0
    wire 24832 2 w1_gpio,w1_therm
    cn 4783 1 wire
    snd_soc_bcm2708_i2s 5474 0
    regmap_mmio 2806 1 snd_soc_bcm2708_i2s
    snd_soc_core 131268 1 snd_soc_bcm2708_i2s
    regmap_spi 1897 1 snd_soc_core
    snd_pcm 81593 1 snd_soc_core
    snd_page_alloc 5156 1 snd_pcm
    regmap_i2c 1645 1 snd_soc_core
    snd_compress 8076 1 snd_soc_core
    snd_seq 53769 0
    snd_timer 20133 2 snd_pcm,snd_seq
    snd_seq_device 6473 1 snd_seq
    leds_gpio 2059 0
    led_class 3688 1 leds_gpio
    snd 61291 6 snd_soc_core,snd_timer,snd_pcm,snd_seq,snd_seq_device,snd_compress
    spi_bcm2708 4728 0
    root@raspi:~# i2cdetect -y 0
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    root@raspi:~# i2cdetect -y 1
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    root@raspi:~#
    DANKE für's Helfen.

  • Hallo snake,

    mach' lieber einen neuen thread auf - die beiden i2c Busse arbeiten bei Dir (jetzt) richtig.
    Dein Problem bezieht sich ja vermutlich auf einen i2c slave. Beschreibe dort dann auch genauer, was Du angeschlossen hast.

    Gruß, mmi

  • Nur zur Info ...
    Ich habe irgendwie angenommen dass auf dem Steckbrett die Reihen unten und oben durchgängig sind. icon_wallbash.gif
    Sind aber in der Mitte getrennt.
    Vielleicht hilft es Steckbrettneulingen ( wie mir :) )

Jetzt mitmachen!

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