SuperMicro AOC-STGN-I2S 标有 Coraid。无法安装驱动程序并使用网卡

SuperMicro AOC-STGN-I2S 标有 Coraid。无法安装驱动程序并使用网卡

最近我购买了两张 SuperMicro AOC-STGN-I2S 局域网卡(两个 10Gb\s SFP+ 端口)。其中一张在 Windows(我的测试 PC)和我的服务器上的 FreeBSD 下都可以正常工作。第二张是完全相同的卡,但上面贴着“Coraid”的标签。问题是我根本无法使用它(在 Windows 和 FreeBSD 中它不起作用):

  1. 引导加载程序在启动过程中给出错误:

    PXE-E01: PCI Vendor and Device IDs do not much!
    
  2. 在 Windows 设备管理器中,我有两个没有驱动程序的未知设备,我无法从 SuperMicro 网站安装官方驱动程序。设备 ID 为:

    PCI\VEN_8086&DEV_0001&CC_0200
    

    据我了解,Coraid 标签意味着此网卡已刷新为另一个固件,以支持 Coraid 软件提供的网络存储功能。是否可以将此卡刷新回原始 SuperMicro 固件并将其用作普通网卡?

答案1

我至少有 3 张卡有同样的问题,可能还有很多。我们最近购买了大约 20 张这样的卡,以便将我们的部分生产环境迁移到 10G。其中 3 张卡上贴有 Coraid 标签,但更多的卡根本无法识别为 Supermicro AOC-STGN-I2S。其中一些卡被正确识别,因此我可以通过测试系统中的测试轻松识别它们。

如果你找到了刷新它们的方法,请告诉我。一旦我找到方法,我也会这样做。

扬·雨果·普林斯

答案2

我联系了 Supermicro 和 Coraid 的支持人员。他们的回答是:1. Supermicro 给了我实用工具,但它无法与 Coraid 局域网卡配合使用。2. Coraid 说,只有我寄给他们卡,他们才能帮我。他们要价每张卡 100 美元 + 运费。O_o 疯子们……所以最简单的方法就是把 Coraid 卡扔到垃圾桶,然后找一些带有原始 Supermicro 固件的卡。

答案3

我现在知道如何纠正这个问题,但我无法找出神奇的关键,以下是我迄今为止的尝试:

要在 Ubuntu 下访问卡,请执行以下操作:

sudo chmod 777 /sys/bus/pci/drivers/ixgbe/new_id
sudo echo 8086 0001 >/sys/bus/pci/drivers/ixgbe/new_id

现在您可以使用这些命令来“验证”该表:

sudo ethtool -e enp1s0f0 offset 0x0340 length 0xb
sudo ethtool -e enp1s0f0 offset 0x0340 length 0xc
sudo ethtool -e enp1s0f0 offset 0x0350 length 0x7
sudo ethtool -e enp1s0f0 offset 0x0350 length 0x8


                                               __ __
>0x0340:         93 aa e2 6a 03 00 05 00 3f 06 fb 10 00 00 04 14
<0x0340:         c1 f6 e2 6a 03 00 05 00 3f 06 01 00 00 00 04 14
                                               b  c
                                   __ __
>0x0350:         00 00 05 00 3f 16 fb 10 00 00 04 14 00 00 07 00
<0x0350:         00 00 05 00 3f 16 01 00 00 00 04 14 00 00 07 00
                                   7  8

问题是我无法找出覆盖错误设备 ID 的神奇值:

sudo ethtool -E enp1s0f0 magic 0x00018086 offset 0340x0b value 0xfb
sudo ethtool -E enp1s0f0 magic 0x00018086 offset 0x0340 value bxfb
sudo ethtool -E enp1s0f0 magic 0x00018086 offset 0x0340 value 0bxfb

BIOS

答案4

我在 Intel X520-DA2 上遇到了同样的问题。为了解决这个问题,我使用 Ubuntu 18.04 服务器来更改卡的 EEPROM 内容ethtool

modinfo显示 ixgbe 驱动程序的以下内容:

modinfo ixgbe.ko
filename:       /lib/modules/5.4.0-131-generic/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
version:        5.1.0-k
...

lspci显示我们得到的结果。它将 x520-DA2 的两个端口作为单独的以太网卡返回:

lspci|grep Eth
01:00.0 Ethernet controller: Intel Corporation Device 0001 (rev 01)
01:00.1 Ethernet controller: Intel Corporation Device 0001 (rev 01)

为了查询卡的供应商和子系统 ID,我们lspci再次调用并附加上面的 PCI 总线 ID。我们可以使用其中任何一个 ID(例如 01:00.0)。

lspci -vns 01:00.0|head -2
01:00.0 0200: 8086:0001 (rev 01)
        Subsystem: 1b52:10fb

“8086”是供应商 ID(对于 Intel)。“0001”是子供应商 ID。它通常表明它是哪个设备。在我们的例子中,“0001”肯定是错误的。由于子供应商 ID 错误,驱动程序模块 ixgbe 不认为对卡负责。但我们仍然可以说服它。我们只需加载模块,然后告诉它照顾我们的卡。它是这样完成的:

modprobe ixgbe
echo 8086 0001 > /sys/bus/pci/drivers/ixgbe/new_id

执行此操作后,dmesg应显示以下输出:

dmesg
[  213.983160] ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver - version 5.1.0-k
[  213.983161] ixgbe: Copyright (c) 1999-2016 Intel Corporation.
[  214.151320] ixgbe 0000:01:00.0: Multiqueue Enabled: Rx Queue count = 8, Tx Queue count = 8 XDP Queue count = 0
[  214.151607] ixgbe 0000:01:00.0: 32.000 Gb/s available PCIe bandwidth (5.0 GT/s PCIe x8 link)
[  214.151946] ixgbe 0000:01:00.0: MAC: 2, PHY: 20, SFP+: 5, PBA No: G73129-006
[  214.151946] ixgbe 0000:01:00.0: a0:36:9f:xx:xx:xx
[  214.154111] ixgbe 0000:01:00.0 enp1s0f0: renamed from eth0
[  214.175253] ixgbe 0000:01:00.0: Intel(R) 10 Gigabit Network Connection
[  214.347439] ixgbe 0000:01:00.1: Multiqueue Enabled: Rx Queue count = 8, Tx Queue count = 8 XDP Queue count = 0
[  214.347730] ixgbe 0000:01:00.1: 32.000 Gb/s available PCIe bandwidth (5.0 GT/s PCIe x8 link)
[  214.348051] ixgbe 0000:01:00.1: MAC: 2, PHY: 20, SFP+: 6, PBA No: G73129-006
[  214.348052] ixgbe 0000:01:00.1: a0:36:9f:xx:xx:xx
[  214.350172] ixgbe 0000:01:00.1 enp1s0f1: renamed from eth0
[  214.379294] ixgbe 0000:01:00.1: Intel(R) 10 Gigabit Network Connection
[  332.357800] ixgbe 0000:01:00.1: complete
[  332.381819] ixgbe 0000:01:00.0: complete

识别卡后,有两个新的以太网适配器。我们用它ip来列出它们。

ip a

...
1: enp1s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether a0:36:9f:xx:xx:xx brd ff:ff:ff:ff:ff:ff
2: enp1s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether a0:36:9f:xx:xx:xx brd ff:ff:ff:ff:ff:ff

这些卡通常显示为 enp1s0f0 和 enp1s0f1。因此,让我们使用以下命令查看 EEPROM 的内容ethtool

ethtool -e enp1s0f0

我的EEPROM的内容如下(摘录):

0x0320:     03 00 1f 00 00 00 00 2b 03 53 fb 10 52 1b 01 00
0x0330:     01 00 f5 07 ed 10 35 00 64 6e 01 00 90 e2 ba 4c
0x0340:     8f dc e2 6a 03 00 05 00 3f 07 01 00 00 00 04 14
0x0350:     00 00 05 00 3f 17 01 00 00 00 04 14 00 00 07 00

根据 @JustKoz 的说法,子供应商 ID 位于 0x034a 和 0x034b 以及 0x0356 和 0x0357。我们的子供应商 ID“0001”存储为“01 00”,并进行了字节交换。

0x0340:     xx xx xx xx xx xx xx xx xx xx 01 00 xx xx xx xx
0x0350:     xx xx xx xx xx xx 01 00 xx xx xx xx xx xx xx xx

X520-DA2 的正确子供应商 ID 是 10fb。为了使用 更改上述地址ethtool,要发出的命令如下:

ethtool -E enp1s0f0 magic 0x00018086 offset 0x034a value 0xfb
ethtool -E enp1s0f0 magic 0x00018086 offset 0x034b value 0x10
ethtool -E enp1s0f0 magic 0x00018086 offset 0x0356 value 0xfb
ethtool -E enp1s0f0 magic 0x00018086 offset 0x0357 value 0x10

我注意到我的卡上显示的“1b52:10fb”值也出现在@JustKoz 附加的 BIOS 图片中。这是错误的子系统 ID。

子系统 ID 存储在 0x032a-0x032d 中。lscpi输出中的子系统 ID 可在此处再次找到,但字节已交换且顺序错误。

0x0320:     xx xx xx xx xx xx xx xx xx xx fb 10 52 1b xx xx

我们看到的不是 1b52:10fb,而是“fb 10 52 1b”

修复子系统 ID 的方法与修复子供应商 ID 的方法相同。由于我没有另一张卡作为 ID 的参考,因此我使用了此地点。因为我重新启动来测试卡的子供应商 ID 是否设置正确,所以ethtool从现在开始我们需要在调用中使用 0x10fb8086 作为魔法。

ethtool -E enp1s0f0 magic 0x10fb8086 offset 0x032c value 0x86
ethtool -E enp1s0f0 magic 0x10fb8086 offset 0x032d value 0x80

ethtool -E enp1s0f0 magic 0x10fb8086 offset 0x032a value 0x02
ethtool -E enp1s0f0 magic 0x10fb8086 offset 0x032b value 0x00

0x032x 块的最后两个字节也已被篡改(我认为),所以我也更正了它们。我从 Supermicro 卡以及此卡的 DELL 变体中获取了这些值。其他两张卡上的值相同,但这并不意味着原装 Intel 卡也是如此。因此,请谨慎对待它们的内容。(旁注:Windows 下的“Intel(R) PROSet 适配器配置实用程序”检查了 EEPROM,结果显示为绿色。)

ethtool -E enp1s0f0 magic 0x10fb8086 offset 0x032e value 0xa6
ethtool -E enp1s0f0 magic 0x10fb8086 offset 0x032f value 0x10

应用上述所有更改后,我将卡切换到 Windows 计算机。驱动程序安装顺利,我看到了 10Gbs 链接。 司机 地位

总结一下。修复完所有问题后,我的卡的 EEPROM 的内容如下:

0x0320:     03 00 1f 00 00 00 00 2b 03 53 02 00 86 80 a6 10
0x0330:     01 00 f5 07 ed 10 35 00 64 6e 01 00 90 e2 ba 4c
0x0340:     8f dc e2 6a 03 00 05 00 3f 07 fb 10 00 00 04 14
0x0350:     00 00 05 00 3f 17 fb 10 00 00 04 14 00 00 07 00

相关内容