Jetson TK1 Not Recognizing Device Slave on i2c Bus

Hi all,

I am trying to get an Adafruit PCA9685 PWM/Servo Driver up and running with my TK1. I have validated that the board works with an Arduino, and is found at address 0x40 of whatever i2c bus it is on.

I have tried getting the device to work on a few buses - GEN1_I2C (on J3A1 21/23) and CAM_I2C (on J3A2 8/11) via a logic level converter (the Adafruit TXB0108), as well as GEN2_I2C (on J3A1 18/20). After wiring the device up, when I try to read the device via

sudo i2cdetect -yr 0

(or whatever number for the appropriate bus), the command returns – in the 0x40 address instead of 0x40 as it should.

The very strange thing is, when using the GEN1_I2C bus, I hooked up an oscilloscope to the SDA and SCL lines, and the lines seem to go haywire (for lack of a better term) after calling the i2cdetect command. Both lines fluctuate rapidly and seemingly randomly for the duration of the command, and do not always even return to 5V/1.8V (after/before the logic level conversion).

At this point I do not know what to do. I am worried that perhaps I damaged the pullup resistors used?

Hopefully someone will be able to help.


First, the TXB0108 doesn’t work well with I2C, usually something like a is used instead.

I’ve used the PCA9685 on several different projects on, and haven’t had any issues. For a TK1:

I would try the Gen2 signals on the Jetson J3A1 connector:

GND J3A1-14 -> PCA9685 (GND)
VCC J3A1-16 -> PCA9685 (VCC – 3.3V)
SCL J3A1-18 -> PCA9685 (SCL)
SDA J3A1-20 -> PCA9685 (SDA)

Good luck!

Thanks for your help (once again)! Right now it looks like the Gen2 bus is working. I know I tried it the other day and it didn’t work; strange that is working now. I’ll update this post if I have the problem again, but for now it looks like everything is working. I will clone your repository and try out the examples and go from there.