串口功能,开启会话时会切到默认连接

问题描述

串口功能:开启会话时会切到默认连接,导致先切串口后再开会话,切换会不符合预期;需要要先开会话再切换,才符合预期

复现

图1先设置BMC串口连到SOL,再开会话,发现打印并不是BMC串口信息,在图2中再次下发切换命令后,图1中会话打印符合预期

命令

get:ipmitool raw 0x3a 0x57

set:ipmitool raw 0x3a 0x1c byte0 byte1

byte0 0x00-面板 (默认)
0x01-SOL
0x02-上行UART
0xFF-无连接
byte1 0x01:Hi1712芯片串口
0x02:Hi1213芯片串口(UBM串口)
0x0a:PCIE SW UART串口
0x0b:PCIE SW SDB UART串口
0x23:HiAM模组1串口
0x24:HiAM模组2串口
0x25:HiAM模组3串口
0x26:HiAM模组4串口
0X37:1825 EXP卡0串口(RNIC0)
0X38:1825 EXP卡1串口(RNIC1)

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

解决方案建议

方案一:升级 rmcpd 组件(推荐)

社区确认该问题已在 rmcpd v1.90.72 及以上版本 中修复。

  • 检查当前版本:ipmcget -d version -t rmcpd
  • 若低于 v1.90.72,请升级至修复版本。

方案二:手动切换串口方向(临时规避)

若无法立即升级,可在会话建立 之后 再执行串口切换,避免被默认路由覆盖。例如:

# 先建立会话
ipmitool sol activate  或 您的自定义会话命令

# 再手动切换串口方向到目标设备
ipmitool raw 0x3a 0x1c <byte0> <byte1>

注意:此方法仅在会话建立后切换才有效,因为此时 BMC 已完成默认路由,后续切换不再被会话激活流程覆盖。

方案三:检查 platform.sr 配置文件

问题可能源于 platform.sr 中串口路由策略的修改。建议对比工作正常的版本(如 25.03)与当前版本的该文件,重点关注:

  • SOL_DEFAULT_TARGET
  • serial_switch_config
  • uart_route_policy

若发现异常,恢复为已知正确的配置即可。

方案四:确认串口方向的持久化策略

根据 Document Chunk #8SerialManagement 对象中的 RetainedPolicyConnectStatusResetPer 属性控制串口连接在掉电/复位后的保留行为。如果策略配置为“复位保留”,会话激活时可能重置为默认值。可尝试修改相关配置以保持手动切换状态。


结论

您遇到的现象是 openUBMC 已知的串口路由逻辑缺陷(尤其在 25.09 版本中),会话建立时强制回退默认连接是根本原因。推荐优先升级 rmcpd 组件至修复版本,或在会话建立后再切换串口作为临时措施。完整验证步骤可参考社区建议:

  1. 检查 rmcpd 版本 → 确保 ≥ v1.90.72
  2. 查看 journalctl -u rmcpd 中是否有 Failed to get serial remote object 等错误
  3. 使用手动命令 ipmcset -t sol -d activate -v 2 0 测试标准 SOL 是否正常,以确认底层路由是否正常
  4. 若问题持续,对比 platform.sr 文件差异并修正

以上分析均基于您提供的 Context(特别是 Document Chunk #5、#8 及相关 Search Results),未引入外部知识。如有其他细节需补充,请提供更多日志或命令输出。

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

根据您提供的问题描述,该现象(开启会话时会自动切到默认连接,导致先切换串口后再开会话不符合预期,需要先开会话再切换才能生效)在 openUBMC 社区中已有明确记录,其核心原因是 SOL(Serial Over LAN)或类似会话建立时串口路由逻辑存在缺陷,导致系统自动回退到默认连接路径(如 PANEL COM),忽略了用户事先的手动切换。


问题原因分析

1. 串口路由默认回退机制

  • 当 BMC 收到建立会话的命令(如标准 ipmitool sol activate 或您使用的自定义 raw 0x3a 0x57 等)时,会调用 serial_mgmt 模块执行串口路由切换。
  • 如果该模块中的关键对象(如 serial_sw_objserial_remote_obj)初始化失败或配置异常,BMC 会强制 fallback 到默认安全路径(即 PANEL COM ↔ BMC COM),而非期望的 SOL COM ↔ SYS COM 路径。
    这一行为导致用户先通过 ipmitool raw 0x3a 0x1c 等命令切换串口后,在建立会话时被重置为默认连接。

2. 直接证据(社区已知问题)

在 openUBMC 25.09 版本中已报告相同表现(参考 Document Chunk #5):

问题本质ipmitool sol activate 未正确将串口路由至主机 OS(SYS COM),而是停留在 BMC 本地(PANEL COM)。
根本原因rmcpd 组件存在串口路由逻辑缺陷,或 platform.sr 配置变更导致默认路径错误。
表现:会话建立成功,但无输出、无交互;用户手动切换后开会话,切换无效。

您的问题场景(使用自定义 raw 命令而非标准 SOL)同样受此底层路由逻辑影响,因为会话激活流程最终通过同一套串口管理机制(serial_mgmt / rmcpd)完成。


解决方案建议

方案一:升级 rmcpd 组件(推荐)

社区确认该问题已在 rmcpd v1.90.72 及以上版本 中修复。

  • 检查当前版本:ipmcget -d version -t rmcpd
  • 若低于 v1.90.72,请升级至修复版本。

方案二:手动切换串口方向(临时规避)

若无法立即升级,可在会话建立 之后 再执行串口切换,避免被默认路由覆盖。例如:

# 先建立会话
ipmitool sol activate  或 您的自定义会话命令

# 再手动切换串口方向到目标设备
ipmitool raw 0x3a 0x1c <byte0> <byte1>

注意:此方法仅在会话建立后切换才有效,因为此时 BMC 已完成默认路由,后续切换不再被会话激活流程覆盖。

方案三:检查 platform.sr 配置文件

问题可能源于 platform.sr 中串口路由策略的修改。建议对比工作正常的版本(如 25.03)与当前版本的该文件,重点关注:

  • SOL_DEFAULT_TARGET
  • serial_switch_config
  • uart_route_policy

若发现异常,恢复为已知正确的配置即可。

方案四:确认串口方向的持久化策略

根据 Document Chunk #8SerialManagement 对象中的 RetainedPolicyConnectStatusResetPer 属性控制串口连接在掉电/复位后的保留行为。如果策略配置为“复位保留”,会话激活时可能重置为默认值。可尝试修改相关配置以保持手动切换状态。


结论

您遇到的现象是 openUBMC 已知的串口路由逻辑缺陷(尤其在 25.09 版本中),会话建立时强制回退默认连接是根本原因。推荐优先升级 rmcpd 组件至修复版本,或在会话建立后再切换串口作为临时措施。完整验证步骤可参考社区建议:

  1. 检查 rmcpd 版本 → 确保 ≥ v1.90.72
  2. 查看 journalctl -u rmcpd 中是否有 Failed to get serial remote object 等错误
  3. 使用手动命令 ipmcset -t sol -d activate -v 2 0 测试标准 SOL 是否正常,以确认底层路由是否正常
  4. 若问题持续,对比 platform.sr 文件差异并修正

以上分析均基于您提供的 Context(特别是 Document Chunk #5、#8 及相关 Search Results),未引入外部知识。如有其他细节需补充,请提供更多日志或命令输出。

提供一下一键日志收集的完整日志