But on a new Pi (Raspbian/B+) I could not get it to work until I followed the Advanced option in raspi-config and enbaled i2c there(and rebooted).
This is because newer Raspbian kernels use device tree "to manage some resource allocation and module loading":
The main impact of using Device Tree is to change from everything on, relying on module blacklisting to manage contention, to everything off unless requested...
Raspi-config
is a shell script in /usr/bin
on Raspbian. In the version I'm looking at from a 2015-01-31 image, the "Advanced Option":
Enable/Disable automatic loading of I2C kernel module
Does a couple of things:
Older versions of the script would not have had step #1 because it was not required with older kernels. The i2c module would have been loaded by default, so "enabling" it was just a matter of making sure it wasn't previously blacklisted. Newer versions of the kernel require a line be added to config.txt
; you would have to reboot to make this effective.