Skip to content

Install KCAN Driver

Install KCAN Driver

1. Uninstall PCAN driver (skip if not installed)

cd peak-linux-driver-8.20.0
sudo modprobe -r pcan
sudo make uninstall
cd

2. Install KCAN dependencies

sudo apt update && sudo apt install -y build-essential g++ dkms wget unzip libpopt-dev linux-headers-$(uname -r)

3. Verify GCC version (must match kernel build version)

cat /boot/config-$(uname -r) | grep -i "gcc_version"

If output is CONFIG_GCC_VERSION=120300 (gcc-12 required), run:

sudo apt install -y gcc-12

4. Download KCAN SDK

wget https://gitee.com/ChengDu-KunHong/KH-UCANFD_Linux_SDK/releases/download/v1.2.2/KH-UCANFD_Linux_SDK.zip
unzip KH-UCANFD_Linux_SDK.zip

5. Build KCAN driver

cd KH-UCANFD_LinuxSDK-v1.2.2/
sudo sed -i 's/-ftrivial-auto-var-init=zero//g' /usr/src/linux-headers-$(uname -r)/Makefile
sudo chmod +x ./build.sh
./build.sh

6. Build into kernel

sudo mkdir -p /usr/src/kcan-8.20.0/

cat << 'EOF2' | sudo tee /usr/src/kcan-8.20.0/dkms.conf
PACKAGE_NAME="kunhong-linux-driver"
PACKAGE_VERSION="8.20.0"
CLEAN="make clean"
MAKE[0]="sed -i 's/-ftrivial-auto-var-init=zero//g' /usr/src/linux-headers-${kernelver}/Makefile 2>/dev/null || true; make DKMS_KERNEL_DIR=$kernel_source_dir MOD=MODVERSIONS PAR=NO_PARPORT_SUBSYSTEM USB=USB_SUPPORT PCI=PCI_SUPPORT PCIEC=PCIEC_SUPPORT ISA=ISA_SUPPORT DNG=NO_DONGLE_SUPPORT PCC=NO_PCCARD_SUPPORT NET=NETDEV_SUPPORT RT=NO_RT"
BUILT_MODULE_NAME[0]="kcan"
BUILT_MODULE_LOCATION[0]="."
DEST_MODULE_LOCATION[0]="/updates"
AUTOINSTALL="yes"
EOF2

7. Verify KCAN driver loading

sudo modprobe kcan
lsmod | grep kcan

KCAN Driver Verification

Re-plug CAN FD device, then verify interfaces:

ip link show

KCAN Driver Verification

8. Create kernel update with DKMS

sudo cp -r ~/KH-UCANFD_LinuxSDK-v1.2.2/driver/* /usr/src/kcan-8.20.0/
cat << 'EOF2' | sudo tee /usr/src/kcan-8.20.0/dkms.conf
PACKAGE_NAME="kunhong-linux-driver"
PACKAGE_VERSION="8.20.0"
CLEAN="make clean"
MAKE[0]="cd ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/source; sed -i 's/-ftrivial-auto-var-init=zero//g' /usr/src/linux-headers-${kernelver}/Makefile 2>/dev/null || true; make DKMS_KERNEL_DIR=${kernel_source_dir} MOD=MODVERSIONS PAR=NO_PARPORT_SUBSYSTEM USB=USB_SUPPORT PCI=PCI_SUPPORT PCIEC=PCIEC_SUPPORT ISA=ISA_SUPPORT DNG=NO_DONGLE_SUPPORT PCC=NO_PCCARD_SUPPORT NET=NETDEV_SUPPORT RT=NO_RT"
BUILT_MODULE_NAME[0]="kcan"
BUILT_MODULE_LOCATION[0]="."
DEST_MODULE_LOCATION[0]="/updates"
AUTOINSTALL="yes"
EOF2
sudo dkms add -m kcan -v 8.20.0
sudo dkms build -m kcan -v 8.20.0
sudo dkms install -m kcan -v 8.20.0
dkms status

9. Enable auto-load

echo "kcan" | sudo tee /etc/modules-load.d/kcan.conf
cat /etc/modules-load.d/kcan.conf

Expected output:

kcan

💡 If KCAN is not auto-loaded after reboot, run sudo modprobe kcan. If still not loaded, try sudo modprobe peak_usb.