A Single Script to Setup I2C on Your Raspberry Pi
I2C is a data bus that uses two bidirectional lines (SDA and SCL) to connect multiple peripherals to computers and embedded systems. The GPIO 2 and 3 on Raspberry Pi could be used as the SDA and SCL lines for I2C devices. There are many I2C devices could work with your Raspberry Pi, but they are not “plug and play” since Raspberry Pi doesn’t enable I2C by default. You can, of course find some great tutorials on the Internet to enable I2C step by step, such as this one and this one. It is not a difficult task and will not take long time to get it done.
I would like to share a script that could have all these configurations done. This script is extracted from Witty Pi‘s software installing script, and it is proven to work well. This script will enable I2C on your Raspberry Pi and install i2c-tools (if it is not installed yet).
#!/bin/bash # file: setup_i2c.sh # # This script will enable I2C and install i2c-tools on your Raspberry Pi # # check if sudo is used if [ "$(id -u)" != 0 ]; then echo 'Sorry, you need to run this script with sudo' exit 1 fi # enable I2C on Raspberry Pi echo '>>> Enable I2C' if grep -q 'i2c-bcm2708' /etc/modules; then echo 'Seems i2c-bcm2708 module already exists, skip this step.' else echo 'i2c-bcm2708' >> /etc/modules fi if grep -q 'i2c-dev' /etc/modules; then echo 'Seems i2c-dev module already exists, skip this step.' else echo 'i2c-dev' >> /etc/modules fi if grep -q 'dtparam=i2c1=on' /boot/config.txt; then echo 'Seems i2c1 parameter already set, skip this step.' else echo 'dtparam=i2c1=on' >> /boot/config.txt fi if grep -q 'dtparam=i2c_arm=on' /boot/config.txt; then echo 'Seems i2c_arm parameter already set, skip this step.' else echo 'dtparam=i2c_arm=on' >> /boot/config.txt fi if [ -f /etc/modprobe.d/raspi-blacklist.conf ]; then sed -i 's/^blacklist spi-bcm2708/#blacklist spi-bcm2708/' /etc/modprobe.d/raspi-blacklist.conf sed -i 's/^blacklist i2c-bcm2708/#blacklist i2c-bcm2708/' /etc/modprobe.d/raspi-blacklist.conf else echo 'File raspi-blacklist.conf does not exist, skip this step.' fi # install i2c-tools echo '>>> Install i2c-tools' if hash i2cget 2>/dev/null; then echo 'Seems i2c-tools is installed already, skip this step.' else apt-get install -y i2c-tools fi
You will need to have your Raspberry Pi connected to the Internet, and use “sudo sh setup-i2c.sh” to run this script.