升級變更 Mellanox ConnectX-2 的韌體 Firmware

為了升級家中的網路,特別找了幾片便宜的二手10Gb網路卡, 其中有採用 SFP+連接的Mellanox ConnectX-2 , 這款網路卡稍有年紀, 韌體已經不再更新, 其中它採用iPXE修改而來的FlexBoot更是缺少許多功能, 特別花了點時間更新它的韌體。如果拿到手可以用, 不用什麼特別的功能, 如 PXE網路開機或是Windows Server RMDA等功能, 當然就不用花時間升級。

更新官方韌體
到手的幾張卡, 有一張版本較舊就升級吧!

**** 警告 : 以下的操作不小心會讓卡不正常, 有任何問題請找專業人士處理, 筆者概不負責 ****

升級方式如下:
a.自官方網站下載最新版韌體與工具程式

MNPA19-XSR/XTR Firmware — http://www.mellanox.com/page/firmware_table_ConnectX2EN
Firmware 更新程式 MFT — http://www.mellanox.com/page/management_tools
請依照自己的環境選擇, 個人是使用 Ubuntu Linux, 因此選擇 DEB 封裝下載再安裝, 以下的命令也是以 Linux 環境為主, Windows的命令也差不多.

b.執行工具程式升級

ps: 2024/06
CX3 網卡請用
1. mft-4.20 版,  ubuntu 中可支援版本為 22.04.4 但 kernel 要用 5.X 版, 勿升級至 6.5, 
mft-4.28 會找不到卡
2. mft 最新版可用 mft-4.22.1-406-LTS 可在 ubuntu 24.04 中執行

安裝好MFT之後, 先執行 MST 服務, 不論查詢或是更新韌體, 此程式一定要先執行
sudo mst start
出現以下畫面表示成功
Starting MST (Mellanox Software Tools) driver set
Loading MST PCI module – Success
Loading MST PCI configuration module – Success

查詢網卡系統裝置名稱
sudo mst status
MST modules:
————
MST PCI module loaded
MST PCI configuration module loaded

MST devices:
————
/dev/mst/mt26448_pciconf0 – PCI configuration cycles access.
domain:bus:dev.fn=0000:01:00.0 addr.reg=88 data.reg=92
Chip revision is: B0
/dev/mst/mt26448_pci_cr0 – PCI direct access.
domain:bus:dev.fn=0000:01:00.0 bar=0xf7200000 size=0x100000
Chip revision is: B0

可以看到這片卡在系統中的資訊, 最重要就是 device 名稱, 即 /dev/mst/mt26448_ 開頭, 若系統中有多張卡時才會分辨。

查詢網路卡的相關資訊
sudo flint -d /dev/mst/mt26448_pci_cr0 query
Image type: FS2
FW Version: 2.9.1200
Rom Info: type=PXE version=3.3.400 proto=VPI
Device ID: 26448
Description: Port1 Port2
MACs: 0002c952xxxx 0002c952xxxx
VSD:
PSID: MT_0F60110010

可以看到Firmware 版本(FW Version), PXE ROM版本(Rom Info), 以及 PSID (MT_0F60110010表示Mellanox自有品牌的ConnectX-2)

如果要更新或回復 Firmware 執行以下命令 (fw-ConnectX2-rel-2_9_1200-MNPA19_A1-A3-FlexBoot-3.3.400.bin為 Firmware檔案, 也是官方最新的一版)
sudo flint -d /dev/mst/mt26448_pciconf0 -i fw-ConnectX2-rel-2_9_1200-MNPA19_A1-A3-FlexBoot-3.3.400.bin burn

更新後可再用
sudo flint -d /dev/mst/mt26448_pci_cr0 query查詢看看

用HP驅動程式中升級韌體支援Windows Server RDMA
*(不太確定)使用HP韌體刷完後可能重開幾次網卡就進入Recovery mode 無法救回*
原本網卡上的韌體並不支援Windows Server RDMA功能, 傳輸性能受限, 還好國外有神人找到更新的版本可以更新使用。
先到以下網站下載程式
Hewlett Packard Enterprise 支援中心

建議在沒有安裝過 Mellanox 驅動程式的電腦中執行, 若是使用Windows 10內建驅動程式, 執行後會被取代但網路變無法使用. 若安裝過Mellanox官方驅動程式, 安裝程式則無法執行.
執行程式後先留在安裝畫面, 然後到暫存目錄(通常是 Users->帳號名->AppData->Local->Temp->{4XXXX….)中找到二個檔案
fw-ConnectX2-rel.mlx
MNPA19_A1-A2.ini

複製到別的地方後就可以結束安裝程式, 再將二個檔案儲存至有網卡的伺服器中

到伺服器上先用工具程式合併二個檔案成一個 firmware 檔案
sudo mlxburn -fw ./fw-ConnectX2-rel.mlx -conf ./MNPA19_A1-A2.ini -wrimage firmware_image.bin

再將它寫入網卡中
sudo flint -d /dev/mst/mt26448_pci_cr0 -i firmware_image.bin burn
Current FW version on flash: 2.9.1200
New FW version: 2.10.0720
Burning FS2 FW image without signatures - OK
Restoring signature - OK

成功後韌體便會更新至 2.10.0720
sudo flint -d /dev/mst/mt26448_pci_cr0 query
Image type: FS2
FW Version: 2.10.0720
FW Version(Running): 2.9.1200
FW Release Date: 12.3.2012
Rom Info: N/A (-E- Cannot get ROM version. Signature not found.)
Device ID: 26448
Description: Port1 Port2
MACs: 0002c952xxxx 0002c952xxxx
VSD:
PSID: MT_0F60110010

升級FlexBoot

最新版韌體中包含 3.3.400 的FlexBoot, 在官網上可以找到 3.4.000版本, 不過還是比較舊版的iPXE, 執行現有的網路開機選單會有問題, 做為伺服器用網路開機的機會不大, 不一定要更新, 但是如果想要用 PXE網路開機, 建議更新

下載最新版的iPXE
git clone git://git.ipxe.org/ipxe.git
b.編譯專用的 ROM版(Linux系統請安裝必要程式gcc/make/lzma等), 請先確認網路卡的VID:DID, ConnectX-2為 15b3:6750
查詢 VID/DID 可用
sudo lspci -nn
找到網卡相關資訊
01:00.0 Ethernet controller [0200]: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] [15b3:6750] (rev b0)
[15b3:6750]即是網卡的 VID(15b3)與DID(6750)

接下來便是編譯iPXE ROM
cd ipxe/src
make bin/15b36750.mrom

沒問題的話便會在 ipxe/src/bin 目錄中產生 ROM檔[15b36750.mrom]

c.使用工具程式燒錄, 請在 ROM檔的目錄中執行, 不然就要在命令中寫上完整路徑
sudo flint -d /dev/mst/mt26448_pci_cr0 --allow_rom_change brom ./15b36750.mrom

再查詢網卡資訊
sudo flint -d /dev/mst/mt26448_pci_cr0 query
Image type: FS2
FW Version: 2.10.0720
FW Release Date: 12.3.2012
Rom Info: N/A (-E- Cannot get ROM version. Signature not found.)
Device ID: 26448
Description: Port1 Port2
MACs: 0002c952XXXX 0002c952XXXX
VSD:
PSID: MT_0F60110010

由於是自己編譯的 PXE ROM, 因此看不到版本名稱與簽署資訊

重新開機並選擇網路開機看是否正常
開機時可以看到PXE ROM已經成 iPXE, 而不是 FastBoot

可看到Server提供的開機選單表示執行無誤

Leave a comment

Your email address will not be published.


*


這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料