Q:

Enabling I2C on Debian - i2cdetect doesn't show device

I am trying to get my laptop to communicate with my SRF02 sensor, which is using a USB-I2C interface. My laptop is running Debian Jessie.
Problem:
When I run sudo i2cdetect -y 0 I see no devices at all. This is the same for port 1 but beyond that lots of devices display at random places (eg port 4 shows a nearly full table). At none of the ports < 3 is EX70 taken, which is the device's default location.
I have tried auto loading i2c-dev on startup but the problem persists. The module docs say you need the FTDI VCP driver but this should be included in the Linux kernel.
I am convinced this is a software issue because I was able to get data using the exact same device and setup from a computer running Windows 8.
There are a lot of posts about this already but all of them are specifically Raspberry Pi based, and use the Raspbian and GPIO pins instead of USB.
EDIT:
Here is a link to the dmesg output just after plugging in the device. The log is too large to post here :P
http://pasted.co/38dc9292
Thanks in advance,
Max

A:

The relevant lines from dmesg are:
[  518.172735] usb 1-3: new full-speed USB device number 4 using xhci_hcd
[  518.306677] usb 1-3: New USB device found, idVendor=0403, idProduct=6001
[  518.306686] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  518.306689] usb 1-3: Product: FT232R USB UART
[  518.306692] usb 1-3: Manufacturer: FTDI
[  518.306695] usb 1-3: SerialNumber: AK04P01W
[  518.309382] ftdi_sio 1-3:1.0: FTDI USB Serial Device converter detected
[  518.309442] usb 1-3: Detected FT232RL
[  518.309445] usb 1-3: Number of endpoints 2
[  518.309448] usb 1-3: Endpoint 1 MaxPacketSize 64
[  518.309450] usb 1-3: Endpoint 2 MaxPacketSize 64
[  518.309453] usb 1-3: Setting MaxPacketSize 64
[  518.309771] usb 1-3: FTDI USB Serial Device converter now attached to ttyUSB0

These are the relevant lines, because by the timestamps they belong together, as reaction to what happens when you plugin the device, and they happen long enough after the boot messages so there's no connection to that.
As you can see, a new USB device is detected, you are given details of the device, and in reaction to that, the module ftdi_sio is loaded, which provides the special device files /dev/ttyUSB0. If no kernel driver would habe been loaded, you could hunt (e.g. with google, or grep the kernel source) for the vendor/product combination (0403:6001, also shown in lsusb), and then try to find a kernel driver for this device.
The bcm2708 driver mentioned in the other answers isn't relevant at all: That's a driver for the I2C bus e.g. for the Raspberry Pi, and not for your laptop.
But we already have a working driver, which just provides a serial interface, and has no connection to the kernel I2C infrastructure. So lmsensors, i2detect etc. all won't work (unless you write or find an additional driver).
The website of your USB-I2C converter you mentioned in the comments explains the protocol to use over the serial link: You send a sequence of bytes, and then optional receive a sequence of bytes as an answer. The command sequence looks like
<command-byte> <address> <register (0-2 bytes)> <data byte count (0-1 bytes)> <write data>

And the webpage for the SRF 02 explains how the registers of the sensor chip look like: 6 registers you can read, one 1 command register you can write.
So, for example, to read the version, you need to read 01 byte from register 00, the default chip address is E0, the LSB is the R/W bit, so instead you use E1 as address, and the required command for the USB-I2C adapter is 55. So the full sequence you'd send over serial is 55 E1 00 01, and then you'd read one byte as answer.
You can do that from the command line:
$ printf '\x55\xE1\x00\x01' > /dev/ttyUSB0
$ hexdump -n 1 -e '"%02x \n"' < /dev/ttyUSB0

Or you can open /dev/ttyUSB0 in your favorite language, and then just read and write bytes using the commands your language provides.

