How to operate i2c-2 at 3.3 Volts


I want to operate i2c-2 at 3.3 volts. By default it is set to 1.8V. Can anyone please tell me how to change this?

Thanks in advance

You can use a logic level converter (inexpensive), this is the usual way.

Alternatively, sometimes I/O (e.g., GEN2_I2C_SCL/GEN2_I2C_SDA) capable of working at either level has a 1k pull up resistor currently connected to +1.8V VDDIO which could be removed, with a new 1k pull up added to +3.3V LPO. This page has download available for schematics if you want to see current configuration and possible pull up resistor changes:

Thanks for the reply. I am also facing issues with i2c-1. It was working well till few days back, but now its not detecting slaves. i2cdetect is taking around 20 seconds to sweep through the addresses and no pulses are generated at SDA or SCL. Is it a hardware issue I am facing or some setting has been changed? And how can I solve this issue?

Remotely debugging something like this is difficult (and not necessarily easy with local access). If you flashed or did a software update it is possible it is just software. Otherwise it might be hardware…but there is no way to tell from here. Monitoring logs in /var/log with “tail -f” while doing i2c operations might reveal something. Also, /sys reflects many of the kernel states and their drivers. Perhaps poking around here would reveal something:

sudo find /sys -name '*i2c*'

Did you solve the problem? I met the same trouble

Hi goutamgmb,

GEN2_I2C is pulled up to 3.3V default as you can see in schematic and can be changed to 1.8V by method that linuxdev suggested.