风扇转速不稳定

是必须要位读吗?没有信息可以看出功能对SMC有要求,但是不用位读就不行。
全靠对比尝试排查出来的。

位读和块读的Accessor是怎么配置的

位读

    "Scanner_Fan1_Presence": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 402656000,
      "Size": 1,
      "Mask": 1,
      "Type": 0,
      "Period": 2000,
      "Debounce": "None",
      "ScanEnabled": "<=/Scanner_PowerGood.Value",
      "NominalValue": 1,
      "@Default" :{
        "ScanEnabled" : 0
      },
      "Value": 0
    },

块读

    "Scanner_Fan1_Presence": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 402656001,
      "Size": 1,
      "Mask": 1,
      "Type": 1,
      "Period": 2000,
      "Debounce": "None",
      "ScanEnabled": "<=/Scanner_PowerGood.Value",
      "NominalValue": 1,
      "@Default" :{
        "ScanEnabled" : 0
      },
      "Value": 0
    },

为什么这里的块读和位读的偏移不一样呢

402656001是读取指定风扇在位的命令字,支持BlockIO。
企业微信截图_17761309774194
402656000是批量获取风扇在位的命令字,支持BitIO,后来改用这个命令字功能正常了。

块读的手动发送可以,scanner配置没法获取是吧

是的

Scanner报错是什么,数据是怎么显示的,Scanner报错的时候手动读能通吗

使用402656001的时候会导致代码流程阻塞,后来捕捉到异常日志
20260413_20:09:3612080:1970-01-01 10:19:50.216788 thermal_mgmt NOTICE: fan_object.lua(727): [HTY] start err_msg:./opt/bmc/libmc/lualib/sd_bus/object.lua:832: ./opt/bmc/libmc/lualib/mc/signal.lua:289: emit signal: nesting is not allowed

lsprop看下当时Scanner对象,看是什么报错,并且再同时手动读取一下

现在问题解决了吗? 风扇转速稳定吗? 大佬

解决方法

问题已解决的话,还请标记下对应回复为解决方案,感谢