Manually Install Intel X553 Driver in Linux for Intel Atom C3000 Series CPUs

post-thumb

Photo by SeventyFour from iStock

Table of Contents

When taking a look at the TC300-TTG sent to me by Tometek, I encountered a number of issues using the SFP+ interfaces. This was the first mini PC with an Intel Atom C3000 series CPU that I have had the privilege to test so I was excited to test the performance.

Excitement quickly turned to frustration when I encountered several issues attempting to use the SFP+ interfaces in various Linux distributions.

The issues I describe below not only affect the TC300-TTG but also several Qotom boxes which are popular by homelabbers such as the Qotom Q20331G9 (affiliate link) and the 1U version (affiliate link) of that system (both of which have the same Atom C3758R CPU as the TC300-TTG from Tometek).

The Issues

SFP+ Modules

The primary issue at hand is that the X553 SFP+ interfaces work fine when devices are connected directly to the SFP+ interface but they do not work when connected to a network switch. Apparently the X553 interfaces worked fine in Linux v5.x kernels but not in v6.x kernels.

I noticed some of this odd behavior when trying out the Tometek TC300-TTG so I started digging into the issue further. STH had a post about it, and they stated it worked fine on Proxmox v8.1.3. However, in the comments users stated they were experiencing various issues.

Later I saw a YouTube video from STH that described the issue exactly.

I would like to note that the SFP+ interfaces worked without issue in OPNsense so FreeBSD based operating systems may have a working driver out of the box.

SFP+ Modules

Another issue I encountered was SFP+ module/DAC cable compatibility. While SFP interfaces can be particular about the supported modules/DACs, the X553 interfaces may more compatibility issues than other SFP interfaces. I tried a couple of DAC cables from 10GTek that did not work, but a DAC cable that I got from Protectli works fine.

When I mentioned the issues I was having Tometek was generous by sending me some fiber SFP+ modules that they knew would work with the TC300-TTG. They do not seem to be a brand I recognize. Just be aware that you could encounter some compatibility issues with the cables in addition to software driver issues, which makes for a more difficult time when troubleshooting.

Installing the X553 Driver on Ubuntu/Debian

On the Proxmox forum, I found instructions for building the X553 driver. Even though I found some instructions on other sites, I found the instructions from a user on the Proxmox forum to be straightforward and it also included the instructions for DKMS. That was helpful to me because I was trying to combine to different instructions (from the same site) into a single guide but there were a few areas that may have needed cleaned up a bit.

The instructions in this section should work on Debian-based systems which includes Ubuntu and Proxmox.

Note

In the original post, there was the inclusion of installing the proxmox-default-headers package for Proxmox, but I found I did not need to install the linux-headers-$(uname -r) package on Ubuntu since it was already installed. If you are attempting this on Proxmox, you may need to install the proxmox-default-headers package.

First install the dependencies:

sudo apt install build-essential dkms gcc make

Download and extract the X553 driver. You may need to get a newer version but at the time of this writing, the driver below is the latest version. You can find the ixgbe driver page on Intel’s website.

wget https://downloadmirror.intel.com/825849/ixgbe-5.20.9.tar.gz
sudo tar xvfvz ixgbe-5.20.9.tar.gz -C /usr/src

Now you need to open a new file using nano:

sudo nano /usr/src/ixgbe-5.20.9/dkms.conf

Add the following lines to the file:

MAKE="BUILD_KERNEL=${kernelver} make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
PACKAGE_NAME="ixgbe-dkms"
PACKAGE_VERSION="5.20.9"
BUILT_MODULE_NAME="ixgbe"
BUILT_MODULE_LOCATION=src/
DEST_MODULE_LOCATION="/kernel/drivers/net/ethernet/intel/ixgbe/"
AUTOINSTALL="yes"

Press “Ctrl + O” to save the file and “Ctrl + X” to exit the text editor.

Finally, run the command below to add, build, and install the Intel X553 driver using dkms. By using dkms, the driver should automatically recompile anything there is a new kernel update.

sudo dkms add ixgbe/5.20.9
sudo dkms build ixgbe/5.20.9
sudo dkms install ixgbe/5.20.9

Please note the caveats below and how you may attempt to minimize risk due to an issue related to building the drivers on newer kernel versions.

Disadvantages/Risks of Manually Building Drivers

There are a number of disadvantages and risks when manually building the Intel X553 drivers:

  • Anytime there is a new kernel version update, the X553 driver will automatically build again so running apt dist-upgrade will take much longer.

  • When upgrading to a new kernel version, there is a risk the driver will break and you will lose functionality of the 10G SFP+ interfaces. The risk is less when upgrading to a new revision of the same minor version of the Linux kernel (upgrading from v6.8.0 to v6.8.8, for example).

  • There is the possibility of rendering your system unbootable until you disable the driver (or update it with a working driver) and reboot the system. This most likely will only occur when updating major kernel versions and perhaps certain minor versions. For instance, users in the Proxmox forum (linked above in this guide) encountered issues moving from the v6.5.x to v6.8.x minor versions of the kernel with certain X553 driver versions.

Recommendations to Minimize Risks

There are a couple of things you could do to minimize risk with manually installing the X553 driver:

  • Only perform updates to revisions to minor Linux kernel versions. You may “pin” the kernel version so that you do not accidentally upgrade to a newer minor/major kernel version. If you cannot afford the down for failed updates, this may be the best option for maximum stability.

  • If you wish to update the minor/major Linux kernel version, you may wish to see if others have encountered issues before proceeding. You may need wait longer or download a new driver before updating.

  • I recommend using a backup network interface to access your system in case the driver fails so that you can resolve the issue(s) at hand. Many systems which have the X553 SFP+ interfaces also have 2.5 Gbps Ethernet interfaces you may use for this purpose.

  • If you are using ZFS on your boot drive(s), you could take a ZFS snapshot before updating so that you can easily roll back without much downtime if you encounter an issue.

Conclusion

The X553 driver which comes preinstalled in many v6.x Linux kernels have issues connecting to a network switch and/or certain SFP+ modules. Until the preinstalled kernel drivers are fixed, manually installing the driver is the only way forward unless you are willing to use an older v5.x Linux kernel or you simply direct connect devices to the SFP+ interfaces (which limits its usefulness on your network).

comments powered by Disqus