Special Nvidia Driver Settings
When using Nvidia's proprietary driver, I2C communication fails on some cards.
It works on several older Nvidia cards I have, but failed with my more recent GTX660Ti. (Specfically, I2C reads of 1 or 2 bytes succeeded, but reads of 3 or more bytes failed.) Others have reported similar problems.
Per this discussion, adding the following to the "Device" section for the Nvidia driver resolves the problem for some cards:
Option "RegistryDwords" "RMUseSwI2c=0x01; RMI2cSpeed=100"
A file for making this change is 90-nvidia_i2c.conf located in distribution directory data/etc/X11/xorg.conf.d
Section "Device" Driver "nvidia" Identifier "Dev0" Option "RegistryDwords" "RMUseSwI2c=0x01; RMI2cSpeed=100" # solves problem of i2c errors with nvidia driver # per https://devtalk.nvidia.com/default/topic/572292/-solved-does-gddccontrol-work-for-anyone-here-nvidia-i2c-monitor-display-ddc/#4309293 EndSection
Copy this file to /etc/X11/xorg.conf.d
Note: This file works if there is no /etc/X11/xorg.conf file. If you do have an xorg.conf file the Identifier field will likely require modification.
This does not, however, appear to be a universal solution. It has been reported to fail on a GTX960 with Nvidia driver version 358.16 and a GTX1060 (?) with driver Nvidia driver version ???