Enabling unsupported SFP+ transceivers on the Intel X520/Dell R720
Having recently set up a new-to-me Dell R720 in a colocation provider’s environment—in my quest to “own” the whole stack from metal to service—I ran into an issue with not being able to use generic or Cisco-coded SFP+/SFP trancseivers in the included Intel X520 network card.
dmesg kept indicating that the transceiver was unsupported. Because of impatience and other factors, I decided to dig a bit and see what it would take to enable support for good ‘ol grab bag generic SFP+/SFP transceivers.
I came across this article on the ServeTheHome forums where user NathanA had already dug to the bottom of this issue, and fortunately came out the other side with a solution.
NathanA discovered—via datasheets, mailing lists, and discussion threads—that a particular bit in a particular byte of the NIC EEPROM needs to be flipped in order to allow any SFP. In the Linux ixgbe driver, the byte in question is referred to as
The steps to flip this bit, and thus allowing “unsupported” SFPs, is as follows:
Note: I am in no way liable for any permanent damaged caused by running the following commands on your Intel NIC!
raymond@server:~$ sudo ethtool -e eno1 offset 0x58 length 1 Offset Values ------ ------ 0x0058: fc
The new hex value below is identical to simply flipping the last binary bit in the
fc hex value.
raymond@server:~$ sudo ethtool -E eno1 magic 0x10fb8086 0x58 value 0xfd
If the output of the command below returns the new value of our
0x58 offset, we should be good to go!
raymond@server:~$ sudo ethtool -e eno1 offset 0x58 length 1 Offset Values ------ ------ 0x0058: fd
What’s best about this EEPROM change is that is survives reboots, poweroffs, and will enable usage of unsupported SFPs in non-Unix operating systems.
And, to return the EEPROM to its original state, simply write the old hex value back to the
0x58 offset and call it a day.