diff --git a/driver/dkms/Makefile b/driver/dkms/Makefile new file mode 100644 index 0000000..dbf0c6f --- /dev/null +++ b/driver/dkms/Makefile @@ -0,0 +1,44 @@ +obj-m := ch343.o + +KVER ?= $(shell uname -r) +KDIR ?= /lib/modules/$(KVER)/build +VERSION ?= $(shell cat VERSION) +SRC_DIR=$(shell pwd) + +default: + $(MAKE) -C $(KDIR) M=$(SRC_DIR) modules + +clean: + $(MAKE) -C $(KDIR) M=$(SRC_DIR) clean + +install: + $(MAKE) -C $(KDIR) M=$(SRC_DIR) modules_install + +unload: + /sbin/rmmod ch343 + +load: unload + /sbin/insmod ch343.ko + +dkms.conf: dkms.conf.in + sed "s/@@VERSION@@/$(VERSION)/" $^ > $@ + +dkms-add: dkms.conf + /usr/sbin/dkms add $(SRC_DIR) + +dkms-build: dkms.conf + /usr/sbin/dkms build ch343/$(VERSION) + +dkms-install: dkms.conf + /usr/sbin/dkms install ch343/$(VERSION) + +dkms-remove: dkms.conf + /usr/sbin/dkms remove ch343/$(VERSION) --all + +modprobe-install: + modprobe ch343 + +modprobe-remove: + modprobe -r ch343 + +dev: modprobe-remove dkms-remove dkms-add dkms-builddkms-install modprobe-install diff --git a/driver/dkms/README.md b/driver/dkms/README.md new file mode 100644 index 0000000..9d4ab2a --- /dev/null +++ b/driver/dkms/README.md @@ -0,0 +1,49 @@ +# Load the ch343 driver using dkms. + +## Installing ch343ser files on linux systems + +```bash +git clone https://github.com/WCHSoftGroup/ch343ser_linux.git +pkgver=printf "%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)" +cd ch343ser_linux/driver/dkms +sudo install -Dm644 ch343.conf -t /etc/modules-load.d/ +sudo install -Dm644 Makefile -t /usr/src/ch343ser-${pkgver}/ +sudo install -Dm644 dkms.conf -t /usr/src/ch343ser-${pkgver}/ +sudo install -Dm644 ../ch343.c -t /usr/src/ch343ser-${pkgver}/ +sudo install -Dm644 ../ch343.h -t /usr/src/ch343ser-${pkgver}/ +# Arch & Manjaro Linux +sudo install -Dm644 ../../udev/99-ch34x-arch.rules -t /usr/lib/udev/rules.d/ +# Debian & Ubuntu Linux +sudo install -Dm644 ../../udev/99-ch34x.rules -t /usr/lib/udev/rules.d/ +``` + +## dkms compilation of ch343ser depends on dkms and linux kernel headers. + +- install ch343ser + +```bash +sudo dkms add -m ch343ser -v ${pkgver} +sudo dkms build -m ch343ser -v ${pkgver} +sudo dkms install -m ch343ser -v ${pkgver} +cat /var/lib/dkms/ch343ser/${pkgver}/build/make.log +sudo dkms status +``` + +- remove ch343ser + +```bash +sudo dkms remove -m ch343ser -v ${pkgver} +sudo dkms status +``` + +- autoinstall ch343ser + +```bash +sudo dkms autoinstall +``` + +- force build ch343ser +```bash +sudo dkms build -m ch343ser -v ${pkgver} -k $(uname -r) --force +sudo dkms install -m ch343ser -v ${pkgver} -k $(uname -r) --force +``` diff --git a/driver/dkms/ch343.conf b/driver/dkms/ch343.conf new file mode 100644 index 0000000..d5979fe --- /dev/null +++ b/driver/dkms/ch343.conf @@ -0,0 +1 @@ +ch343 diff --git a/driver/dkms/dkms.conf b/driver/dkms/dkms.conf new file mode 100644 index 0000000..1dc41de --- /dev/null +++ b/driver/dkms/dkms.conf @@ -0,0 +1,9 @@ +PACKAGE_NAME="ch343ser" +PACKAGE_VERSION="#MODULE_VERSION#" +AUTOINSTALL="yes" + +MAKE="make KVER=$kernelver" +CLEAN="make clean" + +BUILT_MODULE_NAME[0]="ch343" +DEST_MODULE_LOCATION[0]="/kernel/drivers/usb/serial"