Cxgb4 encountered a fatal error (Chelsio NIC)

Hello,

I just converted another machine from Windows over to Zorin and this one has a unique NIC in it, a Chelsio T540-CR. Looks like Chelsio only provides drivers for RHEL and source to compile yourself, but Zorin at least seems to have detected the card and tried to have the driver module loaded for it already. However, when booting I get an error that the driver encountered a fatal error and the NIC wont show up in the OS. I know the NIC has no problems, it was just working under Windows and still shows up in the bios perfectly fine and can config options for the card there. Did a bit of searching and only found 1 topic on Chelsio here at the forums:

But this thread appears to no longer be relevant and the links are dead. As I am still new to linux world, can anyone help me diagnose why the driver is "encountering a fatal error" and hopefully get it working?

I will look through this and see what needs to be updated.

Like Broadcom, this card contains proprietary drivers that the end user is allowed to install, but distributions or kernels are limited by its terms of service as to what they can install.
To get the latest driver, they have some hoops to jump through.

Select t540-cr, Linux, Unified Wire
Then select the Source.tar.gz

It wants you to accept their terms. Then you can download.
Once download is complete, open a terminal to make your life easier.

First, install some needed dependencies or ensure that they are up to date;

sudo apt install build-essential linux-headers-$(uname -r)

sudo apt install linux-firmware

Using the cd command, change directory to your Home Downloads folder where the NIC Driver download landed:

cd ~/Downloads

Now, run this command to extract the compressed package:

tar -xzf ChelsioUwire-3.19.0.3.tar.gz

Change Directory again into the extracted folder in order to access its files:

cd ChelsioUwire-3.19.0.3

EDIT: to test the instructions I gave above, I downloaded the drivers and looked at them. I see it has an install-dkms.sh file which is preferable to use as DKMS allows you to upgrade your kernel without having to reinstall the drivers. To use that, give it executable permission:

chmod +x install-dkms.sh

Then run the installer script:

sudo ./install-dkms.sh

If NOT using DKMS install, you can use make as previously stated:
The installer make is used to install:

make

sudo make install

2 Likes

Thank you for the detailed help on this. I tried following the commands you listed and nothing seems to happen when I get to the ./install-dkms.sh part, it just goes to a new line in the terminal. I tried restarting, thinking that maybe it was just doing it in the background? But normally when I do an install through this method the terminal lists some things and often asks me Y or N for some options, this did nothing but go to a new line. Upon rebooting I still get the same error for the driver.

So, I tried it again doing the non-dkms install method. This seems to work, and begins running the installation and starts asking me questions. Id prefer to use dkms though as not needing reinstall drivers when upgrading the kernel sounds great. Im just not sure why the first method seems to do nothing. Perhaps Chelsio's dkms install script is broken?

What happens if you run

bash -x ./install-dkms.sh

This happens when I type the bash command:

I started trying to do the regular install just to verify it fully functioned and drivers worked, even if I would prefer to go back and install the dkms version later. Unfortunately, soon after the installer starts it gives a message saying that the kernel I am on (6.8) is unsupported and I have to downgrade. So Im guessing this is the reason for the failure of the dkms version to do anything as well.

Hmmm.........

So, I looked in the files included and cxgbit_target.c shows: #if LINUX_VERSION_CODE > KERNEL_VERSION(3,17,0)

Kernel 3.17?

This tells me that this driver is from about 2014 and Chelsio has not updated it since then.
It is already annoying that they lock in the kernel version in the installer... But that they left it unattended for so long is bewildering.

I tried searching for information based on this as used with Ubuntu and the last Ubuntu Version I can find install details on was Ubuntu 16.04.

If this was me... I would not spin any more wheels on it. I would buy a current Linux Supported WiFi dongle, plug that in, and be done.

1 Like

Ya I have been doing some searching the last few minutes and Google AI told me the supported kernel was 3.17 as well. lol. That doesnt seem right, so i went further and found specific kernel versions listed in various release notes. The notes for driver 3.19.0.3 seem to indicate that kernel 6.6 is supported:

Right near the beginning of the document under Fixed Issues:

Fixed the compilation issues on latest 6.6.X kernel and ubuntu 20.04.X distributions.

So looks like either try downgrading to the 6.6 kernel, or give up.

But yes, although Chelsio has some great performing NICs with some great features, since I dont really use those features here anymore there isnt a specific NEED for this Chelsio card. The support on Linux from them seems pretty bad, so ill likely just try and replace it with another NIC.

Zorin OS is based on Ubuntu 22.04...
Which kernel are you using?

uname -r

I just did a test and I get the same result that you did.

Im running Zorin 17.3, so it should be on kernel 6.8 AFAIK.

Edit:
Yes, 6.8.0-60-generic according to uname -r

Well, you can try downgrading the kernel to a version < 6.6...

sudo apt install linux-image-6.5.0-44-generic linux-headers-6.5.0-44-generic linux-modules-6.5.0-44-generic linux-modules-extra-6.5.0-44-generic

1 Like

So some updates on the attempt:

Got the 6.5 kernel installed and booted into and all that.

Tried to install, same behavior with the dkms install script.
Tried to install the other method, it start and runs much further but then throws an error about needing the dependency "perl" and to install that. Tried to install that, apt-get says it is already installed and the latest version.

At this point I'm just giving up on the NIC for getting it working. I'm guessing the dependency versions are probably coded in to the installer too like the kernel is for yet more problems. Basically just writing off Chelsio in my mind as not something to use when wanting to move to Linux.

Thank you for all your help on this Aravisian.

Yes, I had the same result on the kernel when I tested this earlier - despite moving to a pre-6.6 version.
That was what made me get grumpy with it.

1 Like

You can get replacement USB NIC's on Amazon. Just make sure you buy one that supports Linux, which there are quite a few actually. I'm sorry to hear about the issues you've faced, getting to this point however.


1 Like