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,094
382
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,094
382
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,094
382
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,094
382
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,094
382
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: