Menu

#38 Windows ARM64 Support

ipmiutil-3.1.x
closed
None
5
2020-05-28
2019-10-24
No

I have built and run ipmituil on ARM64 windows. I have tested basic commands and twork

I have built this using SSL1.1 and VS 2017 Enterprise Edition(v15.9.17). Please find the attached patch.

Please let me know if you have any question. Or need steps on how to built it in more detail

1 Attachments

Discussion

  • Andy Cress

    Andy Cress - 2019-10-25
    • status: open --> accepted
     
  • Andy Cress

    Andy Cress - 2019-11-25

    Included the changes and binaries in ipmiutil-3.1.5.

     
  • Andy Cress

    Andy Cress - 2019-11-25
    • status: accepted --> closed
     
  • Craig Jackson

    Craig Jackson - 2020-05-23

    ARM64 Windows Server 2019 does allow the program to run, but when I try to run commands against the local BMC, I am unable to get the driver to load. Any special workarounds needed for the KCS interface? Or, could this be some signing issue? Thanks!

    Here is the output from ipmiutil config -x:
    ipmiutil config ver 3.13
    ipmi_open: driver type =
    ipmi_open_ia: error opening \.\Imb to imbdrv.sys
    ipmi_open_ms: cannot open microsoft_ipmi driver (ipmidrv.sys)
    ipmi_open rc = -16 type =
    Driver type , open rc = -16
    Cannot open an IPMI driver: imbdrv.sys or ipmidrv.sys
    ipmiutil config, cannot open IPMI driver

     
  • Andy Cress

    Andy Cress - 2020-05-24

    It sounds like Hozefa built this for use via IPMI LanPlus (remote BMC). For a local BMC, it would need a Windows ARM64 IPMI driver. The Intel IMB driver was never built for ARM, but perhaps the Microsoft ipmidrv.sys was included in the ARM64 build. Does your system have %WIN%\system32\ipmidrv.sys? If not, you would need to contact Microsoft to ask about it.

     
  • Craig Jackson

    Craig Jackson - 2020-05-26

    Thanks for the quick response as always Andy!

    C:\Windows\System32\drivers\IPMIDrv.sys does exist.

    It does load the ipmi driver according to driverquery:
    IPMIDRV IPMIDRV Kernel

    But it seems the part that is missing is the Microsoft_IPMI WMI classes. I am surprised these are platform specific.

    As a sanity check, when I try to instantiate this WMI class on server 2019 x86_64 it works:

    PS C:\Users\Administrator> $CimSession = New-CimSession
    PS C:\Users\Administrator> $ipmi = Get-CimInstance -Namespace root/wmi -CimSession $CimSession Microsoft_IPMI
    

    But on Server 2019 ARM64 it is missing:

    PS C:\Users\Administrator> $CimSession = New-CimSession
    PS C:\Users\Administrator> $ipmi = Get-CimInstance -Namespace root/wmi -CimSession Microsoft_IPMI
    Get-CimInstance : Parameter set cannot be resolved using the specified named parameters.
    At line:1 char:9
    + $ipmi = Get-CimInstance -Namespace root/wmi -CimSession Microsoft_IPM ...
    +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Get-CimInstance], ParameterBindingException
        + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceComma
       nd
    

    I wonder if there is another way to access the ipmidrv.sys functions without the use of a WMI CIM session. I'll try to prototype this, and if I find anything that could be something resembling a good fallback I will report back.

    Thanks!

     
  • Craig Jackson

    Craig Jackson - 2020-05-28

    This has turned out to be a non-issue that only affected the system I was working on. I have logged into another ARM64 machine and ipmiutil works in-band as expected. Sorry for the false alarm. Thanks Andy and Hozefa for enabling this platform!

     

Log in to post a comment.