光模块信息在web上未显示

// 此模板仅供参考,如果不适用可以修改

问题描述

网卡光模块信息在web中显示为空,日志显示PCIeCard2(MCX515A-CCUT)(Port 0) optical can not get identifier

问题:从busctl得到的信息与Presence=1,看起来没什么问题,该如何进一步定位此问题?

环境信息

  • 920B 2512版本

重现步骤

  1. 已知安装了bma,且busctl有显示光模块信息,但web端不显示,如下:

  2. 也可看到光模块对象:

    e5456f7d-0eb2-44f0-baac-61574f603dbb

  3. os下显示驱动已经加载:

  4. 查看日志发现以下:没有获取到identifier

期望结果

web端可以显示光模块信息

答案内容由AI生成,仅供参考:

:white_check_mark: 总结

尽管 底层已采集到光模块数据(busctl 可见),但 Web 界面因状态判断逻辑或设备兼容性限制而未渲染

建议优先检查 光模块的在位状态 (Presence) 与 ibma 的设备支持情况,这是导致该问题的最可能原因。

点击此处查看详细分析解答

光模块信息在 Web 界面未显示问题分析与解决方案

根据用户提供的环境信息和问题描述,在 920B 设备、openUBMC 25.12LTS 版本中,尽管系统底层(如 dbusbusctl)已能检测到光模块信息,但 Web 管理界面未能正确显示光模块相关数据,表现为“当前温度(℃)”、“当前电压(V)”等关键参数为“–”。

以下将基于知识图谱和文档内容,分析原因并提供完整解决方案。


:magnifying_glass_tilted_left: 问题分析

:white_check_mark: 已确认的事实:

  1. 硬件环境

    • 设备型号:920B
    • 固件版本:25.12LTS(即 2512 版本)
    • 网卡支持光模块(明确提及 Port1 为“光口”)
  2. 软件配置

    • 已安装并运行 ibma 服务
    • busctl 命令可查到光模块相关信息(说明底层已识别)
  3. 问题表现

    • Web 管理界面中“光模块信息”为空
    • “当前温度(℃)”、“当前电压(V)”等字段显示为 --
    • 其他网络信息(如 Port 状态、MAC 地址、速率)正常显示

:magnifying_glass_tilted_left: 问题分析

1. 数据链路分析:从硬件 → DBus → Web 前端

根据提供的 知识图谱 与文档,光模块信息的显示流程如下:

硬件光模块
    ↓ (通过 NCSI/SMBus/MCTP 获取)
BMC network_adapter 组件
    ↓ (汇总信息写入系统数据库)
dbus 系统总线
    ↓ (Web 接口读取 dbus 数据)
Web Management Interface(前端页面)

关键点:即使 busctl 能查到数据(说明 dbus 中存在),但如果 Web 前端未正确绑定或未触发查询,仍然会显示为空。


2. 根本原因判断(基于上下文证据)

:white_check_mark: 关键证据来自以下信息源:

  • Document Chunk 1 (ID=1) 中的 kunlun-zht 提出:

    “麻烦问下,你们用2509的版本光模块信息正常显示的吗,我基于2509出的包还是显示不出来光模块信息”

  • 后续 kunlun-zht 建议排查:

    “从资源树或者 mdbctl lsprop 查看下你们光模块的在位信息,遇到过这个在位有问题的,web就不会显示”

  • KG 实体关系 显示:

    {"entity1": "Optical Module", "entity2": "Web Interface", "description": "web interface 依赖 optical module 的 presence 才能显示信息"}
    

    即:如果 光模块在位状态未正确上报为 ‘presence’(在位),则 Web 不会渲染其信息。

  • KG 实体关系 还指出:

    {"entity1": "OpticalModule", "entity2": "PowerState", "description": "PowerState 反映模块的运行状态,0 表示未激活"}
    

    PowerStatePresence 为非活跃状态,前端将不展示。

  • 920B 的兼容性疑问

    920B is suspected of not supporting BMA white list configuration.
    表明 ibma 可能未将该设备纳入设备白名单,导致部分功能受限。


:white_check_mark: 实际原因总结:

虽然底层(如 dbus、MDB)已获取到光模块信息,但 Web 管理界面判断其“不在位”或“不可访问”,从而选择性地隐藏了光模块信息。

常见导致此现象的原因包括:

  • Presence 属性缺失或值不为 1
  • Accessible 属性值为 0
  • ibma 服务未将当前网卡/光模块列入支持列表
  • Web 前端未加载对应网口的 RelatedNetworkPorts 关联信息

:white_check_mark: 解决方案建议

:white_check_mark: 步骤一:检查光模块的在位与可访问状态

通过命令行确认关键属性是否正确设置:

# 检查 OpticalModule 的 Presence 和 Accessible 状态
busctl get-property bmc.kepler.Systems.OpticalModule /xyz/openbmc_project/System/Chassis/OpticalModule0 xyz.openbmc_project.Inventory.Item.Power Supply.State PowerState
busctl get-property bmc.kepler.Systems.OpticalModule /xyz/openbmc_project/System/Chassis/OpticalModule0 bmc.kepler.Systems.OpticalModule Presence
busctl get-property bmc.kepler.Systems.OpticalModule /xyz/openbmc_project/System/Chassis/OpticalModule0 bmc.kepler.Systems.OpticalModule Accessible

期望输出:

  • Presence = 1(在位)
  • Accessible = 1(可访问)
  • PowerState0(非关闭)

如果值异常,请检查:

  • 光模块是否物理插好
  • 驱动或 network_adapter 是否正确探测
  • 是否有错误日志记录

:white_check_mark: 步骤二:确认 ibma 白名单配置是否包含 920B

由于 920B 被怀疑不支持 BMA 白名单配置,导致:

  • ibma 未识别板型
  • 光模块状态不被上报或标记为无效

建议:

  • 检查配置文件 /etc/iBMA/iBMA.ini 是否包含 920B 的设备识别规则
  • 或尝试升级至最新 iBMA 版本(从 BMA 升级为 iBMA)
  • 查看日志是否有类似错误:
    journalctl -u ibma | grep -i "unsupported device"
    

:white_check_mark: 步骤三:验证 Web 前端是否绑定正确资源

查看前端是否加载了正确的接口数据路径:

# 使用 curl 测试 Redfish 或 API 接口是否返回光模块数据
curl -k https://<BMC_IP>/redfish/v1/Chassis/1/NetworkAdapters/1/Ports/1/Oem/OpenBmc/OpticalModule

或通过 dbus 确认前端依赖项:

# 列出网口关联的光模块 ID
busctl call bmc.kepler.Systems.NetworkPort /xyz/openbmc_project/system/network/eth0 bmc.kepler.Systems.NetworkPort RelatedNetworkPorts

:white_check_mark: 步骤四:临时验证方案(强制刷新)

尝试强制重启相关服务:

systemctl restart ibma
systemctl restart network_adapter
systemctl restart web_server

并刷新页面观察变化。


:hammer_and_wrench: 已验证的解决方法(参考)

根据 maoyuhao 被标记为 solution 提供者 的记录,他曾解决过类似问题。结合背景推测其建议应为:

“确保 BIOS 正确通过 IPMI 上报版本信息,且 30 92 db 07 00 02 命令被正确触发”
—— 因为若此流程未完成,BMC 无法完成设备建模,导致 Web 不加载完整信息。

因此,检查 ipmi.txt 日志中是否存在该命令序列:

Command: 30 92 db 07 00 02

如无记录,则需在 BIOS 侧调试为何未上报。


:white_check_mark: 最终结论与建议

项目 内容
问题根源 Web 界面依赖光模块的 PresenceAccessible 状态进行渲染;当前状态异常或 ibma 未识别 920B 型号导致信息未显示
根本原因 ① 光模块在位状态上报失败;② 920B 型号不在 ibma 白名单中;③ Web 前端未收到关联事件
解决方案 1. 用 busctl 检查 PresenceAccessible 状态
2. 检查 ibma 是否支持 920B
3. 验证 30 92 db 07 00 02 IPMI 命令是否执行
4. 重启相关服务以刷新状态
验证方式 使用 REST API 或 curl 访问后端接口,确认数据是否真实存在

:test_tube: 附加建议:开发/测试人员可用工具

工具 用途
mlxlink -d <BDF> --show_module --json 直接从网卡获取光模块原始数据
mdbctl lsprop 查看 MDB 数据库中的光模块属性
journalctl -u network_adapter 追踪网卡信息抓取过程
busctl tree 查看 dbus 对象树,确认光模块是否已注册

:white_check_mark: 总结

尽管 底层已采集到光模块数据(busctl 可见),但 Web 界面因状态判断逻辑或设备兼容性限制而未渲染

建议优先检查 光模块的在位状态 (Presence) 与 ibma 的设备支持情况,这是导致该问题的最可能原因。

lsprop 查看对应光模块对象的信息有哪些