Resetting the I2C driver on a Raspberry Pi

This was a strange one, I had an example for an HMC5883 sensor written in python but no matter what i did I couldn’t get it to work. I checked my hardware and software, all looked OK.

I then decided to scan the I2C bus for a device using sudo i2cdetect -y 1, here is what I saw

sudo-fail

That’s not correct, what you should see is row’s of dashes and if an I2C device is detected it will be listed.

The next step was to remove the device attached, no difference. It was then I decided to reset the I2C bus by sending the following commands via the terminal

disable the I2C driver with
sudo rmmod i2c_dev
sudo rmmod i2c_bcm2708

re-enable it with
sudo modprobe i2c_bcm2708
sudo modprobe i2c_dev

Now run sudo i2cdetect -y 1 with the device connected properly

i2cset-pass

perfect the device is correctly detected at address 1E.

So if you have a problem with an I2C device maybe something to look at there, no idea how this happened.