BMC是什麼? 能吃嗎?

Chris Liou
4 min readMay 31, 2018

--

BMC是什麼?
踏進這產業兩年多,每次跟同學談到在做什麼...我回答完就會聽到的問句
每次跟同學談論到工作....我都只能談他們的工作內容...
大家比較瞭解的是Web front-end, Java/C# software, Android/IOS App…etc.

似乎沒什麼人知道BMC是什麼 ( 還是其實是我們太無知

要進入這個世界,首先你得先學會兩串英文

BMC  ( Baseboard Management Controller )IPMI ( Intelligent Platform Management Interface )

BMC ( Baseboard Management Controller )

BMC是在Server Mother board上一顆可以獨立運作的SoC (System on Chip)
系統的架構大概是長這樣:

圖片來源 Aspeed 官網 (關於這解析度...請原諒我,官網就是放這張

上圖左邊就是BMC Chip(目前常用的有Ast2400, Ast2500, Pilot4…etc.)
是ARM architecture的Chip,內部使用的Firmware主要是使用Embedded Linux為基礎,在上面開發各式各樣的功能
對外是透過I2C/IPMB, LPC, Uart/COM port, Lan 跟其他設備或是外界溝通

再來是最重要的部分拉!
既然是韌體,寫Code的語言當然主要是C,但是其實裡面做很多事情,因為有一些介面要跟外界溝通,像是Web, iKVM,所以實際上還會需要用到一點Web, Java的程式
還有些地方用到最近幾年因為machine learning變紅的 Lua,但實際上我也還沒研究這一塊,不知道是拿來做什麼

我們主要做的事情是什麼呢?

先看名子,我們叫Management Controller,當然主要就是做管理的事情
像是Server上的風扇轉速讀取/控制、各地溫度讀取與啟動保護機制、提供介面讓使用者可以完全掌控這台Server的狀況

常用的方式整理如下:  I2C/IPMB:跟其他Chip溝通使用,像是下command給Hardware monitor取得溫度資料
Uart/COM port:主要用於跟MCU, Expander溝通
Lan:主要是讓使用者可以透過這個介面來存取BMC的資料
PS:上述用法並沒有一定,例如有些MCU其實可以透過I2C存取

IPMI ( Intelligent Platform Management Interface )

這不是硬體設備,只是BMC上最常用也最廣泛應用的軟體溝通介面!
而這個介面有一個有力(利)的乾爹在撐腰, Intel
整本Spec.可以在Intel下載到(IPMI Specification, V2.0, Rev. 1.1: Document)

這個軟體的Interface可以做什麼呢?

目前為止,只要是使用BMC都離不開IPMI
雖然說現在市面上還有另一個正在研發階段的RedFish,目標是要完全取代IPMI
但目前路還很長...甚至有些公司做出來是把RedFish架構在原有的IPMI之上
所以還是脫離不了IPMI!!

通常都是如何使用IPMI呢?

通常都是使用一個Open source tool "IPMI TOOL"
我們可以在遠端透過網路對BMC下command,也可以在本機端
根據上述提到的IPMI Spec.裡面有上百道Standard的Command可以使用
如果在加上各個公司自己開發的OEM Command就更多了!

例如: 
要對系統的power做控制,可以下
ipmitool power on / off / status
or
ipmitool -I lan -H [BMC IP] -U [User account] -P [User password] power on / off / status

就先寫到這邊...
更多細節之後會在別篇介紹,希望對想要進入這個世界的工程師有幫助
(有人要進來嗎!? 我們公司韌體部門缺人...快來當我同事拜託

參考資料:
IPMI簡介
IPMI Wiki
BMC簡介
BMC/IPMI

--

--

Chris Liou

寫了11年Code,但是工作才快3年的新手BMC韌體工程師