I2C changes and NACK messages in kernel 6.16 and up
Posted: Fri Aug 15, 2025 4:58 pm
Hi guys.
So thought I"d open a thread specifically about I2C messages that appear since changes made to I2C code in kernel 6.16.
Thanks to xeno74 for sharing about i2cdetect command which can help. Which is part of the i2c-tools suite. In case it's not installed on your system, as it wasn't on mine.
Note that on modern Debian and based systems i2cdetect may not be in your shell path. This relates to changes made to shell system paths but it can be annoying to deal with. Supposedly it should be there in a root shell but I didn't do that. I'm just used to using sudo which is like an "Ubuntuism" but that won't help tabbing in a rootless shell.
So here's a list of I2C devices as reported by an i2cdetect -l command:
Next I checked for i2c messages in system log:
There's quite a few NACK messages in there. Looks more than when I first noticed back in a 6.16 alpha. What are those devices on the bus?
We are given a clue in dmesg log with device at i2c-8. It's a TI TMP423: This is a temperature sensor:
https://www.ti.com/product/TMP423
We can ask i2cdetect for a list of functionalities:
The sensors command as part of the lm-sensors package can be used to read and show the sensors. It also includes sensors-detect command which can probe for more info about the sensors. Unfortunately the readings I collected earlier are missing from the files I stored all the info in on my USB stick. So will post these later in the next part. However I think it's already quite informative. And a good opportunity for people to post their readings. So I can compare later to see if mine are nominal.
So thought I"d open a thread specifically about I2C messages that appear since changes made to I2C code in kernel 6.16.
Thanks to xeno74 for sharing about i2cdetect command which can help. Which is part of the i2c-tools suite. In case it's not installed on your system, as it wasn't on mine.
Note that on modern Debian and based systems i2cdetect may not be in your shell path. This relates to changes made to shell system paths but it can be annoying to deal with. Supposedly it should be there in a root shell but I didn't do that. I'm just used to using sudo which is like an "Ubuntuism" but that won't help tabbing in a rootless shell.

So here's a list of I2C devices as reported by an i2cdetect -l command:
Code: Select all
i2c-0 unknown Radeon i2c bit bus 0x90 N/A
i2c-1 unknown Radeon i2c bit bus 0x91 N/A
i2c-2 unknown Radeon i2c bit bus 0x92 N/A
i2c-3 unknown Radeon i2c bit bus 0x93 N/A
i2c-4 unknown Radeon i2c bit bus 0x94 N/A
i2c-5 unknown Radeon i2c bit bus 0x95 N/A
i2c-6 unknown Radeon i2c bit bus 0x96 N/A
i2c-7 unknown Radeon i2c bit bus 0x97 N/A
i2c-8 unknown PA Semi SMBus adapter (0000:00:1c.0) N/A
i2c-9 unknown PA Semi SMBus adapter (0000:00:1c.1) N/A
i2c-10 unknown PA Semi SMBus adapter (0000:00:1c.2) N/A
Code: Select all
damien@debian:~$ dmesg | grep i2c
[ 8.919599] i2c_dev: i2c /dev entries driver
[ 8.973935] i2c-pasemi 0000:00:1c.0: NACK, status 0x08210100
[ 8.985731] i2c i2c-8: Detected TI TMP423 chip at 0x4c
[ 9.004937] i2c-pasemi 0000:00:1c.0: NACK, status 0x08210100
[ 9.019684] i2c-pasemi 0000:00:1c.0: NACK, status 0x08210100
[ 9.043933] i2c-pasemi 0000:00:1c.0: NACK, status 0x08210100
[ 9.051931] i2c-pasemi 0000:00:1c.1: NACK, status 0x08210100
[ 9.061739] i2c-pasemi 0000:00:1c.1: NACK, status 0x08210100
[ 9.074995] i2c-pasemi 0000:00:1c.1: NACK, status 0x08210100
[ 9.092947] i2c-pasemi 0000:00:1c.1: NACK, status 0x08210100
[ 9.099951] i2c-pasemi 0000:00:1c.1: NACK, status 0x08210100
[ 9.121934] i2c-pasemi 0000:00:1c.2: NACK, status 0x08210100
[ 9.129954] i2c-pasemi 0000:00:1c.2: NACK, status 0x08210100
[ 9.154773] i2c-pasemi 0000:00:1c.2: NACK, status 0x08210100
[ 9.165687] i2c-pasemi 0000:00:1c.2: NACK, status 0x08210100
[ 9.176944] i2c-pasemi 0000:00:1c.2: NACK, status 0x08210100
We are given a clue in dmesg log with device at i2c-8. It's a TI TMP423: This is a temperature sensor:
https://www.ti.com/product/TMP423
We can ask i2cdetect for a list of functionalities:
Code: Select all
damien@debian:~$ sudo /usr/sbin/i2cdetect -F 8
Functionalities implemented by /dev/i2c-8:
I2C yes
SMBus Quick Command yes
SMBus Send Byte yes
SMBus Receive Byte yes
SMBus Write Byte yes
SMBus Read Byte yes
SMBus Write Word yes
SMBus Read Word yes
SMBus Process Call yes
SMBus Block Write yes
SMBus Block Read yes
SMBus Block Process Call yes
SMBus PEC no
I2C Block Write no
I2C Block Read no
SMBus Host Notify no
10-bit addressing no
Target mode no
damien@debian:~$ sudo /usr/sbin/i2cdetect -F 9
Functionalities implemented by /dev/i2c-9:
I2C yes
SMBus Quick Command yes
SMBus Send Byte yes
SMBus Receive Byte yes
SMBus Write Byte yes
SMBus Read Byte yes
SMBus Write Word yes
SMBus Read Word yes
SMBus Process Call yes
SMBus Block Write yes
SMBus Block Read yes
SMBus Block Process Call yes
SMBus PEC no
I2C Block Write no
I2C Block Read no
SMBus Host Notify no
10-bit addressing no
Target mode no
damien@debian:~$ sudo /usr/sbin/i2cdetect -F 10
Functionalities implemented by /dev/i2c-10:
I2C yes
SMBus Quick Command yes
SMBus Send Byte yes
SMBus Receive Byte yes
SMBus Write Byte yes
SMBus Read Byte yes
SMBus Write Word yes
SMBus Read Word yes
SMBus Process Call yes
SMBus Block Write yes
SMBus Block Read yes
SMBus Block Process Call yes
SMBus PEC no
I2C Block Write no
I2C Block Read no
SMBus Host Notify no
10-bit addressing no
Target mode no