Unlocking Any Brand SFP modules on Intel X710

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

blunden

Well-Known Member
Nov 29, 2019
1,122
396
83

M10

New Member
Jan 21, 2022
13
1
3
Which exact tool did you use? There are at least two different ones.
git clone GitHub - bibigon812/xl710-unlocker: Unlock Intel XL710 / X710 cards for use with any SFP+

with second one

Code:
root@proxmox:/tmp/test# git clone GitHub - terpstra/xl710-unlocker: Unlock Intel XL710 / X710 cards for use with any SFP+
Cloning into 'xl710-unlocker'...
remote: Enumerating objects: 22, done.
remote: Total 22 (delta 0), reused 0 (delta 0), pack-reused 22 (from 1)
Receiving objects: 100% (22/22), 4.75 KiB | 4.75 MiB/s, done.
Resolving deltas: 100% (7/7), done.
root@proxmox:/tmp/test# ls
xl710-unlocker
root@proxmox:/tmp/test# cd xl710-unlocker
root@proxmox:/tmp/test/xl710-unlocker# ls
Makefile  mypoke.c  mytool.c  README.md  syscalls.h
root@proxmox:/tmp/test/xl710-unlocker# make
gcc -Wall -O2 mytool.c -o mytool
mytool.c: In function ‘main’:
mytool.c:33:16: error: ‘FILL_ME_IN’ undeclared (first use in this function)
   33 |   int devid  = FILL_ME_IN; // 0x1572 = Intel X710 DA4
      |                ^~~~~~~~~~
mytool.c:33:16: note: each undeclared identifier is reported only once for each function it appears in
make: *** [Makefile:9: mytool] Error 1
root@proxmox:/tmp/test/xl710-unlocker# ls
Makefile  mypoke.c  mytool.c  README.md  syscalls.h
root@proxmox:/tmp/test/xl710-unlocker#



Code:
root@proxmox:/tmp/test/xl710-unlocker# lspci -n
00:00.0 0600: 1022:1450
00:01.0 0600: 1022:1452
00:01.1 0604: 1022:1453
00:01.3 0604: 1022:1453
00:01.4 0604: 1022:1453
00:01.5 0604: 1022:1453
00:02.0 0600: 1022:1452
00:03.0 0600: 1022:1452
00:03.1 0604: 1022:1453
00:04.0 0600: 1022:1452
00:07.0 0600: 1022:1452
00:07.1 0604: 1022:1454
00:08.0 0600: 1022:1452
00:08.1 0604: 1022:1454
00:14.0 0c05: 1022:790b (rev 59)
00:14.3 0601: 1022:790e (rev 51)
00:18.0 0600: 1022:1460
00:18.1 0600: 1022:1461
00:18.2 0600: 1022:1462
00:18.3 0600: 1022:1463
00:18.4 0600: 1022:1464
00:18.5 0600: 1022:1465
00:18.6 0600: 1022:1466
00:18.7 0600: 1022:1467
01:00.0 0604: 1a03:1150 (rev 04)
02:00.0 0300: 1a03:2000 (rev 41)
03:00.0 0108: 1987:5012 (rev 01)
04:00.0 0200: 8086:1533 (rev 03)
05:00.0 0200: 8086:1533 (rev 03)
06:00.0 0200: 8086:1583 (rev 02)
06:00.1 0200: 8086:1583 (rev 02)
07:00.0 1300: 1022:145a
07:00.2 1080: 1022:1456
07:00.3 0c03: 1022:145f
08:00.0 1300: 1022:1455
08:00.1 1080: 1022:1468
08:00.2 0106: 1022:7901 (rev 51)
08:00.3 0403: 1022:1457
well sh*t

06:00.0 0200: 8086:1583 (rev 02)
06:00.1 0200: 8086:1583 (rev 02)
those are my xl710 nic's
 
Last edited:

M10

New Member
Jan 21, 2022
13
1
3
ok i'll switch card to my debian host where i can change network interface naming.
 

blunden

Well-Known Member
Nov 29, 2019
1,122
396
83
ok i'll switch card to my debian host where i can change network interface naming.
I would've expected the one you used first to work.


Not sure what the issue is, but live booting a more standard distro might be a good idea, just in case. :) You could also try a slightly older version of a distro known to work at the time previous posts were made, in case a kernel or distro change broke the tool.
 

M10

New Member
Jan 21, 2022
13
1
3
tell You what, i've changed id in xl710_unlock.c file to my 1583 , make it and when i tried to runn it worked, asked if i want to unlock and then prompt said that is already unlocked... i have juniper dac and on it it's also not working.

Code:
root@proxmox:/tmp/test/xl710-unlocker# ./xl710_unlock -n enp6s0f0np0
EMP SR offset: 0x6676
PHY offset: 0x67c2
PHY data struct size: 0x000b
MISC: 0x0710 <- unlocked
MISC: 0x0710 <- unlocked
MISC: 0x0710 <- unlocked
MISC: 0x0710 <- unlocked
Ready to fix it? [y/N]: y
not changing, already unlocked in PHY struct 0 at offset 0x67c2
not changing, already unlocked in PHY struct 1 at offset 0x67ce
not changing, already unlocked in PHY struct 2 at offset 0x67da
not changing, already unlocked in PHY struct 3 at offset 0x67e6
root@proxmox:/tmp/test/xl710-unlocker#


Code:
Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.43.20.0
Copyright(C) 2013 - 2025 Intel Corporation.


WARNING: To avoid damage to your device, do not stop the update or reboot or power off the system during this update.
Inventory in progress. Please wait [..|*******]


Num Description                          Ver.(hex)  DevId S:B    Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Ethernet Converged         9.85(9.55)   1583 00:006 Up to date
    Network Adapter XL710-Q2


Tool execution completed with the following status: All operations completed successfully.
Press any key to exit.
 
Last edited:

blunden

Well-Known Member
Nov 29, 2019
1,122
396
83
tell You what, i've changed id in xl710_unlock.c file to my 1583 , make it and when i tried to runn it worked, asked if i want to unlock and then prompt said that is already unlocked... i have juniper dac and on it it's also not working.

Code:
root@proxmox:/tmp/test/xl710-unlocker# ./xl710_unlock -n enp6s0f0np0
EMP SR offset: 0x6676
PHY offset: 0x67c2
PHY data struct size: 0x000b
MISC: 0x0710 <- unlocked
MISC: 0x0710 <- unlocked
MISC: 0x0710 <- unlocked
MISC: 0x0710 <- unlocked
Ready to fix it? [y/N]: y
not changing, already unlocked in PHY struct 0 at offset 0x67c2
not changing, already unlocked in PHY struct 1 at offset 0x67ce
not changing, already unlocked in PHY struct 2 at offset 0x67da
not changing, already unlocked in PHY struct 3 at offset 0x67e6
root@proxmox:/tmp/test/xl710-unlocker#


Code:
Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.43.20.0
Copyright(C) 2013 - 2025 Intel Corporation.


WARNING: To avoid damage to your device, do not stop the update or reboot or power off the system during this update.
Inventory in progress. Please wait [..|*******]


Num Description                          Ver.(hex)  DevId S:B    Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Ethernet Converged         9.85(9.55)   1583 00:006 Up to date
    Network Adapter XL710-Q2


Tool execution completed with the following status: All operations completed successfully.
Press any key to exit.
It's great to hear you got the tool working (seemingly).

I believe you can still get that error if you have an unsupported transceiver type, not just due to vendor locking if I'm not mistaken. What transceivers have you tried?
 

M10

New Member
Jan 21, 2022
13
1
3
It's great to hear you got the tool working (seemingly).

I believe you can still get that error if you have an unsupported transceiver type, not just due to vendor locking if I'm not mistaken. What transceivers have you tried?



and sfp mudule programmer it's seven times the price of one of those cards i've got... the module is rebranded avago one. 9 euro for one module.
 

unixpro1970

New Member
Nov 30, 2015
8
0
1
Seattle area
Also, having a problem on a Dell r630 with XL710 NIC. Originally, it was an Oracle XL710 NIC (that never worked right). Cross-flashed it to the latest Intel XL710 firmware today.

The Dell r630, reports transceiver issues during system post, so guessing it is locked. Tried that unlocker utility and receive similar messages stating the NIC is *unlocked*.

With Debian Linux, only 1 of 2 transceiver ports work for this NIC. I am using the same transceiver/fiber cable and switching between ports on the NIC, only one of the two ports work at 40GB.

dmesg output:
enp129s0f1np1: NIC Link is Up, 40 Gbps Full Duplex, Flow Control: RX/TX

enp129s0f0np0:
Will generate "i40e 0000:81:00.0: failed to get phy cap., ret = -EIO last_status = I40E_AQ_RC_EAGAIN".

Unsure why enp129s0f1np1 works, but not enp129s0f0np0?
 
Last edited:

blunden

Well-Known Member
Nov 29, 2019
1,122
396
83



and sfp mudule programmer it's seven times the price of one of those cards i've got... the module is rebranded avago one. 9 euro for one module.
Weird. Does it work if you use the kernel parameter to disable the vendor lock in the driver? That should indicate whether it's due to the vendor locking or something else.
 

unixpro1970

New Member
Nov 30, 2015
8
0
1
Seattle area
Which kernel parameter will disable the vendor lock in the driver? Is this something that can be added within /etc/modprobe.d. ? If so, please specify what it is. That xl710-unlocker utility doesn't appear to work
 

blunden

Well-Known Member
Nov 29, 2019
1,122
396
83
Which kernel parameter will disable the vendor lock in the driver? Is this something that can be added within /etc/modprobe.d. ? If so, please specify what it is. That xl710-unlocker utility doesn't appear to work
Try adding the following:

options i40e allow_unsupported_sfp=1,1

That assumes a dual port NIC. I'm not entirely sure that the parameter is used by the X710 driver though. :)
 
Last edited:

smccloud

Member
Jun 4, 2013
330
13
18
Does anyone know of an SFP+ -> RJ45 transceiver that will allow pfSense to negotiate at 2.5G? Right now, I'm using a Realtek NIC for my WAN, which isn't ideal since once an update comes out, I'm SOL for updating the driver. X710 is used for LAN and has an open cage. The one SFP+ -> RJ45 transceiver I have will not negotiate at any speed (not even 1G, but my modem tries to negotiate at 2.5G).
 

MiniKnight

Well-Known Member
Mar 30, 2012
3,085
979
113
NYC
Does anyone know of an SFP+ -> RJ45 transceiver that will allow pfSense to negotiate at 2.5G? Right now, I'm using a Realtek NIC for my WAN, which isn't ideal since once an update comes out, I'm SOL for updating the driver. X710 is used for LAN and has an open cage. The one SFP+ -> RJ45 transceiver I have will not negotiate at any speed (not even 1G, but my modem tries to negotiate at 2.5G).
I don’t think the X710 SFP can do 2.5G and they negotiate funny. The L NICs support 2.5 but not the standard X710 https://www.servethehome.com/intel-x710-t4l-quad-10gbase-t-nic-review-massive-upgrade/
 

blunden

Well-Known Member
Nov 29, 2019
1,122
396
83
I don’t think the X710 SFP can do 2.5G and they negotiate funny. The L NICs support 2.5 but not the standard X710 https://www.servethehome.com/intel-x710-t4l-quad-10gbase-t-nic-review-massive-upgrade/
There are 10GBASE-T SFP+ transceivers like those using Aquantia PHYs that link up at 10G to the NIC/switch and then negotiate lower speeds to the RJ45 side (using Flow Control to slow down traffic to the lower speed). Those generally work even in legacy 10G devices that only support 1G and 10G.
 

smccloud

Member
Jun 4, 2013
330
13
18
Well, other than some PETG, a noctua NF-A6x25, and some m3 screws & nuts, I got my X710-DA2 for free (cooling shroud since its in an open air case). So if I have to buy an X710-X2L it won't be horrible.
 

blunden

Well-Known Member
Nov 29, 2019
1,122
396
83
Well, other than some PETG, a noctua NF-A6x25, and some m3 screws & nuts, I got my X710-DA2 for free (cooling shroud since its in an open air case). So if I have to buy an X710-X2L it won't be horrible.
You can try one of the Aquantia AQC113 based transceivers. It very well might work, as long as it is programmed to appear as a 10GBASE-SR transceiver.

The 10Gtek ASF-10G2-T (note the "2" in there) is one of them if I'm not mistaken. There are also several on AliExpress from brands like Xicom etc. that also use it. It's one of the older 30 meter rated models so power consumption and heat generation is higher than the modern PHYs. That can potentially limit compatibility with NICs.
 

nexox

Well-Known Member
May 3, 2023
1,933
963
113
Does anyone know of an SFP+ -> RJ45 transceiver that will allow pfSense to negotiate at 2.5G?
The other option is to pick up a cheap 2.5G switch with SFP+ uplinks and a DAC, not exactly elegant, but it works. I haven't played with any of the super cheap managed models, they might not work the best, but if you got one which supports VLANs and trunk to the router you could use the other switch ports for LAN devices.
 

smccloud

Member
Jun 4, 2013
330
13
18
You can try one of the Aquantia AQC113 based transceivers. It very well might work, as long as it is programmed to appear as a 10GBASE-SR transceiver.

The 10Gtek ASF-10G2-T (note the "2" in there) is one of them if I'm not mistaken. There are also several on AliExpress from brands like Xicom etc. that also use it. It's one of the older 30 meter rated models so power consumption and heat generation is higher than the modern PHYs. That can potentially limit compatibility with NICs.
Any idea on where to get that specific model of 10Gtek adapter? Amazon doesn't let you know what one you're going to get.
 

blunden

Well-Known Member
Nov 29, 2019
1,122
396
83
  • Like
Reactions: nexox