Orin AGX UEFI hangs on I2C EEPROM error that Xavier ignores—what changed in MB2/UEFI boot sequence?

I’m booting an Orin AGX with a custom carrier board using the default devkit (UEFI) images, and early firmware consistently logs:

I> CPUBL-params @ 0x1036000000                                                  
I> Task: Prepare eeprom data (0x50017bd8)                                       
E> I2C: slave not found in slaves.                                              
E> I2C: Could not write 0 bytes to slave: 0x00ac with repeat start true.        
E> I2C_DEV: Failed to send register address 0x00000000.                         
E> I2C_DEV: Could not read 256 registers of size 1 from slave 0xac at 0x0000000.
E> eeprom: Failed to read I2C slave device                                      
C> Task 0x0 failed (err: 0x1f1e050d)                                            
E> Top caller module: I2C_DEV, error module: I2C, reason: 0x0d, aux_info: 0x05  
I> Busy Spin                                                                    

and then the boot stops at 2C.
However, on an otherwise identical custom carrier board + Xavier setup, I see the same I2C error (slave 0x00AC), yet Xavier’s firmware continues and boots into Linux without issue.

[0004.151] E> I2C: slave not found in slaves.
[0004.152] E> I2C: Could not write 0 bytes to slave: 0x00ac with repeat start true.
[0004.153] E> I2C_DEV: Failed to send register address 0x00000000.
[0004.153] E> I2C_DEV: Could not read 256 registers of size 1 from slave 0xac at 0x00000000 via instance 0.
[0004.160] E> eeprom: Failed to read I2C slave device
[0004.165] I> Eeprom read failed 0x3526070d
[0004.170] I> Find /i2c@3180000's alias i2c2
[0004.173] I> Reading eeprom i2c=2 address=0x54
[0004.179] E> I2C: slave not found in slaves.
[0004.182] E> I2C: Could not write 0 bytes to slave: 0x00a8 with repeat start true.
[0004.190] E> I2C_DEV: Failed to send register address 0x00000000.
[0004.195] E> I2C_DEV: Could not read 256 registers of size 1 from slave 0xa8 at 0x00000000 via instance 2.
[0004.205] E> eeprom: Failed to read I2C slave device

What changes in the Orin AGX MB2 or UEFI boot sequence are causing this EEPROM read failure to become fatal, whereas on Xavier it’s non-blocking?
Is there a way to skip or ignore this I²C EEPROM check in Orin’s UEFI (or adjust MB2 behavior) so the boot can proceed as on Xavier?
Any pointers on where this behavior is implemented (MB2, UEFI drivers, CBoot-to-UEFI transition) or how to patch around it would be greatly appreciated.

Hi art.jiang,

What’s the Jetpack version in use?

Do you have the EEPROM on your custom carrier board?
If not, please refer to Modifying the EEPROM before flash.

Hi Kevin,

Thanks a lot for taking a look at this!

The Jetpack version is 5.1.4.

I will try to modify the EEPROM following the instructions - we do not have a EEPROM on the Custom Carrier Board.

We didn’t have a EEPROM in our previous generation (using Xavier), so I’m curious what might be the change from Xavier to Orin that prompt such error?

Thanks,

Art

Okay, please give it a try!

As my understanding, they should be similar process.
Maybe you can also compare the flash log for both Xavier and Orin flashed with JP5.1.4.