wbf
(华鲲Wbf)
1
问题描述
os上电的时候拔nvme硬盘,下电再插上,再上电,此时获取不到温度,看日志scanner加载失败
2026-04-28 10:14:53.390704 hwproxy ERROR: object_manage.lua(283): AddObject Scanner_Temp_0101030C02 failed, life_cycle_id:1, error:./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:990: chip: Chip_Temp_0101030C01, bus: I2c_5, read failed: i2c.lua:120: response error, i2c read fail, ret: 5, input:{“rw_type”:1,“type”:0,“len”:1,“is_trace”:false,“offsetWidth”:1,“addrWidth”:1,“addr”:213,“bus_type”:0,“offset”:3,“requestor”:“Scanner_Temp_0101030C01”,“has_error”:false,“mask”:4294967295,“name”:“Chip_Temp_0101030C01”}
环境信息
重现步骤
-
[第一步]os上电的时候拔硬盘
-
[第二步]下电再插上
-
[第三步]上电
期望结果
能正确获取温度
实际结果
i2c读失败,scanner加载失败
答案内容由AI生成,仅供参考:
Scanner加载失败导致无法获取NVMe硬盘温度问题分析
问题描述
在OpenUBMC2512系统中,当OS上电时拔出NVMe硬盘,然后下电再插入硬盘并重新上电后,系统无法获取硬盘温度信息。日志显示Scanner加载失败,I2C读取操作返回错误。
故障现象
2026-04-28 10:14:53.390704 hwproxy ERROR: object_manage.lua(283): AddObject Scanner_Temp_0101030C02 failed, life_cycle_id:1,
error:./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:990:
chip: Chip_Temp_0101030C01, bus: I2c_5, read failed: i2c.lua:120: response error, i2c read fail, ret: 5,
input:{“rw_type”:1,“type”:0,“len”:1,“is_trace”:false,“offsetWidth”:1,“addrWidth”:1,“addr”:213,“bus_type”:0,“offset”:3,“requestor”:“Scanner_Temp_0101030C01”,“has_error”:false,“mask”:4294967295,“name”:“Chip_Temp_0101030C01”}
问题分析
错误码分析
ret: 5:表示I2C通信失败,这是嵌入式系统中常见的I2C传输错误码
response error:表明在I2C总线上未收到预期的响应
i2c read fail:明确指出I2C读取操作失败
根本原因
根据知识库信息,此类问题通常由以下原因引起:
- I2C总线通信异常:
ret: 5错误码直接关联到I2C通信失败,可能由于设备未正确响应或总线冲突
- 热插拔后的状态不一致:在OS运行时拔插NVMe硬盘可能导致BMC与设备间的状态同步出现问题
- Scanner初始化失败:
AddObject Scanner_Temp_... failed表明温度传感器扫描器对象创建失败
相关技术背景
- 温度传感器监控机制:系统通过I2C总线访问
Chip_Temp芯片来读取NVMe硬盘温度
- Scanner工作原理:BMC使用Scanner组件周期性地轮询硬件传感器状态
- I2C通信依赖:所有传感器数据读取都依赖于稳定的I2C通信链路
解决方案建议
1. 软件层面优化
可参考类似问题的处理方案(如topic_id: 2718),实施防抖机制:
- 连续多次读取失败后再判定为真实故障
- 短时间内允许一定次数的读取重试
- 采用上次有效值作为临时替代
2. 硬件/固件检查
- 检查NVMe硬盘的I2C接口是否正常
- 验证
Chip_Temp_0101030C01设备在I2C总线上的地址(213)是否正确
- 确认I2C总线无冲突或其他设备干扰
3. 系统配置优化
- 增加I2C通信超时时间和重试次数
- 在设备热插拔事件后添加适当的延迟再尝试初始化Scanner
- 完善热插拔处理流程,确保状态同步
预防措施
- 避免在OS运行时热插拔NVMe硬盘
- 完善热插拔处理机制
- 增强I2C通信鲁棒性
- 实现更智能的错误恢复策略
该问题需要结合硬件稳定性、I2C通信可靠性和软件错误处理机制进行综合优化解决。
I2c报错是通常硬件链路的问题,有可能是对端硬件不存在,或者链路不通,请排查下硬件问题
wbf
(华鲲Wbf)
4
硬件肯定没问题,重启就恢复了,而且换了别的机器和别的硬盘也是一样的效果
是否是下电状态下无法访问硬盘导致Scanner报错,上电后可以正常访问,所以上电后重启能恢复