760 字
4 分钟
Mellanox CX4lx 10G 25G 网卡 刷ATTO固件 巨帧支持 MacOS

省流#

如果你会刷 Mellanox 固件,就是直接从官网 ATTO Networking Suite 中提取FastFrame N322固件 fw_FFN322_xx.xxxx.bin 或者 云盘 。然后直接 flint--allow_psid_change 强刷就行了。

正文#

前言#

macOS 从 Ventura 起自带 AppleEthernetMLX5,所有的MLX5(也就是大于 ConnectX-4 Lx )的卡插上去就能。但这个原生驱动把 MTU 卡在 ~2034。

但是 ATTO 在售的同样 CX4/CX5 的卡搭配 ATTO 自己的驱动是能支持巨帧(MTU 9000)的。考虑到CX4/5一堆卡都是一个芯片通刷固件,所以思路就很直接:让公版卡用 ATTO 固件以及 ATTO 的 macOS 驱动就认它。

核心#

从安装包里的驱动扒开看 Info.plist(kext 和 dext 内容一致):

IOPCISecondaryMatch = "0x00AF117C 0x00B0117C 0x00B1117C 0x00B2117C 0x00B4117C 0x40B7117C 0x40B8117C"
IOPCITunnelCompatible = true

IOPCISecondaryMatch 匹配的就是 PCI subsystem id(设备号 + 厂商号)。0x00B4117C 就是 N322——subsystem device 0x00B4、subsystem vendor 0x117C(ATTO)。它不看主 device id、也不看 MAC,只认这个 subsystem id。顺带 IOPCITunnelCompatible = true,说明走雷电隧道也照绑,雷电坞里没问题。

所以只要让公版卡的 subsystem id 变成 117c:00b4 就行。所以思路是要不 patch 一下公版固件,要不直接刷 ATTO 的 N322 固件。

考虑到 Mellanox 这个卡可以随便刷固件,并且很好救卡,那肯定是直接日一下 ATTO 的 NS322固件

关于 MAC 的一个坑:网上 ConnectX-3 时代的教程会说刷完 MAC 变 00:00:00:00:00:00,因为老驱动从固件镜像之外读 MAC。CX-4 没这问题——ATTO 的 CX-4 固件镜像里根本没带 MAC,走标准 FS3 device-data,刷的时候原 MAC 自动保留。

刷固件#

准备#

  • 一台 Linux(Windows也差不多),装好 MFT(mst / flint / mlxconfig),把公版卡插上
  • 任意 ConnectX-4 Lx

掏固件#

官网下 ATTO Networking Suite 的 Linux 包,解开后,固件在 firmware/ 目录。.bin 的是 ConnectX-4 代(FS3 镜像),.pkg 的是 CX-5/6 代:

或者 云盘

fw_FFN322_32.1010.bin # FastFrame N322,双口 25G x8 ← 要的就是它
fw_TLNS3252_32.1010.bin # ThunderLink NS3252,雷电款 x4

刷之前确认固件跟卡对得上:

Terminal window
flint -i fw_FFN322_32.1010.bin q # PSID = ATT000000007
flint -i fw_FFN322_32.1010.bin dc | grep -iE 'prs_name|subsystem|sub_vendor'
# prs_name = cx4-lx_MCX4121A_2p_x8_25g.prs ← 跟公版 MCX4121A 同一份
# sub_vendor_id = 0x117C
# subsystem_id = 0x00B4

prs_name 一致是关键,说明这份固件就是给这块硬件做的。

#

先备份再刷:

Terminal window
mst start
mst status # ConnectX-4 Lx → /dev/mst/mt4117_pciconf0
DEV=/dev/mst/mt4117_pciconf0
flint -d $DEV ri backup_orig.bin # 整镜像备份,务必留好
flint -d $DEV q full | tee orig_ids.txt # 记下 GUID / MAC
flint -d $DEV -i fw_FFN322_32.1010.bin --allow_psid_change burn
# PSID 从 MT_... 变成 ATT...,所以必须 --allow_psid_change
# 失败安全模式会自动保留 GUID/MAC;若提示 ROM 不符,再加 --allow_rom_change

验证#

Terminal window
flint -d $DEV q | grep PSID # PSID: ATT000000007 ✓

刷完需要 Reset ,需要重启或者用mlxfwreset -d /dev/mst/mt4117_pciconf0 reset 直接重置

Terminal window
mlxconfig -d /dev/mst/mt4117_pciconf0 query

可以看到描述就是 ATTO N322

Device #1:
----------
Device type: ConnectX4LX
Name: MCX4121A-ATTO_Ax
Description: ATTO FastFrame N322 network interface card(ConnectX-4 Lx EN); 25GbE dual-port SFP28; PCIe3.0 x8; ROHS R6
Device: /dev/mst/mt4117_pciconf0

上 macOS#

把卡接到 Mac(我走雷电坞),装上 ATTO Networking Suite 的驱动 (记得同意ATTO加载系统)。在 系统信息.app 的以太网里检查一下ATTOFastFrame3 加载、Jumbo Frame 就能开了。

Mellanox CX4lx 10G 25G 网卡 刷ATTO固件 巨帧支持 MacOS
https://www.homelabproject.cc/posts/macos/mellanox-cx4lx-10g-25g-网卡-刷atto固件-巨帧支持-macos/
作者
Channing He
发布于
2026-06-02
许可协议
CC BY-NC-SA 4.0