I wanted 5GbE for my SAN network without buying new PCIe cards, so I picked up a BrosTrend USB-A 5GbE adapter (Realtek RTL8157). On Proxmox VE 9 it only linked at 1000Mb/s out of the box. Installing a community Linux 7.1 kernel on that one node fixed it, and the adapter now negotiates a full 5000Mb/s. Kernel 7.1 is the first with built-in RTL8157 support, so there's no DKMS driver to build and nothing to blacklist.
My layout: the adapter carries SAN traffic, and management stays on the onboard NIC. Adjust the names and subnets to match yours.
Why it runs at 1G by default
The stock Proxmox VE 9 kernel (7.0.x-pve) doesn't recognize the RTL8157 in its r8152 driver. The generic cdc_ncm USB Ethernet driver picks it up instead and runs it in a basic compatibility mode. To see which driver has your adapter:
ethtool -i | grep driver
cdc_ncm means generic mode. r8152 means full support.
Realtek's RTL8157 support has been merged into the mainline r8152 driver and ships in Linux 7.1. Until Proxmox ships 7.1 or newer, you can either build Realtek's driver with DKMS or run a newer kernel. DKMS didn't take over from the built-in driver on my 7.0 kernel, so I went with the newer kernel.
What you're installing
The 7.1 kernel comes from jaminmc/pve-kernel, a community build of the Proxmox kernel. A few things to know first:
- It's unofficial and hasn't been through Proxmox's QA.
- It isn't signed, so it won't boot with Secure Boot enabled.
- There's no apt repository, so you install the .deb files by hand. The pvetest repo doesn't help, because it has no 7.1 kernel.
- The kernel is a per-node choice. My other cluster nodes stayed on the official 7.0 kernel.
My nodes don't use ZFS, so I only needed three packages and skipped the headers. With no DKMS driver, nothing needs to compile against the kernel. If you use ZFS, you also need the matching ZFS 2.4.3 userland packages from jaminmc/zfsonlinux.
Install
- Migrate VMs off the node. Then confirm Secure Boot is off, and disable it in the firmware if it isn't:mokutil --sb-stateIt should say "SecureBoot disabled".
- If you previously installed a Realtek DKMS driver, remove it along with any blacklist file it created. Skip this on a clean node:apt remove -y realtek-r8152-dkms
rm -f /etc/modprobe.d/99-rtl815x-usb-blacklist.conf - Download the meta package, the kernel image, and the firmware. This pulls the links from the GitHub API, so you don't have to type filenames containing ~ and +:mkdir -p ~/7.1-beta && cd ~/7.1-beta
curl -s https://api.github.com/repos/jaminmc/pve-kernel/releases/tags/pve-7.1.0-1_beta1
| grep -oE '"browser_download_url": *"[^"]+"' | cut -d'"' -f4
| grep -E 'proxmox-kernel-7.1|pve-firmware'
| xargs -n1 wget -q --show-progress
ls -lYou should see three .deb files. Check the releases page for a newer beta first. If there is one, swap its tag into the URL. - Install them. The ./ prefix tells apt to use the local files instead of the repos:apt install ./proxmox-kernel-7.1*.deb ./pve-firmware*.deb
update-initramfs -u -k all
proxmox-boot-tool kernel list - Reboot. The 7.1 kernel becomes the default, and the 7.0 kernel stays installed as a fallback.
Verify
After the reboot, run these:
uname -r # 7.1.0-1-pve
ethtool -i | grep driver # r8152
ethtool | grep Speed # 5000Mb/s
cat /sys/class/net//speed # 5000
lsusb -t # Driver=r8152
dmesg | grep -iE 'r8152|' # no errors, no repeated carrier off/on
Use ethtool or /sys/class/net//speed to check link speed. ip addr doesn't show it. The 5000M in lsusb -t is the USB link, not the network link.
A 5Gbps USB connection usually delivers about 3.3 to 3.6 Gbps of real throughput, so test across the SAN with iperf3 rather than expecting a full 5G.
Rolling back
Pick the 7.0 kernel under Advanced options in the boot menu, or make it the default again:
proxmox-boot-tool kernel pin <7.0 version>
The adapter falls back to cdc_ncm at 1G. The enx... interface name comes from the MAC address, so it stays the same and the bridge config needs no changes.
Keeping it updated
There are no automatic updates for this kernel. Watch the GitHub releases page, and switch to the official kernel once Proxmox ships 7.1 or newer.