ipmb init失败问题分析
更新时间: 2026/05/28
在Gitcode上查看源码

问题背景

  • 单板类型:NA;
  • 软件版本:openUBMC 25.03;
  • 涉及功能:ipmb init;
  • 触发条件:1230版本配置固定的ipmb地址是在platform.sr下的,可以成功,现在2503版本因为要动态获取挪到了root.sr下面。
  • 业务表现:预期ipmb init成功;实际ipmb init失败,报了channel,instance is invalid错误。

问题复现步骤

  1. 1230版本配置固定的ipmb地址是在platform.sr下的,可以成功,现在2503版本因为要动态获取挪到了root.sr下面。
  2. ipmb init失败,报了channel,instance is invalid错误

关键日志信息

查看日志,确认报错如下:

定位过程

json
    "IPMIChannel_A": {
        "ChanType": 0,
        "Instance": 1,
        "ChanPro": 1,
        "ChannelID": 10,
        "DestAddr": 112,
        "SrcAddr": 0,
        "MedType": 1
    },
    "IPMIChannel_B": {
        "ChanType": 0,
        "Instance": 2,
        "ChanPro": 1,
        "ChannelID": 11,
        "DestAddr": 112,
        "SrcAddr": 0,
        "MedType": 1
    },
    "IPMB_A": {
        "ChannelID": 10,
        "SlaveAddr": "#/Accessor_NCA9555_IO1.Value |> expr(($1 & 62)+ ($1 & 1) * 64)",
        "BusID": 1
    },
    "IPMB_B": {
        "ChannelID": 11,
        "SlaveAddr": "#/Accessor_NCA9555_IO1.Value |> expr(($1 & 62)+ ($1 & 1) * 64)",
        "BusID": 2
    },
    "IPMIChannel_C": {
        "ChanType": 0,
        "Instance": 3,
        "ChanPro": 1,
        "ChannelID": 12,
        "DestAddr": 50,
        "SrcAddr": 0,
        "MedType": 1
    },
    "IPMIChannel_D": {
        "ChanType": 0,
        "Instance": 4,
        "ChanPro": 1,
        "ChannelID": 13,
        "DestAddr": 50,
        "SrcAddr": 0,
        "MedType": 1
    },
    "IPMB_C": {
        "ChannelID": 12,
        "SlaveAddr": "#/Accessor_NCA9555_IO1.Value |> expr(($1 & 62)+ ($1 & 1) * 64)",
        "BusID": 1
    },
    "IPMB_D": {
        "ChannelID": 13,
        "SlaveAddr": "#/Accessor_NCA9555_IO1.Value |> expr(($1 & 62)+ ($1 & 1) * 64)",
        "BusID": 2
    }

以上配置在1230版本上都是ok的: 但是在2503版本上提示ERROR:ipmb init failed, because channel , instance is invalid

问题原因

新版本与旧版的配置上会有所差异。

解决方案

修改新版上的配置:

  1. IPMB和IPMIChannel和ChannelID作为IPMB都要配成6

  2. ChanType为1

  3. IPMB的Instances属性要和IPMIChannel的Instance对应

    json
    "IPMB_Bus1": {
        "ChannelID": 6,
        "Instances": [1,3],
        "SlaveAddr": "#/Accessor_IPMBAddr.Value ",
        "BusID": 1
    },
    "IPMB_Bus2": {
        "ChannelID": 6,
        "Instances": [2,4],
        "SlaveAddr": "#/Accessor_IPMBAddr.Value",
        "BusID": 2
    },
    "IPMIChannel_A": {
        "ChanType": 1,
        "Instance": 1,
        "ChanPro": 1,
        "ChannelID": 6,
        "DestAddr": 112,
        "SrcAddr": 0,
        "MedType": 1
    },
    "IPMIChannel_B": {
        "ChanType": 1,
        "Instance": 2,
        "ChanPro": 1,
        "ChannelID": 6,
        "DestAddr": 112,
        "SrcAddr": 0,
        "MedType": 1
    },
    "IPMIChannel_C": {
        "ChanType": 1,
        "Instance": 3,
        "ChanPro": 1,
        "ChannelID": 6,
        "DestAddr": 50,
        "SrcAddr": 0,
        "MedType": 1
    },
    "IPMIChannel_D": {
        "ChanType": 1,
        "Instance": 4,
        "ChanPro": 1,
        "ChannelID": 6,
        "DestAddr": 50,
        "SrcAddr": 0,
        "MedType": 1
    }