After my general overview of how the Intel variant of the Lenovo T14 Gen 4 fares with Ubuntu Linux, let’s have a closer look at the only major point I had somewhat of an issue with to get working: The Intel AX211 Wi-Fi chip. As I’m still using a 3.5 year old Ubuntu 20.04 with a 2 year old Linux kernel 5.15 stream, I was a bit disappointed but not really surprised that this didn’t work out of the box. But with a bit of effort, I got it working anyway.
After a bit of searching, I found a backport of a relatively recent Intel Wi-Fi kernel module for Ubuntu 20.04. So I gave this one a try, but it didn’t really help very much. So I uninstalled it again and then went ahead and upgraded Ubuntu 20.04 on my test installation to Ubuntu 22.04.
Like 20.04, Ubuntu 22.04 is also a Long Term Support (LTS) release, so it’s a potential candidate to migrate to on my production system. After upgrading, the system went from Linux kernel 5.15 to 6.2, and the Wi-Fi started to work. A first success, but every now and then the Wi-Fi kernel driver crashed and left me without connectivity. Also, the syslog was splattered with ugly error messages. Ups!?
At first, the crashes seemed random, but I eventually found a reproducible pattern: While the Wi-Fi firmware worked well with Wi-Fi tethering to my phone and the AVM Wi-Fi repeater at home, it reliably crashed every time the Wi-Fi connection was redirected from the repeater to my Fritzbox 7590 VDSL router. The driver/firmware would also crash when directly connecting to the Fritzbox 7590 out of flight mode. The only way out was to go to another Wi-Fi. How interesting!
As a next step, I flashed a current Ubuntu 23.10 to a memory stick and booted from there. Ubuntu 23.10 currently comes with a pretty recent Linux 6.5 kernel stream (6.6 was just released a few days ago). In this configuration, the Wi-Fi started to work reliably and I could not make the kernel module crash anymore. That’s nice, but doesn’t help me very much, as Ubuntu 23.10 is not a Long Term Support (LTS) version, and will be superseded soon. No problem for a test installation, but not for my production system. One option would be to wait for Ubuntu 24.04 to be released, which will be the next LTS version. But that’s still quite a few months down to road, so I ventured on.
Ubuntu 22.04 with an OEM-kernel
Kernel drivers are specific to a Linux kernel stream, so I wondered if using a Linux 6.5 kernel with Ubuntu 22.04 would fix the problem. I’ve gone down this road in the past to fix other problems, but compiling a kernel on my own for a production system would only be a last resort. Fortunately, it turned out that Ubuntu/Canonical themselves have a so called OEM kernel built with the 6.5 kernel stream and driver sources for 22.04. And best of all: It can be installed from the apt repository, no PPA required:
sudo apt install linux-oem-22.04d
After a reboot, I was on the 6.5 kernel stream with Ubuntu 22.04, and Wi-Fi worked properly. The Intel Wi-Fi kernel driver was not the same as Ubuntu 23.10, but good enough to make the crashes stop. Here’s an overview of the driver versions from syslog when searching for ‘loaded firmware‘:
Ubuntu 22.04, kernel 6.2: Wi-Fi version: 72.a764baac
Ubuntu 22.04, kernel 6.5 (OEM): Wi-Fi version: 79.27f1c37b
Ubuntu 23.10, kernel 6.5: Wi-Fi version: 83.e8f84e98
From a security point of view, it is of course a must that the OEM kernel is updated whenever the standard 6.5 kernel receives an update. So would it? Fortunately, a new kernel was delivered for all streams just the other day, and the OEM stream also received an update. So that’s confirmed as well. At some point, Ubuntu 22.04 will go to a newer kernel version anyway, but that’s perhaps still a few months out. Once that happens, I can uninstall the OEM kernels and go back to the standard kernel lineup for 22.04. Or perhaps move to Ubuntu 24.04 while I’m at it. Let’s see.
To summarize: With Ubuntu 22.04, Intel’s AX211 Wi-Fi chip can be used with the OEM kernel stream, which is just and ‘apt install‘ command away. In a few months time, 22.04 will go to a newer kernel version anyway, by which time the chip will be natively supported. That’s good enough for me to declare it usable.