Final Chapter in the Keyboard Saga
Last week I saw a pending kernel update and I decided enough was enough. It was time to get my Azio keyboard driver working with DKMS and stop the insanity.
It turns out that using DKMS is one of the those things that ends up being a lot easier to do that you think it will be. I am so used to easy things being hard with Linux, that I forget that some hard things are easy.
I started with the Community Help Wiki article on DKMS. They have a good sample dkms.conf
file that I started from:
MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=awesome
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=awesome
PACKAGE_VERSION=1.1
REMAKE_INITRD=yes
I also have a driver on my system, for a USB network adapter, that uses DKMS. It’s the rt8192
for the Realtek chipset.
I took the two sample config files and merged them together, removing the duplicate lines. Then I commented out the lines that were exclusive to one file or the other and modified the common lines to match my project. Finally, I ran man dkms
and began researching what the directives on each of the commented lines did.
This is what I came up with:
PACKAGE_NAME=aziokbd
PACKAGE_VERSION=1.0.0
BUILT_MODULE_NAME[0]=aziokbd
DEST_MODULE_LOCATION[0]="/kernel/drivers/input/keyboard"
AUTOINSTALL="yes"
See how simple it is?
Next I modified my make file to build/install the DKMS module. Again, I copied from the rt8192 driver. Here’s the final Makefile target:
dkms: clean
rm -rf /usr/src/$(MODULE_NAME)-1.0.0
mkdir /usr/src/$(MODULE_NAME)-1.0.0 -p
cp . /usr/src/$(MODULE_NAME)-1.0.0 -a
rm -rf /usr/src/$(MODULE_NAME)-1.0.0/.hg
dkms add -m $(MODULE_NAME) -v 1.0.0
dkms build -m $(MODULE_NAME) -v 1.0.0
dkms install -m $(MODULE_NAME) -v 1.0.0 --force
Remind me to add a version variable!
Thanks to Dylan Slavin’s awesome contribution, the driver now has a nice install.sh
script to get users up and running with minimal effort.
Go and get it.
No comments:
Post a Comment