This article explains how to install an extra NIC in the T630 M.2 2230 slot usually meant for WiFi cards and then pass it through to a VM in Proxmox. If you want to run pfSense on a T630, it might also be helpful to you since I can confirm this card works 🙂
Hardware
First, I ordered an “M2 M.2 NGFF E A Key Gigabit LAN Ethernet 10 100 1000 Mbps chipset Intel I210” from Amazon.com. It ended up not working in the T630. I tried it in two different T630s but no luck. Then I tried the card in a laptop and it worked there. I tried the WiFi card in the T630 and that worked, so I conclude that this particular Intel i210 card is somehow incompatible with the T630.
So I moved on and ordered an “M2 M.2 NGFF E A Key 2.5 Gigabit RJ45 LAN Ethernet 10 100 1000 1G 2.5G chipset Realtek RTL8125”. As many other components on Amazon there are several of these out there with different manufacturers. Both types of cards I got was from “KALEA INFORMATIQUE”.
Mounting the working card ended up being kinda easy. You have to take away 2 metal fins where the expansion port is located, or else they will be in the way of the Ethernet port. Bending them repeatedly or cutting them should work. You can put the rather long cable under the PCB. Folding it before you fasten the other two components worked best for me.
Passthrough in Proxmox
To get the best performance out of this card in a VM I assumed it was best to pass it through rather than emulate it. First I followed this guide and changed my GRUB command line to this:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on pcie_acs_override=downstream"
The reason for the second argument is that without it, the new NIC and the built in 1Gb NIC end up on the same IOMMU group and that is the smallest group you can pass through. I don’t know the ins and outs of it but I tried to start a VM with them in the same group and the 1GB NIC then ends up not working and disconnecting Proxmox all together.
To check the IOMMU groups on your system, run:
for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU group %s ' "$n"; lspci -nns "${d##*/}"; done
My output without the ACS override:
IOMMU group 0 00:01.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Wani [Radeon R5/R6/R7 Graphics] [1002:9874] (rev 88)
IOMMU group 0 00:01.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Kabini HDMI/DP Audio [1002:9840]
IOMMU group 1 00:02.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Host Bridge [1022:157b]
IOMMU group 1 00:02.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Root Port [1022:157c]
IOMMU group 1 00:02.3 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Root Port [1022:157c]
IOMMU group 1 01:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
IOMMU group 1 02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 05)
IOMMU group 2 00:03.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Host Bridge [1022:157b]
IOMMU group 3 00:08.0 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] Carrizo Platform Security Processor [1022:1578]
IOMMU group 4 00:09.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Carrizo Audio Dummy Host Bridge [1022:157d]
IOMMU group 4 00:09.2 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Audio Controller [1022:157a]
IOMMU group 5 00:10.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] FCH USB XHCI Controller [1022:7914] (rev 20)
IOMMU group 6 00:11.0 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] [1022:7901] (rev 49)
IOMMU group 7 00:12.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller [1022:7908] (rev 49)
IOMMU group 8 00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b] (rev 4a)
IOMMU group 8 00:14.3 ISA bridge [0601]: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge [1022:790e] (rev 11)
IOMMU group 9 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 0 [1022:1570]
IOMMU group 9 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 1 [1022:1571]
IOMMU group 9 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 2 [1022:1572]
IOMMU group 9 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 3 [1022:1573]
IOMMU group 9 00:18.4 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 4 [1022:1574]
IOMMU group 9 00:18.5 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 5 [1022:1575]
As you can see, both NICs are in group 1. After enabling the ACS override:
IOMMU group 0 00:01.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Wani [Radeon R5/R6/R7 Graphics] [1002:9874] (rev 88)
IOMMU group 0 00:01.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Kabini HDMI/DP Audio [1002:9840]
IOMMU group 10 00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b] (rev 4a)
IOMMU group 10 00:14.3 ISA bridge [0601]: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge [1022:790e] (rev 11)
IOMMU group 11 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 0 [1022:1570]
IOMMU group 11 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 1 [1022:1571]
IOMMU group 11 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 2 [1022:1572]
IOMMU group 11 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 3 [1022:1573]
IOMMU group 11 00:18.4 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 4 [1022:1574]
IOMMU group 11 00:18.5 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 5 [1022:1575]
IOMMU group 12 01:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
IOMMU group 13 02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 05)
IOMMU group 1 00:02.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Host Bridge [1022:157b]
IOMMU group 2 00:02.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Root Port [1022:157c]
IOMMU group 3 00:02.3 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Root Port [1022:157c]
IOMMU group 4 00:03.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Host Bridge [1022:157b]
IOMMU group 5 00:08.0 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] Carrizo Platform Security Processor [1022:1578]
IOMMU group 6 00:09.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Carrizo Audio Dummy Host Bridge [1022:157d]
IOMMU group 6 00:09.2 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Audio Controller [1022:157a]
IOMMU group 7 00:10.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] FCH USB XHCI Controller [1022:7914] (rev 20)
IOMMU group 8 00:11.0 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] [1022:7901] (rev 49)
IOMMU group 9 00:12.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller [1022:7908] (rev 49)
Voila! The 2.5Gb NIC is isolated in group 13 and can be passed through successfully!
On the Debian system I run I had to install the realtek-firmware package (from non-free) for it to work.
Hope this helps someone!
Hi, is it really possible to use the T630 with PCI-Passthrough under proxmox? I have a Fujitsu Futro S920 and as it seems to be not possible on thy machine, I stumbled to the T630. The used AMD GX-420GI seems to support AMD-V, but not AMD-Vi (IOMMU) which is necessary for the passthrough. Can you confirm that you really got the T630 running on proymox with IOMMU/PCI-passthrough? Maybe it would also be possible for my Futro S920, otherwise I’m considering to purchase a used T630. best regards,
Andreas
Yes I can confirm that it worked for me. That’s what the article describes and my NIC was passed through successfully. However, with a recent kernel update the IOMMU groups that I described above did change and the NIC landed in the same group as other devices again on my system which is very unfortunate, even with the ACS override. The effect is that the others devices in the same group stops working on the host system. In my case it was the built in NIC so I lost connection to the host all together when passing the new NIC to a VM.
The guide that I linked to describing Proxmox passthrough recommends moving the PCI card when that happens but obviously we don’t have that option on this system.
https://pve.proxmox.com/wiki/PCI_Passthrough#AMD_CPU (under “Verify IOMMU isolation”)
With this in mind I’m not sure I would recommend this system, but on the other hand I didn’t investigate too much further when it happened. It might work with another kernel, or with a patch etc.
is this issue still on current proxmox kernel update? thanks!
Hello!
I have buyed this network card https://www.ebay.at/itm/374863978704
When i mount the card my PC does a bootcycle, after the screen message “Press ESC to conf…” it reboots in a loop. When i take the card out, it boots up normally, there is not a message that hardware has changed like when you change the RAM as example.
I have to say, my T630 has a VGA Slot right where YOUR M2 Networkcard sits.
Do you have any hints why the T630 cant boot with this card installed?
Regards
Werner
Exact same problem here! Did you manage to solve it?
Hi guys! I have not seen the issue you’re describing, and the NIC you linked looks identical to mine. My guess would be some bios setting or hardware conflict. The latter would be odd since all hardware is basically built in and identical. Do you reach the bootloader at all?
I can confirm this m.2 nic works when booting windows. I want to use the T630 as a pfsense / opensense machine. The nic is not detected by pfsense. Is there a way that I can change the configuration so that the nic can be detected?
I have test 3 different types of these nics and just 1 type works perfectly with the latest FW
The ones that have a bootloop and thus will never work are:
o Intel i210
o 2.5G chipset Realtek RTL8125
The one that works has the same chipset as the onboard one, so no additional driver is needed:
o Rtl8111f
Working ones: https://nl.aliexpress.com/item/1005005626233844.html