将受控电源,传感器和继电器连接到服务器主板。没有arduino

通过板载控制器(BMC)的IPMI接口,通过I²C总线将各种传感器,传感器,继电器,GPIO扩展器和其他“ Arduino”设施直接连接到服务器主板。 I²C设备的实际示例,并通过命令行实用程序进行操作ipmitool。 SMBus,PMBus和电源管理。没有非常有据可查的限制和安全问题。揭露所有权

以临时设计安装服务器之后,有时您需要将其连接到其他设备:例如,温度,压力,湿度传感器,LCD屏幕甚至PWM电机驱动器。在整个服务器中,有些故障的外部设备必须使用继电器(而非水平)进行远程和硬复位。或者,也许读者只是想要带花环的LED梳状GPIO?如果这不是单板型Raspberry Pi,而是全尺寸服务器,则必须挂起微控制器并对其进行处理:编写固件,测试,与主机建立连接等。有时,这本身很有趣,但是反过来又发生了:如果只有脚本可以运行,编写脚本并运行它会更快。

作者中不常见的铁质连接器总是引起工程技术瘙痒和通风拜物教的混合感觉。这些有趣的连接器在这里讨论。

免责声明


如果您在Geektimes门户之外的某个地方阅读本文,建议您在一两个星期内查看一个真实的链接事实是,读者最有趣的评论会出现在插图的此处(即此处),我并不是在说消除缺点和错误。碰巧的是,俱乐部的愤怒居民从字面上将一件坏东西撕成碎片,同时将作者送进了业力深渊。换句话说,如果未打开真实的链接,那么您不应在这个地方读得更多。

作者向远东(直接从北大西洋上空的天空)致以问候,并向受人尊敬的商标的记者道歉:他们不需要太多的广告,因此我想出了漫画的名字。因此,本文适用于Super Miron产品,但作者对Kharlampiy-Pankrat,Ivan Bral Maryu,Iltan,Dolyan等产品上是否存在类似的机制毫不怀疑:娱乐性连接器最常见于电源和磁盘篮。同时,我们将尝试公开广受赞誉的Kobzar Link。

尊敬的服务器平台专家:IPMI,I²C,SMBus和PMBus,如果出现问题,请更正。通常,作者对具有创造力的读者表示感激,但要向已经写出感激之情的俱乐部居民表示歉意,只是UFO不下令这样做两次。祝您阅读愉快。

从什么


作者不以一分钱的价格购买二手服务器主板,让他们重生而感到羞耻。旧的,嘈杂的服务器技工(带有电源)被废弃,并用新产品代替,尽管属于消费类,但质量高且安静。但是,即使从复古系列超米伦X8和X9仍然得到根本ofigenskie NAS为结合enterpise功能文件“时间机器”木马的侵害,勒索和复制在网络上的小型企业...

模拟黄色程序
FreeNAS Windows-, USB-. , 1 -, . Linux? - , . , - 1 — (, ). USB jail VirtualBox ...

通常,大约在20年前,对于集体农场的GPIO,工匠使用了打印机的并行端口,但现在尝试查找它。就我而言,世界已经改变了-变得更好了:)

外观检查


我已经有了几乎是化石但可以正常工作的产品X9SCM-F(英特尔C204 Express),加上它的弟弟X9SCL-F(C202)已经在附近的工厂工作了几年。如果按照文档中的说明打开产品,使24针ATX电源连接器朝北,则SATA端口将位于Khabarovsk区域中的某处。在东部,例如Petropavlovsk-Kamchatsky,有一对T-SGPIO 1和2连接器以字母“ GPIO”的组合引起人们的注意。作者打开了这种组合,但是化石电子学的地质学家-研究人员的反应却是错误的。实际上这里的关键字是SGPIO,它是使用恒定长度帧的时分双工信令总线。总线依次为每个SATA端口传输三个位:在HBA上-篮的状态,在篮上-磁盘的状态(活动,故障,定位器)。这是过时的技术;现代篮子使用I²C。我没有深入研究,但是似乎板上的6个SATA端口分为两个北部和四个南部一组,每个组都挂有自己的梳状T-SGPIO。笨拙,笨拙,但适合集体耕种也没用。继续吧,在南萨哈林斯克州有一个小型JWF1连接器,但是SATA DOM驱动器只有5V电源,我没有。在远东地区,无事可做。沿着南部边界延伸出一系列完整的9针USB连接器和第二个RS232端口,使用它们的一切都很清楚。在COM2的西北部,发现了一对JI2C1 / JI2C2跳线,从而可以访问PCIe设备。到目前为止,该工具包仍然是我的一个谜,但是我可以肯定的是,实际上JI2C1 / JI2C2是SCL和SDA的实时输出,它们与3.3V电源和地简单分开,它们已经在PCIe中。现在就离开。 JTPM连接器非常复杂,这很紧急。通过将其连接到光电继电器,只能从前面板连接器JF1挤压UID LED。顺便说一句,这是m。甚至很方便:电路中已经集成了一个终端电阻,打开UID LED-打开(关闭)继电器。进行远程重置也许外部设备就足够了。最主要的是,一年后,操作员进入BMC Web界面后,并没有像这样打开UID LED,而同时重置了外部设备。好的,我们回到北端的极限服务器,它位于ATX电源附近,并且JPI2C连接器也已定位。

我必须说,关于JPI2C的文档相当乐观。因此,这是I²C总线的输出,用于监视“本地”电源的运行状况。从物理上讲,JPI2C是5针Molex型SL连接器,其间距为0.1“(2.54mm),并且是带相反极性傻瓜键,大概是目录代码70543-0004。响应部分(在左下图中)是用于压接的Molex 70066-0179。卷缩机(又名BL-05F我怀疑在所有Super Miron主板上,I²C总线都用于监视服务器电源的运行状况,并且它与5针Molex SL连接器(BL-05M连接展望未来,我要说的是,一些用户已经在逆向工程方面取得了成功,并找到了一种方法,可以从其本地Super Miron电源中移除各种工具,例如温度和伏特安培,请继续阅读。

电源I²C连接器

位于JPI2C的电源I²C连接器可监视电源状态,风扇和系统温度。有关引脚定义,请参见右侧的表。

空的JPI2C连接器公开地标有标准I²C总线引脚:SCL,SDA,GND和VCC。中间是电源故障警报。展望未来,我敢建议此电源故障是在不使用外部微控制器的情况下针对外部事件发出警报的唯一方法。然后,我们找到了日期为2010年3月30日的文章FAQ ID 9492,该文章明确暗示可能直接从命令行轮询I²C总线。由于BMC显然参与监视电源的运行状况,并且团队ipmitool显然能够与使用电源的I²C总线进行“交谈”,因此没有任何事情应干扰将其他东西连接到JPI2C。

哪个连接器:BL或BLS?
MP3, 4- , CD- . , BLS-4, CD- , . , , BL-04F, . MP3 , ...

我为什么 而且,Super Miron板上的JPI2C连接器看上去与旧CD驱动器上的音频连接器完全一样,它只有5个针而不是4个。JPI2C将包括一个简单的单行BLS-5,但是最好使用带有物理极性键的连接器类型BL-05F,当与已经安装在机箱中的主板一起使用时,很容易出错。节省您的时间。

通用回路
«» 40- , . , , .. . BLS-1 M-F, M-M F-F. aliexpress: «dupont cable».

通过命令行使用I²C设备


我将曾经在速卖通上购买的BMP180传感器连接到JPI2C。起初,什么都没有。整个寻址过程也令人困惑,bus从多少根总线中选择一条总线的论点尚不清楚。但是之后,我只是编写了一个脚本来遍历(扫描)总线,并在连接BMP180之前和之后比较其工作结果。使用X9SCM-F,立即在3号总线上的地址0xee处检测到传感器0xef(请参见下面的注释)。有必要将JI2C1 / JI2C2重新排列到ENABLE位置,并查看PCIe卡是否突然响应...

ipmiscan.sh
, - progress bar , (0, 1, 2 3). bash 3.0+.
#!/bin/bash

for bus in 0 1 2 3; do
        echo Bus $bus
        for i in {16..238..2}; do
                printf -v args "i2c bus=%d 0x%02x 0x01" $bus $i
                printf " 0x%02x" $i
                ipmitool $args 2>/dev/null && echo "(bus $bus)"
        done
        echo
done

该脚本仅枚举偶数地址,不涉及保留的地址。在I²C中,最低有效位是读写的标志:每个设备似乎占用两个地址(奇数读取,偶数写入)。文章FAQ ID 9492我迷惑,因为民意调查只有偶数。但是在ipmitool读写的情况下,它不是由地址决定的,而是由命令的上下文决定的,对吗?重量级的IPMI 2.0规范将所有内容都放在适当的位置:Master Read-Write(0x06 0x52命令中地址的最低有效位通常被保留,应将其重置(等于零)。

连接到X9SCM-F上的JPI2C的BMP180传感器在该地址处响应了(总线= 3)0xee0xef尽管这是相同的)。即设备的逻辑地址原来是0x77,因为它应该在数据表上(博世抓住了最上面的8位地址)。我最初的错误是在“原始” IPMI地址上寻找BMP180 0x77,这是不正确的,对于IPMI,您只需将逻辑I²C地址乘以2(向左移动一位)。顺便说一下,在使用I²C时,这是最常见的错误。

像这样悬挂的I²C总线在空气中变得无趣,在球形真空中更是如此。应“ i2c传感器”的要求,一个众所周知的平台将为受尊敬的阅读器提供一系列已经与微型卡绑定的传感器。通常,剩下的只是焊接接触梳,为此有足够的需求,并且不需要带有焊料和助焊剂的30W烙铁。为了验证这一理论,我决定使用BMP180传感器测量温度,但事实证明它比我想象的要复杂一些:该传感器是一个复杂的有状态设备的示例,并且说``从精密仪表中提取温度和压力读数并考虑校准系数''会更正确。但是首先,我们仍然向受人尊敬的供应商致敬。

遥测电源
, .. , , : , , , , . IPMI, . DIY .

Andrew Grekhov , , . , , . , ipmitool , -H, -U -P, raw 0x06 0x52 0x07 i2c bus=3, «» , . Master Read-Write IPMI.

Andrew Grekhov, ( ) . , PMBus, . . PMBus SMBus , SMBus, , I²C. , PMBus. PMBus , : ? , .

, , (), , , PMBus rev 1.1. , www.pmbus.org, PMBus Specification Part II Rev. 1.1. , . 26 APPENDIX I. Command Summary. , , - 0x78 (STATUS_BYTE), 0x88 (READ_VIN), 0x89 (READ_IIN), 0x95 (READ_FREQUENCY) : , . 26, (Read Byte Read Word) . , byte word?

: I²C 0x30 (COEFFICIENTS), SMBus? , - , .. , SMBus 0x30 2, (0x88 READ_VIN) , . 1 + 5 + 1 m, B R, . — , — PEC ( ). .. , SMBus I²C, , :

ipmitool i2c bus=3 0x70 0x07 0x30 0x02 0x88 0x01

0x30 0x02 0x88 0x01 0x70, №3, 7 ( , , PEC). ( 0x78, — ), 7 6 ( PEC). - , , production, :) , , .

使用BMP180进行温度测量
BMP180 . , IPMI- 0xee . BMP180 stateful-, .. ( .. ). BMP180 BMP085, — BMP280, .
, , . 0x2e 0xf4:

ipmitool i2c bus=3 0xee 0x00 0xf4 0x2e

0x00 , 0xee, . 4.5 16- UT (« ») 0xf6 :

ipmitool i2c bus=3 0xee 0x02 0xf6

0xf6 0xee (.. 0x77, BMP180), . IPMI Master Write-Read stateful-.

UT 0x6a 0x48, 27208 (.. - 27°C «» , BMP180, , ). UT 0x8000, , .

: AC5, AC6, MC MD 0xb2, 0xb4, 0xbc 0xbe, , (, !).

X1=(UTAC6)·AC5/215


X2=MC·211/(X1+MD)


B5=X1+X2


T=(B5+8)/24/10



10, .. . , , 15 11 . , , 0xf4. ? , :)

41j .

通用输入输出
, , , . BMP180 I²C 8- GPIO PCF8574AT.
, PCF8574A ( PCF8574) 0x38 ( PCF8574 0x20), . , , - 8 , . 8 , 64 GPIO. , . I²C .

I²C开关
, BMP180, 0x77 (.. 0xee) ? , (), TCA9548A - , . () 8 , . , GPIO, . : - I²C SDA SCL, . , , 8 BMP180, c A0-A2 0x70 (. 0xe0 ipmitool). A0=A1=A2=1 0x77, , , BMP180. , TCA9548A, I²C 56 -. , . , , .

局限性


我使用ipmitool(1)v1.8.15命令进行了所有实验,该命令通过FreeBSD 10主机(内核)接口工作,如果在脚本中使用此命令,则必须解析其输出,此外,还解析stderr而不是stdout。在本文中,我特别避免使用解析器。如果有任何读者至少在原始命令模式下能够以流行的脚本语言(perl,Python)通过主机接口共享经过验证的库,以通过IPMI使用IPMI,将不胜感激

虽然ipmitool(1)并且可以通过网络(623 / tcp)工作,当JPI2C上的主机关闭时,没有备用电源,总线将断电。我没有尝试单独给传感器供电,并在主机关闭的情况下通过IPMI网络接口对传感器进行讯问。但是,如果您需要连接到网络的自治传感器,则最好使用单板设备,例如相同的Raspberry Prog(对不起,我在我的文章中称Raspberry Pi 为保护microSD卡免受过早磨损的影响,方法是切换到只读文件系统)。

如已经提到的,此处描述的方法没有外部微控制器,实际上消除了对外部事件对中断的反应,除了信号“电源故障”。从理论上讲,电源故障信号可以生成SNMP事件,但是我没有尝试过。我想再说一遍:如果需要传感器的中断,那么我们需要一个微控制器,或者最糟糕的是,需要一个专用的单板。凯撒就是凯撒。

冲突管理I²C


如果I²C总线上没有“本地”电源设备,那么谢天谢地,问题就更少了。但是,如果系统中出现带有I²C接口的“本地”电源设备,则从理论上讲,在安装了相应的适配器后,禁止并行连接其他设备。在这种情况下会发生什么?如果所有设备都位于其地址,则在主机决定严格控制电源之前,不会发生任何不良情况。如果您不知道自己在做什么,那就限制自己阅读。从FAQ ID 9492来看,电源(单,双,三)位于逻辑地址0x38, 0x39, 0x3a, ...(这些IPMI地址分为两半)上。

我有一个关于IPMI及其在访问I²C中的作用的理论:如果所有写入命令仅选择一个寄存器用于后续读取,则与设备的每次交互都适合一个IPMI主写入-读取命令。从非常重要的IPMI 2.0规范中,我建议您阅读第22.11段,该段描述了此命令。据我了解,在I²C总线上的操作是将字节序列读取或写入一个地址。但是带有Master Write-Read命令的IPMI规范引入了更多内容:一对读写操作,对传感器很方便,类似于一个完整的事务而且,IPMI规定了最大缓冲区长度(大约30个字节)。我还假设(a)BMC始终是I²C总线上的主要设备,并且(b)BMC具有内置的锁定机制,即在交易过程中,他不会尝试从自己身上坐公共汽车。

假设IPMI主读写命令确实是一个不可分割的事务,那么BMC所做的不仅仅是显示I²C:它是一个事务性加载项在I²C上,还具有主机或网络接口。换句话说,事实证明它就像是原始的4级协议栈,可通过IPMI接口与I²C传感器配合使用,我敢于绘制。如果受人尊敬的读者不喜欢该图片,请想象我是一个艺术家,并且本质上请注意一下这样的世界:)

顺便说一下,SMBus总线(除了其他联系人)在批处理模式下与I²C完全不同,并且其中定义写/读操作块 但这已经是SMBus总线本身协议的一部分,在这种情况下,IPMI将扮演简单的操作包装程序的角色,而不是事务性外接程序。但是,IPMI和SMBus规范中的最大块长度是如此相似,以至于我假设它们之间是直接连接的,甚至没有深入研究该主题。

安全性


连接到计算机网络的BMC是服务器,并且容易受到攻击。例如,这就是为什么有必要在“本地” OS控制台上加强安全措施,该控制台实际上已通过虚拟KVM暴露给网络。BMC控制器Super Miron的旧固件包含一个令人不快的漏洞,因此操作应从更新BMC固件(除了BIOS)开始。

带反馈的气候控制


可以说,有些制造商在冷却的氛围中将悬挂的想法带到了邪教,并向邪教提供了反馈,而营销则带有保密的面纱,使这种想法变得powder粉:

魔王崇拜
, , :
In some ways, Corsair Link is one of our best kept secrets. It had a very rocky start, but continued and continuing development has turned it into an extremely useful combination of hardware and software. It allows you to connect several products within our ecosystem to a software-based control panel, but there's so much more to it than that.

, , , , , . , .

, Corsair Link Commander Mini USB HID, SMBus, «» PMBus, . SMBus, 0x98 (PMBUS_REVISION). , . PMBus . , , ( ) .

, «» community- , . , , .. . , , .

同时,社区不存在:

民间食谱
Kevin Horton FreeNAS Perl. . , -, , X10 . , SMART. , . .

X9 (socket 1155) : X9SCL/X9SCM «» «» BIOS (). , IPMI ...


UPD:

IPMII²C的替代产品-接口转换器


, I²C ? USB- I²C/SMBus, USB HID.

x893 -: CP2112 - Silicon Labs MCP2221A - Microchip. , «A» 460 115. , CP2112EK $40, ADM00559 MCP2221 . , / , .

, , USB , USB HID . : , HID, , CDC, .. COM-. USB HID . , , Python. USB HID, Microchip Linux, . , :)



  • I²C, IPMI.
  • « » I²C- (, , GPIO), .
  • , I²C- , IPMI.
  • BMC-, IPMI, I²C Master Write-Read, .
  • , - .
  • PMBus, I²C/SMBus.

Intelligent Platform Management Interface Specification v2.0
www.intel.com/content/dam/www/public/us/en/documents/product-briefs/second-gen-interface-spec-v2.pdf

IPMItool
sourceforge.net/projects/ipmitool

I²C Bus ( telos)
www.i2c-bus.org

System Management Bus (SMBus) description
www.smbus.org/specs/smbdef.htm

PMBus, Power Management Bus
pmbus.org

FreeNAS, Enterprise-Grade Features, Open Source, BSD Licensed
www.freenas.org

SGPIO, Serial General Purpose Input/Output
www.wikipedia.org/wiki/SGPIO

SuperMicro FAQ ID 9242, Monitoring of PSU using IPMITool
www.supermicro.com/support/faqs/faq.cfm?faq=9492

LM25056, System Power Measurement IC with PMBus
www.ti.com/product/LM25056

PCF8574A, Remote 8-Bit I/O Expander for I2C-Bus
www.ti.com/product/PCF8574A

TCA9548A, Low-Voltage 8-Channel I2C Switch With Reset
www.ti.com/product/TCA9548A

BMP180, Barometric Pressure Sensor
www.bosch-sensortec.com/bst/products/all_products/bmp180

, BMP180 Barometric Pressure Sensor
41j.com/blog/2015/01/bmp180-barometric-pressure-sensor

, . SuperMicro ( X8)
3nity.ru/viewtopic.php?p=135736#p135736

FreeNAS, Script to control fan speed in response to hard drive temperatures
forums.freenas.org/index.php?threads/script-to-control-fan-speed-in-response-to-hard-drive-temperatures.41294

Computer Cheese, IPMI Messaging Support commands,
computercheese.blogspot.com/2013/05/ipmi-messaging-support-commands.html

Corsair Link
www.corsair.com/en/support/faqs/corsair-link

EEVblog Electronics Community Forum
www.eevblog.com/forum/chat/corsair-link

Source: https://habr.com/ru/post/zh-CN400729/


All Articles