[PVE-User] tn40xx network driver issue

Kyle Schmitt kyleaschmitt at gmail.com
Mon Mar 15 03:06:16 CET 2021

Just an FYI in case this helps anyone:  The tn40xx driver included
with 5.4.101-1-pve wasn't built with the firmware needed to use the Tehuti
Networks TN9710P 10GBase NIC.

Identified like this in lspci:
05:00.0 Ethernet controller: Tehuti Networks Ltd. TN9710P 10GBase-T/NBASE-T
Ethernet Adapter

With this kernel, if you manually modprobe tn40xx, you will see something
Tehuti Network Driver from https://github.com/acooks/tn40xx-driver, 004
Supported phys : QT2025 TLK10232 AQR105 MUSTANG

The driver needs build-time firmware for each phy the chip can support, and
the one my NIC needs shows as MV88X3310 in the "Supported phys" list.

Temporary work around:
There may be cleaner methods than this but as a stopgap if you get one of
Grab a version of the linux driver from someplace relatively safe:
and extract the firmware.  In this case the firmware was

Grab the source for the DKMS module (older since the driver has been moved
in kernel, but still works).  https://github.com/acooks/tn40xx-driver.git.
It makes it easy if you put this into /usr/src/tn40xx-004 via:
git clone -b release/tn40xx-004 https://github.com/acooks/tn40xx-driver.git

In the Readme it says you need x3310fw_0_3_4_0_9445.hdr for NICs with this
chip.  Symlinking or renaming x3310fw_0_2_8_0_8850.hdr works just fine. The
firmware you snagged in the first step goes in the /usr/src/tn40xx-004/

Note: you can build this as a DKMS driver, but understand that since it's
older than what's there, dkms install will complain, and it might not load
automatically.  In my case I had to run:
dkms install tn40xx/004  --force
and it still ended up not putting the right module in place, but a simple:
cp /usr/src/tn40xx-004/tn40xx.ko /lib/modules/5.4.101-1-pve/updates/dkms

After modprobe tn40xx, this shows in dmesg.

Tehuti Network Driver from https://github.com/acooks/tn40xx-driver, 004
Supported phys : MV88X3120 MV88X3310  QT2025 TLK10232 AQR105 MUSTANG

And the interface works.

Hopes this helps if anyone else runs into this.

More information about the pve-user mailing list