Skip to main content
Associate
September 10, 2026
Question

Intermittent WHO_AM_I Register Read Failure with ISM330DHCX

  • September 10, 2026
  • 3 replies
  • 39 views

Hello,

I am using the ISM330DHCX sensor with I²C, and I am facing an intermittent problem while reading the WHO_AM_I register.

I use the following command:

sudo i2cget -y 12 0x6B 0x0F

The expected WHO_AM_I value is:

0x6B

Sometimes the command works correctly and returns:

0x6b

For example, I previously tested it 20 times and received 0x6b successfully every time.

However, sometimes I get:

Error: Read failed

or 0x65, 0x0f, 0x75 .

Earlier, the communication was intermittent: sometimes the sensor responded correctly, and sometimes the read failed.

I also tried:

sudo i2cdetect -r -y 12

but the address 0x6B was not always shown, even when direct reads using i2cget were successful.

My setup is:

  • ISM330DHCX sensor

  • I²C communication

  • CP2112 USB-to-I²C adapter

  • I²C bus: /dev/i2c-12

  • Sensor address: 0x6B

  • WHO_AM_I register: 0x0F

  • And I am using lengthy wires ,connect sensor to CP2112 adapter 

Could someone please help me understand the possible cause of these intermittent WHO_AM_I read failures and suggest how to troubleshoot or solve this issue?

Thank you.

3 replies

Federica Bossi
ST Technical Moderator
September 10, 2026

Hi ​@keerthanaR ,

The intermittent WHO_AM_I read failures are most likely caused by I²C communication issues rather than the ISM330DHCX itself.

Since you sometimes read the correct value (0x6B), sometimes get random values, and sometimes the device is not detected by i2cdetect, this suggests a signal integrity problem.

In your setup, the most likely cause is the use of lengthy wires between the sensor and the CP2112 adapter. Long cables increase bus capacitance and make the SDA/SCL signals more sensitive to noise.

As a first troubleshooting step, I would recommend testing with very short connections between the CP2112 and the sensor.

Let me know.

In order to give better visibility on the answered topics, please click on 'Best answer' on the reply which solved your issue or answered your question.
Associate
September 10, 2026

Hi,

Thanks for the suggestion. I tested the setup using very short jumper wires between the CP2112 adapter and the ISM330DHCX sensor, but I am still seeing the same intermittent behavior.

Sometimes I get the correct WHO_AM_I = 0x6B, but at other times I get incorrect values or Read failed, and occasionally the sensor does not appear in i2cdetect.

I also checked the wiring and measured the SDA/SCL line capacitance; it was around 0.039 nF (39 pF) for each line. The measured voltages are approximately VCC = 3.44 V, SDA = 3.438 V, SCL = 3.439 V when powered.

So, even with short jumper wires, the issue persists.

Andrew Neil
Super User
September 10, 2026

As ​@Federica Bossi said, it still sounds like a signal integrity issue - so:

  1. Use an oscilloscope to verify that the signals are clean, with good edges, and correct levels.
     
  2. If that’s all OK, use an analyser to record & decode the comms.
    Verify against datasheet;
    Compare & contrast working & non-working cases.

 

How, exactly, are you connecting to the ISM330DHCX ?

What pullups are you using?

Are you sure your ground & power connections are good?

Some good, clear photos of your setup may help.

A complex system that works is invariably found to have evolved from a simple system that worked.A complex system designed from scratch never works and cannot be patched up to make it work.