Bird
Raised Fist0
Raspberry Piprogramming~20 mins

Enabling I2C on Raspberry Pi - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
I2C Master on Raspberry Pi
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of the command to check I2C devices?
You have enabled I2C on your Raspberry Pi and connected a device. You run the command i2cdetect -y 1. What output do you expect if a device is connected at address 0x3C?
Raspberry Pi
sudo i2cdetect -y 1
AError: command not found
B
     0 1 2 3 4 5 6 7 8 9 a b c d e f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- 3c -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --
CNo devices found
DDevice detected at address 0x50
Attempts:
2 left
💡 Hint
Look for the hexadecimal address 3c in the output grid.
🧠 Conceptual
intermediate
1:30remaining
Which file enables I2C interface on Raspberry Pi?
To enable the I2C interface on Raspberry Pi, which configuration file do you edit?
A/boot/config.txt
B/etc/modules
C/etc/i2c.conf
D/boot/cmdline.txt
Attempts:
2 left
💡 Hint
This file contains boot-time settings for the Raspberry Pi.
🔧 Debug
advanced
2:00remaining
Why does this Python I2C code raise an error?
You run this Python code to communicate with an I2C device but get an error:
import smbus
bus = smbus.SMBus(0)
bus.write_byte(0x3c, 0x00)
What is the most likely cause of the error?
AThe smbus module is not installed
BThe device address 0x3c is invalid
Cwrite_byte requires three arguments
DBus number 0 is incorrect; Raspberry Pi uses bus 1 for I2C
Attempts:
2 left
💡 Hint
Check which I2C bus number Raspberry Pi uses by default.
📝 Syntax
advanced
1:30remaining
Which command correctly loads the I2C kernel module?
You want to load the I2C kernel module manually. Which command is correct?
Asudo modprobe i2c-dev
Bsudo loadmodule i2c-dev
Csudo insmod i2c-dev
Dsudo modload i2c-dev
Attempts:
2 left
💡 Hint
The command to add kernel modules is a common Linux utility.
🚀 Application
expert
3:00remaining
How to verify I2C is enabled and working on Raspberry Pi?
You want to confirm that I2C is enabled and working on your Raspberry Pi. Which sequence of commands will correctly verify this?
Aecho 'dtparam=i2c_arm=on' > /boot/config.txt → reboot → i2cdetect -y 0
Bsudo modprobe i2c_bcm2708 → i2cdetect -y 0 → reboot
Csudo raspi-config (enable I2C) → reboot → lsmod | grep i2c_dev → i2cdetect -y 1
Dsudo systemctl start i2c.service → i2cdetect -y 1 → ls /dev/i2c-1
Attempts:
2 left
💡 Hint
Use the Raspberry Pi configuration tool and check kernel modules and device scan.

Practice

(1/5)
1. What is the first step to enable I2C on a Raspberry Pi?
easy
A. Run sudo raspi-config and select Interface Options
B. Install I2C drivers manually using apt-get
C. Connect the I2C device before enabling the interface
D. Edit the /boot/config.txt file directly

Solution

  1. Step 1: Open Raspberry Pi configuration tool

    Use the command sudo raspi-config to open the configuration menu.
  2. Step 2: Enable I2C under Interface Options

    Navigate to Interface Options and select I2C to enable it.
  3. Final Answer:

    Run sudo raspi-config and select Interface Options -> Option A
  4. Quick Check:

    Enable I2C via raspi-config = Run sudo raspi-config and select Interface Options [OK]
Hint: Use raspi-config Interface Options to enable I2C quickly [OK]
Common Mistakes:
  • Trying to enable I2C by editing config files without raspi-config
  • Assuming I2C is enabled by default
  • Connecting devices before enabling I2C
2. Which command correctly checks for connected I2C devices on Raspberry Pi?
easy
A. i2cscan -a
B. scan_i2c -list
C. checki2c devices
D. i2cdetect -y 1

Solution

  1. Step 1: Identify the correct I2C scan command

    The standard command to detect I2C devices is i2cdetect -y 1 where '1' is the bus number.
  2. Step 2: Confirm other options are invalid

    Other options are not valid Linux commands for I2C detection.
  3. Final Answer:

    i2cdetect -y 1 -> Option D
  4. Quick Check:

    Use i2cdetect -y 1 to scan I2C devices [OK]
Hint: Use i2cdetect -y 1 to list I2C devices on bus 1 [OK]
Common Mistakes:
  • Using incorrect command names like i2cscan
  • Omitting the bus number in i2cdetect
  • Typing commands with typos
3. After enabling I2C via sudo raspi-config, what is the expected output of i2cdetect -y 1 if a device is connected at address 0x40?
medium
A. An error message: 'command not found'
B. A grid showing 'UU' at 0x40
C. A grid showing '40' at 0x40
D. Empty grid with no addresses

Solution

  1. Step 1: Understand i2cdetect output format

    The command shows a grid of addresses; connected devices show their hex address.
  2. Step 2: Interpret device presence at 0x40

    If a device is at 0x40, the grid will display '40' at that position.
  3. Final Answer:

    A grid showing '40' at 0x40 -> Option C
  4. Quick Check:

    Device address shown as hex number in grid = A grid showing '40' at 0x40 [OK]
Hint: Device addresses appear as hex numbers in i2cdetect grid [OK]
Common Mistakes:
  • Expecting 'UU' which shows kernel driver usage, not just device presence
  • Confusing error messages with device detection
  • Thinking the grid is empty if device is connected
4. You enabled I2C in raspi-config but i2cdetect -y 1 shows no devices. What is a likely cause?
medium
A. You forgot to reboot the Raspberry Pi after enabling I2C
B. All of the above
C. The I2C device is not connected to the Pi
D. The I2C bus number is incorrect

Solution

  1. Step 1: Check if reboot was done after enabling I2C

    Reboot is required to activate I2C changes; missing reboot causes no detection.
  2. Step 2: Verify device connection and bus number

    If device is not connected or wrong bus number used, no devices appear.
  3. Final Answer:

    All of the above -> Option B
  4. Quick Check:

    Missing reboot, no device, or wrong bus = no detection [OK]
Hint: Reboot and check connections if i2cdetect shows nothing [OK]
Common Mistakes:
  • Not rebooting after enabling I2C
  • Assuming device is connected without checking
  • Using wrong bus number in i2cdetect
5. You want to enable I2C on a Raspberry Pi and automatically detect devices on boot. Which sequence correctly achieves this?
hard
A. Enable I2C in raspi-config, reboot, add i2cdetect -y 1 to /etc/rc.local
B. Edit /boot/config.txt to enable I2C, reboot, run i2cdetect -y 0
C. Enable I2C in raspi-config, reboot, run i2cdetect -y 1 manually each time
D. Install I2C drivers manually, reboot, connect device, no further steps

Solution

  1. Step 1: Enable I2C using raspi-config and reboot

    This activates the I2C interface properly on boot.
  2. Step 2: Automate device detection on boot

    Adding i2cdetect -y 1 to /etc/rc.local runs the scan automatically at startup.
  3. Final Answer:

    Enable I2C in raspi-config, reboot, add i2cdetect -y 1 to /etc/rc.local -> Option A
  4. Quick Check:

    Enable, reboot, automate scan in rc.local = Enable I2C in raspi-config, reboot, add i2cdetect -y 1 to /etc/rc.local [OK]
Hint: Enable I2C, reboot, then automate i2cdetect in rc.local [OK]
Common Mistakes:
  • Using wrong bus number in i2cdetect
  • Not rebooting after enabling I2C
  • Assuming manual scan runs automatically without setup
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard