Developing a "shim" driver to install old drivers on new Linux

murrellra

New Member
Joined
Aug 5, 2024
Messages
7
Reaction score
0
Credits
65
Is such a thing even possible? I've been struggling for some time with vendor supplied driver source code that won't compile under Linux 6.2. This is my biggest gripe against Linux other than lack of coherent documentation. The driver interface seems to change with every major release. This is probably the biggest issue that stifles Linux adaptation. Can a general-purpose shim driver be developed that inserts itself between the new kernel and old driver to interpolate between the interfaces?
 


This is probably the biggest issue that stifles Linux adaptation.

I agree, it definitely happens, but I wouldn't say it's the norm.
There are some drivers that haven't changed in years, they worked in the Linux 4.x kernel, the 5,x kernel, and the 6.x kernel.
 
If you hardware is old and new kernels don't work with old drivers then maybe consider installing older version distro with older kernel that works.

This is probably an option if you can't or don't want to upgrade hardware for modern day kernel.
 
I had to upgrade from Linux 4.14 to Linux 6.2 to support new features. Our hardware is not that old. Its based on an NXP i.MX6QP ARM processor. The problem driver is for a Realtek 8822CU WiFi module. This was newly "supported" in Linux 6.2 but doesn't work in Access Point mode. This should be a feature of a modern kernel. Windows did it, so did QNX.
 
I wanted to separate this out from that other thread, hopefully to inspire someone proficient in kernel driver development that this is a good idea. Its actually a WiFi dongle and I'm looking at several replacement candidates.
 
The problem driver is for a Realtek 8822CU WiFi module. This was newly "supported" in Linux 6.2 but doesn't work in Access Point mode. This should be a feature of a modern kernel. Windows did it, so did QNX.

I have one, I will see if I can set it up as an AP. You have to do some things differently than the old networkd,
ifconfig and wpa_supplicant don't work, you have to do it in NetworkManager.
 
I could not get this to work in a kernel 6.2.x.
But I was able to get this working under a 6.7.x, 6.9.x and 6.10.x kernel.
 


Members online


Top