Skip to content

Kvaser Linux 驱动安装

大部分现代 Linux 发行版已经随内核提供 Kvaser SocketCAN 驱动,模块名为 kvaser_usb。使用 Kvaser USB 设备前,建议先确认当前系统是否已经支持:如果插入设备后能看到 can0can3,通常无需安装独立驱动;只有系统没有 kvaser_usb 模块、模块无法加载,或插入设备后没有创建 CAN 网络接口时,才需要安装独立 SocketCAN 驱动。

先确认系统是否已有驱动

先检查系统是否带有 kvaser_usb 模块,并尝试加载:

bash
modinfo kvaser_usb
sudo modprobe kvaser_usb

如果 modinfo 能输出模块信息,且 modprobe 没有报错,说明当前系统已经具备 Kvaser USB SocketCAN 驱动。

插入 Kvaser USB 设备后,再检查设备枚举、内核日志和 CAN 网络接口:

bash
lsusb -d 0bfd:
dmesg | grep -Ei 'kvaser|can|usb'
ip link show type can

如果能看到 can0can3,说明当前系统已经实际支持 Kvaser USBcan Pro 4xHS,可以直接按 SocketCAN 方式使用,无需继续安装独立驱动。

确认 Kvaser USBcan Pro 4xHS 是否被当前系统支持

可以先看当前内核版本:

bash
uname -r

Linux 5.12+ 理论上支持 Kvaser USBcan Pro 4xHS;Linux 5.10、5.4、4.19 默认不认为支持(除非 BSP 已经 backport 相关驱动)。

再检查内核配置中是否启用了 Kvaser USB 驱动:

bash
grep CONFIG_CAN_KVASER_USB /boot/config-$(uname -r)
zcat /proc/config.gz | grep CONFIG_CAN_KVASER_USB

如果配置结果为 CONFIG_CAN_KVASER_USB=m,表示驱动以内核模块形式提供;如果为 CONFIG_CAN_KVASER_USB=y,表示驱动已编入内核。最终仍以插入设备后是否出现 can0can3 为准。

原生驱动不可用时安装独立 SocketCAN 驱动

当系统没有 kvaser_usb 模块、模块无法加载,或插入设备后没有创建 CAN 网络接口时,则需要安装 Kvaser 独立 SocketCAN 驱动。

Kvaser SocketCAN 驱动下载: https://kvaser.com/single-download/?download_id=1011691570

注意

SocketCAN 驱动使用 Linux 通用 SocketCAN API,不能与 Kvaser Linux Drivers and SDK(LinuxCAN/CANlib 专有驱动)混用。如果应用程序依赖 Kvaser CANlib API,请安装 Kvaser Linux Drivers and SDK。

Kvaser SocketCAN 驱动要求:

  • Linux 内核 4.9 或更高版本;
  • 与当前运行内核版本匹配的内核头文件;
  • makegcc 编译工具。

Ubuntu/Debian 系统可执行:

bash
sudo apt update
sudo apt install build-essential linux-headers-$(uname -r) ethtool

从上述官方页面下载驱动压缩包,然后解压并进入源码目录。压缩包名称中的版本号以实际下载版本为准。

bash
tar -xzf socketcan_kvaser_drivers_X_XX_XXX.tar.gz
cd socketcan_kvaser_drivers

安装或升级驱动前,先断开所有 Kvaser USB 设备。安装时,在驱动源码目录中执行:

bash
sudo make uninstall
make
sudo make install

安装后验证

连接 USB 设备后,检查系统是否创建 CAN 网络接口:

bash
ip link show type can

查看驱动和设备信息:

bash
ip -details link show can0

看到 can0can3 后,才算当前系统已经实际支持并识别 Kvaser USBcan Pro 4xHS。

Kvaser SocketCAN 驱动信息

雪球电子 · 专注通讯