18

I was trying to turn on I2C following this tutorial http://www.raspberrypi-spy.co.uk/2014/11/enabling-the-i2c-interface-on-the-raspberry-pi/

But I have problem which I cannot solve. The command i2cdetect -y 1 returns

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a UU 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

I don't know why it shows all addresses and how can I fix this. I didn't connect anything to my Raspberry Pi. I've just put SD card and installed default OS using NOOBS. But when problem appeared I connected my RTC DS1307 but it didn't affect on i2cdetect output.

Ghanima
  • 15,855
  • 15
  • 61
  • 119
wja
  • 183
  • 1
  • 1
  • 5

5 Answers5

18

Generally this happens because something is pulling SDA (pin 3) low.

The i2cdetect program checks for the existence of a device by sending its address then letting SDA float high. If the device exists it should pull SDA low to signal its presence.

Check your wiring to make sure SDA hasn't been inadvertently connected to ground.

joan
  • 71,024
  • 5
  • 73
  • 106
  • I've used multimeter putting first test lead on SDA and second test lead on GND. I've found there is connection between them. Is it wrong? – wja Jun 20 '15 at 22:08
  • Check the voltage between pin 3 and pin 6 (ground). It should read 3V3. If it does not there is seomthing wrong. Do you have anything connected to the expansion header like a ribbon cable? – joan Jun 20 '15 at 22:15
  • It's 0.06V between pin 3 and 6. I have nothing connected to my device. – wja Jun 20 '15 at 22:19
  • I'd examine the PCB tracks to see if there is a solder bridge. Do you have a gpio library installed? Pin 3 would read low if it was actively being driven low, but by default it should be floating high. – joan Jun 20 '15 at 22:31
  • PCB looks fine. I have fresh Raspbian with updates. I thought gpio library is required only if I want to write code in Python. Should I install python-rpi.gpio? Or maybe there is other gpio library? – wja Jun 20 '15 at 22:37
  • I was just thinking of the quickest way of checking the mode and level of SDA. RPi.GPIO comes pre-installed with Raspbian. I'm not sure how to use RPi.GPIO to test the mode and level in an non-intrusive way. wiringPi has the gpio readall command which would display the information. My pigpio library has a gpio status Python script. http://abyz.co.uk/rpi/pigpio/examples.html – joan Jun 20 '15 at 22:57
  • Mode is ALT0 and level is 1. – wja Jun 20 '15 at 23:46
  • @wja They are as expected. I'd expect to see 3V3 between pin 3 (high) and pin 6 (ground) rather than the measured 0.06V. Carefully try the volatge between pin 1 (3V3) and pin 6. Perhaps your meter is faulty. http://pi.gadgetoid.com/pinout – joan Jun 21 '15 at 07:24
  • There is 3,3V between pin 1 and 6. It's weird because now I checked 3 and 6 again - it's 3,3V as expected. But still ic2detect -y 1 returns all adresses. I have two different multimeters and both of them give the same result. – wja Jun 21 '15 at 08:00
  • @wja Oh dear. The gpios seem to be working as expected. The I2C bus should operate when SDA/SCL are in mode ALT0, and both should normally read as high if the bus is not in use. I'm not aware of another scenario which would give the results you are seeing. – joan Jun 21 '15 at 08:53
  • Should I assume that my RaspberryPI is broken? – wja Jun 21 '15 at 09:42
  • I'm not sure, try wiringPi's pin test and pigpio's gpio test with NOTHING connected to the expansion header. – joan Jun 21 '15 at 10:36
  • Nothing connected, PIN 3 - mode ALT0, level 1 (wiringPi and pigpio give the same result). – wja Jun 21 '15 at 11:09
  • The tests I mentioned test each of the user gpios for read and write access, not just SDA. – joan Jun 21 '15 at 12:25
  • I checked again with nothing connected http://pastebin.com/RbQGDSGV – wja Jun 21 '15 at 16:25
  • @wja You need to run the pin test and gpio test commands. – joan Jun 21 '15 at 16:41
  • This is pintest with failures http://pastebin.com/Udsa1H0E I don't know which test I should run, test.sh is trying to turn leds in endless loop (but I have nothing connected to my pins). – wja Jun 21 '15 at 16:55
  • It does look like SDA is broken. You could confirm with gpio test. – joan Jun 21 '15 at 17:06
  • gpio test result http://pastebin.com/Vfsc301s – wja Jun 21 '15 at 17:12
  • I'd say that is fairly conclusive. Broadcom numbered gpios 2, 4, and 9 are broken. – joan Jun 21 '15 at 17:41
2

In my case it was because broken i2c device was connected (I accidentally reverse connected it to voltage/ground before)

Try using another i2c device

Karol Zlot
  • 123
  • 3
2

I fixed this with a restart. I'm not sure what was wrong but I suspect it had something to do with me using the SDA pin for a button before I tried setting up the i2c module. I'm adding this just in case someone else has made a similar mistake.

Cosmicfool
  • 21
  • 1
2

I saw this happen when I was using the wrong AC adapter; switching to an 'official' AC adapter cleared up the problem for me.

cloudxix
  • 121
  • 2
1

Fixed my PI zero... Near SDA (pin 3) and the SD card slot there are two resistors, touched the connections with a soldering iron and it works now.

Peter
  • 11
  • 1