// 此模板仅供参考,如果不适用可以修改
问题描述
博通9560 16i raid卡获取不到信息,查看日志发现是self:register_controller_to_sml()这一步异常,错误返回码为:4357。尝试使用华为BMC版本,同样环境raid卡显示正常。
环境信息
-
软件版本:openUBMC 25.12
-
硬件配置:S920S20
// 此模板仅供参考,如果不适用可以修改
博通9560 16i raid卡获取不到信息,查看日志发现是self:register_controller_to_sml()这一步异常,错误返回码为:4357。尝试使用华为BMC版本,同样环境raid卡显示正常。
软件版本:openUBMC 25.12
硬件配置:S920S20
答案内容由AI生成,仅供参考:
根据您提供的问题描述和日志信息,针对 openUBMC 25.12 社区版本中博通9560-16i RAID卡信息获取失败 的问题,结合上下文知识库内容进行系统性分析并提供解决方案。
ret: 4357从日志中可见关键错误提示:
storage ERROR: tasks.lua(92): task [Controller.register_controller.0] error: ...controller_object.lua:706: [Storage] Failed to add controller 0, ret: 4357
结合知识库中的文档和社区案例(参考 Document Chunks ID: 1),该错误码 4357 在闭源模块中定义为 “控制器初始化失败”。进一步排查确认此问题与 RAID卡SDK加载失败或缺失相关协议库 有关。
在社区讨论中存在高度相似的案例(Topic ID: 3032):
Hkzy_licuncai 提出相同错误 Failed to add controller 0, ret: 4357N/A
结论:
ret: 4357多与 底层通信失败、驱动未加载成功或RAID卡自身故障 有关。
您提到:
“尝试使用华为BMC版本,同样环境raid卡显示正常”
这表明:
问题根源锁定在 openUBMC 软件侧对 RAID 卡的管理支持上,尤其是 对博通SDK的支持或共享库加载机制。
根据知识库文档《RAID卡适配指导》(ID: 2)中明确指出:
若出现如下错误:
framework ERROR: adapter.c(603): Failed to load lsi sml library /usr/lib64/libsml_lsi.so ... No such file or directory解决方法是修改
manifest.yaml文件,在libmgmt_protocol下增加配置:- conan: libmgmt_protocol options: storelib_enable: true
此项配置用于启用 RAID 控制器的 动态加载共享库功能(动态加载如 libsml_lsi.so 等)。若未开启,会导致博通等厂商的 SDK 无法加载,从而引发“Failed to add controller”错误。
根据《openUBMC RAID卡管理解耦特性设计说明书》(ID: 2):
dlopen);storelib_enable 以包含对应的协议库;libsml_lsi.so(对应 Broadcom RAID 卡),导致控制器注册失败。
因此,虽然硬件相同且 iBMC 可用,但 openUBMC 构建配置不当会导致同样硬件环境下无法识别 RAID 卡。
storelib_enable 构建选项(推荐)manifest.yml 或对应产品的配置文件。libmgmt_protocol 组件是否启用了 storelib_enable:- conan: libmgmt_protocol
options:
storelib_enable: true
bingo build 重新构建固件包:bingo build -b openUBMC
使用 busctl 检查 PCIe 设备是否已正确识别:
busctl --user introspect bmc.kepler.hwdiscovery /bmc/kepler/Connector/Connector_PCIE_SLOTX | grep "Id\|AuxId"
确认以下信息:
Id = 0x100010e2(Broadcom 设备ID)AuxId = 0x10004010(博通子系统ID)若匹配成功,应能找到对应的 CSR 文件名格式:
<BOM>_<DeviceID>_<SubDeviceID>.sr → 如 14140130_100010e2_10004010.sr
若 CSR 文件缺失或命名不符合规范,需补充至
/opt/bmc/sr/目录,并重启hwdiscovery服务。
博通9560-16i 使用 I2C 协议进行带外管理,地址为 0x02。
运行以下命令检查 I2C 总线是否能访问 RAID 卡:
i2cdetect -y <i2c_bus_number>
注:可通过日志
init.lua(540): sml: set i2c chip定位具体使用的 I2C 总线路径。
| 建议 | 说明 |
|---|---|
| 升级至 openUBMC 25.2.0 或更高版本 | 该版本已集成 RAID卡管理解耦特性,支持多厂商 SDK 动态加载,推荐使用。 |
查看 /tmp/raid_controller_lib.log |
该日志记录 BMC 与 RAID 卡通信细节,有助于定位通信异常。 |
使用 busctl 查询控制器 DBus 对象 |
查看是否生成 /bmc/kepler/Systems/1/Storage/Controllers/Controller_... 对象。 |
| 核对 firmware 版本兼容性 | 博通 9560 固件推荐版本 ≥ 5.290.02,避免使用 EOL 或测试版固件。 |
| 项目 | 内容 |
|---|---|
| 问题现象 | 博通 9560-16i RAID 卡信息获取失败,日志报 ret: 4357 |
| 根本原因 | libmgmt_protocol 未启用 storelib_enable,导致 libsml_lsi.so 未加载 |
| 解决方案 | 修改 manifest.yml 启用 storelib_enable: true 并重新构建固件 |
| 预防措施 | 使用 openUBMC 25.2.0+ 版本,确保 RAID 卡 CSR 文件正确配置 |
请优先执行 方案一。若仍存在问题,欢迎收集
raid_controller_lib.log和framework.log进一步分析。
相关链接:
社区版本只支持华为SP686C系列的RAID卡;
高可用版本才支持博通RAID卡;
manifest.yml中libmgmt_protocol组件添加如下编译选项试试:
- conan: libmgmt_protocol
options:
storelib_enable: true
这里想着在如下配置打开true后就会将storelib_enable:打开,但是是没有效果的,就加了额外的storelib_enable配置,图如下,但是加了以后编译报错了。图如下
conan: “ibmc_sdk/5.12.00.01.b002@openubmc/stable”
options:
rtos_version: rtos_v2
enable_haf: true
这里想着在如下配置打开true后就会将storelib_enable:打开,但是是没有效果的,就加了额外的storelib_enable配置,图如下,但是加了以后编译报错了。图如下
conan: “ibmc_sdk/5.12.00.01.b002@openubmc/stable”
options:
rtos_version: rtos_v2
enable_haf: true
有高可用组件吗 有的话可能是已知问题,联系社区支持协助解决下
请问该问题有解决吗?我也是增加依赖libmgmt_protocol后报同样错误,之前2509版本是没问题的。现在确认就是2512高可用版本libsml_lsi.so库没有打包到rootfs导致的问题,不知道如何配置
已经给解决了
怎么解决的
好的,后面解决了,谢谢你