ShaneCCC, how can we check I2C speed and other paramets using i2c-tools or other linux software?
There is one way to establish exactly where the problem is. The Linux kernel has its own module for the TSL2561 sensor. Using this module, you can get information bypassing the code of various libraries and other software. If the Linux kernel correctly reads the sensor readings, then it turns out that the problem is in our code. If it also shows incorrect data on bus 0, then the problem is in the hardware or in the kernel of the OS.
Where can I find a tool to build a separate module for an existing kernel? Or do you need to rebuild the kernel with the module? Who can help?
Good morning andrey.kozeletsky & candanoza & vkuruturi & snarky & fbaez1001 & ShaneCCC. Perhaps I managed to localize two probable sources of the problem.
As you remember, at the moment, we know the following:
- Sensors work normally on I2C port 1
- Sensors fail when connected to the I2C 0 bus port.
- The code normally works on Raspberry Pi 2/3 / 3b / Zero / Zero, OrangePi (various models), Pin64, it works normally on I2C port 1. And it intermittently fails on the I2C 0 bus port.
- As previously written in this thread on the I2C 0 bus port, Nvidia Jetson there is an abnormal behavior with TTL logic levels (a problem with voltage levels).
- Additionally, there is such a publication on the forum - the problem of controlling the LED directly. You can read more here: https://devtalk.nvidia.com/default/topic/1052785/jetson-nano/jetson-nano-gpio-example-problem/
How do you think? Maybe the problem arises from the bidirectional translators of the voltage level TXB0108 to GPIO allowing you to switch from 1.8 V module levels to 3.3 V header levels?
Two possible sources of problems:
- Linux libraries, the Linux kernel, etc. That is, the software component.
Who, what ideas how to check and localize it? And how to fix it?
andrey.kozeletsky & candanoza & vkuruturi & snarky & fbaez1001 & ShaneCCC
How much does the level of TTL signals generated by the TXB0108 circuit depend on the power source of the board? The question is how much the board’s performance changes depending on:
- Power supply by USB +5 volt 2 amperes.
- Power supply by USB +5 volt 3 amperes.
- Power on the dedicated power connector
Who and what options can test and with what sensors?
ShaneCCC & vkuruturi & Trumany
Tell me where can I find a workable instruction for rebuilding a Linux ubuntu kernel? I want to check how the kernel modules for sensors work behave in order to localize the problem with user space libraries.
I found some information on our subject. But for a long time (more than 10 years I was not involved in the development of microprocessor technology) … Can someone clearly explain whether this is the source of our problems?
http://www.ti.com/lit/ds/symlink/txb0108.pdf (8.3.5 Pullup or Pulldown Resistors on I/O Lines, page 14)
Have a check below link to build the kernel for Jetson device.
ShaneCC I alrady recompile kernel. New kernel not detect TSL2561…
Problem not solved (((
BME280 detect and work correctly on bus0 and bus1 but, BME280 not an ordinary I2C sensor. If you read its documentation carefully, you will find the following lines in it:
“SDA and SCL are not pure open-drain.” (page 31, 6.2 I²C Interface)
Really, I don’t know which way to dig. What could be the problem? What is so special about bus 0 yet? Maybe somewhere in the kernel some settings are set? What is the difference between bus 0 and bus 1?
ShaneCCC can you add to supported hardware list this device.
I test it on my Jetson Nano. Work perfect. Play video x265 1080p, power from this bank for more than 8 hours (8 hours 16 minutes).
What’s I think if any different is the clock.
Could you probe to check if they are different?
ShaneCCC, how can i do that? I don’t have Oscilloscope…
I am trying to interface the same Temp Sensor MLX90614 but cannot see the device through i2cdetect -y -r 1
Tried on both bus 0 and 1, the same sensor is working with arduino,nanopc and raspberry pi.
Also changed the address of the sensor from default 0x5A to 0x40 it was successfully changed but still unable to connect to the device.
what might be the reason.
Also tried changing the clock speed from 400kHz to 100kHz but still isn’t working
Hi, please refer to comment #13 to set nano into recovery mode, NOT connect external device on I2C pins and probe the pin voltage to check if they are 3.3V correctly.
Ground the two devices.
We were unable to get it working and yes @radford.will we had grounded both devices meaning common ground but still to no avail, finally had to add arduino nano to make the system work.
Hey @priyanshthakore I got it working. The thing is i2c detect was not detecting the mlx90614 sensor. But when I tried to read byte at 0x5A using i2c detect then it read successfully. Then I simply used PyMLX90614 library to read temperature from sensor and it worked. Even i2cdump worked. Idk why i2cdetect is unable to detect the sensor. When I was using the same sensor with raspberry Pi it was getting detected by i2cdetect. Please try this if you get time.
Hey all, I’m having the same problem communicating with sensors via I2C.
Specifically with the mlx90614:
My project requires two sensors:
- mlx90614 - IR Temperature sensor (Default address 0x5A)
- VL6180X - TOF range sensor (Default address 0x29)
The VL6180X is detected correctly and works as expected with the Adafruit CircuitPython Library
The mlx90614 is not being detected by the Jetson Nano
I double checked it works on a RaspberryPi and an Arduino.
I tried both Bus-0 (pins 27, 28) and Bus-1 (pins 3, 5).
I tried both i2cdetect and i2cget (as suggested by @jaditya8889) but was unable to detect anything on address 0x5A
Did anyone had any success making an mlx90614 - IR Temperature sensor work with any of the Jetson Dev Platforms?
I’m still unable to establish a connection on the Jetson Nano Dev Kit and also on the Xavier NX Dev Kit.