<div>Hello, Vijay!</div><div> </div><div>It works! It was "i2c-protocol" in DTS.</div><div> </div><div>So step by step for further users:</div><div>1. Enable CONFIG_IPMB_DEVICE_INTERFACE=y in kernel config file;</div><div>2. Add device to DTS:</div><div><div>&i2c6 {<!-- --></div><div>   bus-frequency = <100000>;</div><div>   aspeed,dma-buf-size = <4095>;</div><div>   aspeed,hw-timeout-ms = <300>;</div><div>   status = "okay";</div><div> </div><div>   ina219@45 {<!-- --></div><div>       compatible = "ti,ina219";</div><div>       reg = <0x45>;</div><div>       shunt-resistor = <250></div><div>   };</div><div> </div><div>   ipmb@11 {<!-- --></div><div>       compatible = "ipmb-dev";</div><div>       reg = <0x11>;</div><div>       i2c-protocol;</div><div>    };</div><div>};</div><div> </div><div>Side note: in my case "i2c-protocol" was the root cause of incompatibility with controller</div><div>3. Change channel name in channel_config.json (part of phosphor-ipmi-config) to "Ipmb" from "IPMB".</div><div>Question: Should the number of channel in channel_config.json be the same as I2C bus number?</div><div>4. Change I2C bus number and addresses of BMC (OpenBMC, as in DTS but shifted left by one bit) and controller (again, shifted left by 1 bit) in ipmb-channels.json (part of phosphor-ipmi-ipmb) like this:</div><div><div>{<!-- --></div><div>   "type": "ipmb",</div><div>   "slave-path": "/dev/ipmb-6",</div><div>   "bmc-addr": 34,</div><div>   "remote-addr": 108</div><div>}</div><div>Looks like that's all</div><div> </div><div>Thank you!</div><div> </div></div></div><div>30.04.2020, 00:30, "Vijay Khemka" <vijaykhemka@fb.com>:</div><blockquote><div lang="EN-US"><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">Hi Konstantin,</p><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">If you define device through dts with register 0x11 then device should already be there and you don’t need to define this manually. Please check remote address  entry in case you see issues. I don’t think any controller issues at this time.</p><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">Regards</p><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">-Vijay</p><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p><div style="border-style:solid none none none;border-top-color:#b5c4df;border-width:1pt medium medium medium;padding:3pt 0in 0in 0in"><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"><strong><span style="color:black;font-size:12pt">From: </span></strong><span style="color:black;font-size:12pt">openbmc <<a href="mailto:openbmc-bounces+vijaykhemka=fb.com@lists.ozlabs.org">openbmc-bounces+vijaykhemka=fb.com@lists.ozlabs.org</a>> on behalf of Konstantin Klubnichkin <<a href="mailto:kitsok@yandex-team.ru">kitsok@yandex-team.ru</a>><br /><strong>Date: </strong>Wednesday, April 29, 2020 at 8:09 AM<br /><strong>To: </strong>"Bhat, Sumanth" <<a href="mailto:sumanth.bhat@intel.com">sumanth.bhat@intel.com</a>>, "<a href="mailto:openbmc@lists.ozlabs.org">openbmc@lists.ozlabs.org</a>" <<a href="mailto:openbmc@lists.ozlabs.org">openbmc@lists.ozlabs.org</a>><br /><strong>Subject: </strong>Re: Polling OpenBMC using IPMB</span></p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">Hello, Sumanth!</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">Thank you for the reply, I've found that also it's necessary to  </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">1. Compile ipmi_dev driver into kernel;</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">2. Rename channel in /usr/share/ipmi-providers/channel_config.json - it must be named "Ipmb", not "IPMB"</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">I'm confused with the addresses.</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">On the controller side I open slave device at 0x36 and expect BMC to appear at 0x10 (all in i2cdetect notation).</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">So I assume that in ipmb-channels.json must be the following:</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">"type": "ipmb",</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">"slave-path": "/dev/ipmb-6",</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">"bmc-addr": 34,</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">"remote-addr": 108</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">But ipmbbridged ignores this 34 (0x11 shifted left by 1 bit), instead it instantiates device at 0x10 and the re-instantiate it at what is commanded by some service. What service should it be?  updateSlaveAddrHandler is never called.</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">To override this I've manually changed 0x1010 to 0x1011 in sources and voila - I can now receive the requests from the controller, but it interprets ipmbbridged responses in a wrong manner.</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">I've added some debug (actually a lot of :)) to ipmbbridged, so it dumps what is sent via I2C. Here is the response:</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">=================================================================</p></div><div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">bmcSlaveAddress=0x36 netfn=0x07 lun=0x00 cmd=0x01 cc=0x00</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">>>>> 17 6c 1e 76 36 0c 01 00 23 00 02 08 02 bf 3d 2b 00 00 00 ab 00 00 0d af</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">=================================================================</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">But the controller can't interpret it right:</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">=================================================================</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">ipmi-i2c 2-0011: IPMI message handler: BMC returned incorrect response, expected netfn 7 cmd 1, got netfn 7 cmd c</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">=================================================================</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">I'm not sure if it's a problem in controller's IPMB implementation, or it's the wrong addresses, but this controller works fine with other BMC over IPMB.</p></div></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">Could you please clarify what should be in bmc-addr and remote-addr in ipmb-channels.json?</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">Thank you!</p></div></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">29.04.2020, 13:05, "Bhat, Sumanth" <<a href="mailto:sumanth.bhat@intel.com">sumanth.bhat@intel.com</a>>:</p></div><blockquote style="margin-bottom:5pt;margin-top:5pt"><div><div><p style="margin:0in 0in 0.0001pt 0in">Hi Konstantin,</p><p style="margin:0in 0in 0.0001pt 0in">   Ipmbbridge is the right service. Please override the <a href="https://github.com/openbmc/ipmbbridge/blob/master/ipmb-channels.json">https://github.com/openbmc/ipmbbridge/blob/master/ipmb-channels.json</a> with the IPMB channel relevant on your board.</p><p style="margin:0in 0in 0.0001pt 0in"> </p><p style="margin:0in 0in 0.0001pt 0in">Thanks,</p><p style="margin:0in 0in 0.0001pt 0in">Sumanth</p><p style="margin:0in 0in 0.0001pt 0in"> </p><p style="margin:0in 0in 0.0001pt 0in"><strong><span style="font-family:'calibri' , sans-serif">From:</span></strong> openbmc <<a href="mailto:openbmc-bounces+sumanth.bhat=intel.com@lists.ozlabs.org">openbmc-bounces+sumanth.bhat=intel.com@lists.ozlabs.org</a>> <strong><span style="font-family:'calibri' , sans-serif">On Behalf Of </span></strong>Konstantin Klubnichkin<br /><strong><span style="font-family:'calibri' , sans-serif">Sent:</span></strong> Wednesday, April 29, 2020 3:29 PM<br /><strong><span style="font-family:'calibri' , sans-serif">To:</span></strong> <a href="mailto:openbmc@lists.ozlabs.org"> openbmc@lists.ozlabs.org</a><br /><strong><span style="font-family:'calibri' , sans-serif">Subject:</span></strong> Polling OpenBMC using IPMB</p><p style="margin:0in 0in 0.0001pt 0in"> </p><div><p style="margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="margin:0in 0in 0.0001pt 0in"> </p></div><div><div><p style="margin:0in 0in 0.0001pt 0in">Hello all!</p></div><div><p style="margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="margin:0in 0in 0.0001pt 0in">I've got a Purley motherboard with one of the I2C buses going out from AST2500 to external controller.</p></div><div><p style="margin:0in 0in 0.0001pt 0in">It gets BMC data (sensors, MAC address, etc) by polling it with IPMB.</p></div><div><p style="margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="margin:0in 0in 0.0001pt 0in">I'm trying to find out how to implement it in OpenBMC.</p></div><div><p style="margin:0in 0in 0.0001pt 0in">Is it ipmbbridge service used for this?</p></div><div><p style="margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="margin:0in 0in 0.0001pt 0in">Thank you!</p></div></div><div><p style="margin:0in 0in 0.0001pt 0in">-- </p></div><div><p style="margin:0in 0in 0.0001pt 0in">Best regards,</p></div><div><p style="margin:0in 0in 0.0001pt 0in">Konstantin Klubnichkin,</p></div><div><p style="margin:0in 0in 0.0001pt 0in">lead firmware engineer,</p></div><div><p style="margin:0in 0in 0.0001pt 0in">server hardware R&D group,</p></div><div><p style="margin:0in 0in 0.0001pt 0in">Yandex Moscow office.</p></div><div><p style="margin:0in 0in 0.0001pt 0in">tel: +7-903-510-33-33</p></div><div><p style="margin:0in 0in 0.0001pt 0in"> </p></div></div></div></blockquote><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">-- </p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">Best regards,</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">Konstantin Klubnichkin,</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">lead firmware engineer,</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">server hardware R&D group,</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">Yandex Moscow office.</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in">tel: +7-903-510-33-33</p></div><div><p style="font-family:'calibri' , sans-serif;font-size:11pt;margin:0in 0in 0.0001pt 0in"> </p></div></div></div></blockquote><div> </div><div> </div><div>-- </div><div>Best regards,</div><div>Konstantin Klubnichkin,</div><div>lead firmware engineer,</div><div>server hardware R&D group,</div><div>Yandex Moscow office.</div><div>tel: +7-903-510-33-33</div><div> </div>