#1110749 ee1004 0-0056: Failed to select page 0 (-6)

#1110749#5
Date:
2025-08-10 19:23:35 UTC
From:
To:
After updating to trixie on a desktop PC amd64, I found the following during boot on the screen:
“ee1004 0-0056: Failed to select page 0 (-6)”

There's the context in the dmesg:

[    8.161199] IPMI message handler: version 39.2
[    8.328811] input: PC Speaker as /devices/platform/pcspkr/input/input5
[    8.360453] ee1004 0-0056: Failed to select page 0 (-6)
[    8.360515] ee1004 0-0056: 512 byte EE1004-compliant SPD EEPROM, read-only
[    8.513263] ipmi device interface

Any hint on what exactly failed? Or any high-level description of what failed, in plain terms? With the prior kernel 6.1.0-37-amd64, there was no such message.

According to `dmidecode -t memory`, the PC has two 16 GB DDR4 modules from Samsung, each working at 2933 MT/s and with voltage 1.2 V, and the error-correction type is single-bit ECC.

Gratefully

#1110749#10
Date:
2026-08-25 00:31:45 UTC
From:
To:

Now tested with two equal 32 GB RDIMMs Samsung M393A4K40CB2-CVF installed in DIMM_A1 and DIMM_C1 on ASUS WS C422 PRO/SE with BIOS 4801 with kernel 6.12.101+deb13-amd64. The SPD EEPROM is detected and the ee1004 driver is bound to it, but the driver's attempt to select page 0 fails with -ENXIO. Consequently, the driver's sysfs eeprom attribute cannot be read, and decode-dimms fails. Here is the excerpt from boot time:

[    8.550652] ipmi_si: Trying ACPI-specified kcs state machine at i/o address 0xca2, slave address 0x20, irq 0
[    8.596883] input: PC Speaker as /devices/platform/pcspkr/input/input5
[    8.608418] ee1004 0-0056: Failed to select page 0 (-6)
[    8.608532] ee1004 0-0056: 512 byte EE1004-compliant SPD EEPROM, read-only
[    8.774836] videodev: Linux video capture interface: v2.00

# decode-dimms
Cannot read /sys/bus/i2c/drivers/ee1004/0-0056/eeprom at /usr/bin/decode-dimms line 2455.

The SPD device is instantiated at 0x56:

# dmesg | grep "i2c"| head -1
[    3.138736] i2c i2c-0: Successfully instantiated SPD at 0x56


The device at 0x56 is claimed by ee1004 (“UU” below):

# i2cdetect -y 0
      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         08 -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- UU UU -- -- -- -- -- -- -- --
40: -- -- -- -- 44 -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Direct access to the page-selection addresses 0x36/0x37 fails:

# i2cget -f -y 0 0x36
Error: Read failed
# i2cget -f -y 0 0x37
Error: Read failed

i2cdump returns 0xff for every byte, although the device is claimed by ee1004:

# i2cdump -f -y 0 0x56
No size specified (using byte-data access)
      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................


Could this be related to the way ee1004 attempts to select the SPD page on this particular I2C adapter/controller? In particular, “Failed to select page 0 (-6)” appears to occur before the actual SPD contents can be read.

The SMBus adapter is as follows:

# readlink -f /sys/bus/i2c/devices/i2c-0
/sys/devices/pci0000:00/0000:00:1f.4/i2c-0
# lspci -nn -s 00:1f.4
00:1f.4 SMBus [0c05]: Intel Corporation 200 Series/Z370 Chipset Family SMBus Controller [8086:a2a3]

Gratefully,
Alma

#1110749#19
Date:
2026-08-30 11:07:54 UTC
From:
To:
Hi Alma,

It is unusual for the EEPROM to live at address 0x56. The valid address
range is 0x50-0x57 but they are usually populated in order, so if you
installed your memory modules following the recommended order, they
would show at 0x50 and either 0x51, 0x52 or 0x54.

I see that your motherboard has 8 memory slots, so it is possible that
the whole address range is used, however, considering that you
installed 2 memory sticks and only one address in the range responded
to the probe, I am reasonably certain that the device at address 0x56
is NOT your memory's SPD EEPROM.

I have some SMBus development experience with Asus server boards and my
bet is that the SPD EEPROMs are not connected directly, but instead are
behind an I2C multiplexer. The first set of memory modules would be on
a first segment behind the multiplexer, at addresses 0x50-0x53, and the
other set of memory modules would be on a second segment behind the
multiplexer, also at addresses 0x50-0x53.

I believe this is an incorrect detection and the ee1004 driver should
not bind to address 0x56 on i2c-0 in the first place.

Please try unloading the ee1004 driver, then running i2cdetect again.
If addresses 0x36 and 0x37 do not show on the map, this would confirm
my theory.

#1110749#24
Date:
2026-08-30 15:35:57 UTC
From:
To:
According to page 1-5 of my motherboard manual, dated 2019-10-28, the slots DIMM_A1 and DIMM_C1 should be used when installing two modules (and indeed, they are used as per `dmidecode -t memory` and from what I recall).

Here we go:

# modprobe -r ee1004 && i2cdetect -y 0 && modprobe ee1004
      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         08 -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- 44 -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- 56 -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

What next?