Jetson 安装 peak-linux-driver-8.15.2
DeepSeek:
Jetson (R35.3.1, Ubuntu 20.04 aarch64) 上编译安装 peak-linux-driver-8.15.2 完整指南
本文档适用于 Jetson 平台(如 Xavier NX、AGX Orin 等)运行 Ubuntu 20.04 LTS (aarch64),内核版本 5.10.104-tegra,需要为 USBCANFD 设备(PEAK-System PCAN-USB FD)安装官方驱动,以支持 SocketCAN(can0 网络接口)及 CAN FD 功能。
📋 前置条件
确保设备已连接并供电。
具有 sudo 权限的用户。
网络连接正常(需下载源码包,约 2~3 GB)。
📦 第一步:系统准备与时间同步
1.1 检查初始状态
lsusb | grep -i peak
预期输出:应显示类似 ID 0c72:0012 PEAK System 的设备。
sudo dmesg | grep -i "pcan|peak"
预期输出:可能显示 peak_usb 驱动的错误(如 -75)或没有输出。
ip link show can0
预期输出:Device "can0" does not exist,说明驱动未成功加载。
1.2 校正系统时间
系统时间错误会导致 HTTPS 证书验证失败,无法使用 apt。
手动设置为接近当前时间(例如 2026-05-15 09:45:00)
sudo date -s "2026-05-15 09:45:00"
预期输出:无错误,date 命令显示正确时间。
安装 NTP 服务并同步
sudo apt update
sudo apt install ntp -y
sudo systemctl start ntp
sudo systemctl enable ntp
sudo systemctl restart ntp
预期输出:服务启动正常,无报错。
1.3 修复 APT 源(可选)
若 apt update 出现证书或 GPG 错误,可临时使用 HTTP 并更新密钥:
sudo sed -i 's/https:/http:/g' /etc/apt/sources.list
sudo apt update
时间正确后可改回 https
sudo sed -i 's/http:/https:/g' /etc/apt/sources.list
🔧 第二步:屏蔽冲突的内核驱动
Ubuntu 20.04 内核自带的 peak_usb 驱动与新版 PCAN-USB FD 硬件不兼容,需禁用。
sudo modprobe -r peak_usb
echo "blacklist peak_usb" | sudo tee /etc/modprobe.d/blacklist-peak_usb.conf
预期输出:无错误,/etc/modprobe.d/blacklist-peak_usb.conf 文件被创建。
📚 第三步:安装编译依赖
sudo apt update
sudo apt install build-essential dkms libpopt-dev -y
预期输出:所有依赖包成功安装。
🧠 第四步:获取正确的内核头文件
Jetson 平台的内核头文件不在标准 Ubuntu 源中,需从 NVIDIA L4T BSP 包中提取。
4.1 确定 L4T 版本
cat /etc/nv_tegra_release
预期输出:类似 # R35 (release), REVISION: 3.1, ...,记下版本号 R35.3.1。
4.2 下载匹配的内核源码包
前往 NVIDIA L4T Archive 或直接使用已知链接:
cd ~/Downloads
wget https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v3.1/release/jetson_linux_r35.3.1_aarch64.tbz2
预期输出:下载完成,文件大小约 2.5 GB。
4.3 解压并提取内核头文件
tar -xjf jetson_linux_r35.3.1_aarch64.tbz2
cd Linux_for_Tegra/kernel
预期输出:解压后出现 kernel/ 目录,内含 nvidia-l4t-kernel-headers_*.deb 等文件。
sudo dpkg -i nvidia-l4t-kernel-headers_5.10.104-tegra-35.3.1-20230319081403_arm64.deb
预期输出:Setting up nvidia-l4t-kernel-headers ...,无报错。
4.4 验证头文件位置
ls /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel-5.10/include/generated/autoconf.h
预期输出:显示文件路径,确认存在。
ls -l /lib/modules/5.10.104-tegra/build
预期输出:符号链接指向 /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel-5.10。
若链接不正确,手动修正:
sudo ln -sf /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel-5.10 /lib/modules/5.10.104-tegra/build
🔨 第五步:编译 peak-linux-driver
https://pan.baidu.com/s/1wtoFbl1_Ln6pIZW4LVX23g&pwd=sxpc
cd ~/Downloads
tar -xzf peak-linux-driver-8.15.2.tar.gz
cd peak-linux-driver-8.15.2
预期输出:解压成功,进入驱动源码目录。
make clean
预期输出:清理旧文件,无错误。
make KERNEL_LOCATION=/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel-5.10
NET=NETDEV_SUPPORT NO_ESCCECK=1
预期输出:编译过程持续数分钟,最终生成 driver/pcan.ko 驱动模块。
参数说明:
NET=NETDEV_SUPPORT:启用 SocketCAN 网络接口支持。
NO_ESCCECK=1:禁用 ESD 检查,解决 -75 通信错误。
ls driver/pcan.ko
预期输出:显示 pcan.ko 文件存在,说明编译成功。
⚙️ 第六步:安装驱动并加载
sudo make install
预期输出:将 pcan.ko 复制到 /lib/modules/$(uname -r)/kernel/drivers/net/can/,并运行 depmod。
sudo modprobe pcan
预期输出:无错误,驱动加载成功。
sudo dmesg | tail -20 | grep pcan
预期输出:类似以下信息,显示固件版本和 can0 注册:
[ 2928.104585] pcan 1-3.1:1.0: PCAN-USB FD (MCU01h PCB02h) fw v3.2.0 bl v2.1.0
[ 2928.106963] pcan: registered CAN-FD netdevice can0 for usbfd hw (503,32)
🌐 第七步:配置并测试 SocketCAN
7.1 查看 CAN 接口
ip link show can0
预期输出:显示 can0:
7.2 设置波特率并启用
sudo ip link set can0 up type can bitrate 500000
预期输出:无错误,ip link show can0 状态变为 UP。
7.3 监听 CAN 报文
candump can0
预期输出:如果有其他 CAN 节点发送数据,会实时显示;否则等待,无错误。
7.4 发送测试报文(另开终端)
cansend can0 123#1122334455667788
预期输出:candump 终端应收到 can0 123 [8] 11 22 33 44 55 66 77 88。
🧹 清理与持久化
8.1 开机自动加载驱动
echo "pcan" | sudo tee -a /etc/modules
8.2 保留下载的源码(可选)
驱动源码和 L4T 包可保留在 ~/Downloads 中,以备重装系统后使用。
❗ 常见问题与解决
| 问题现象 | 可能原因 | 解决方法 |
| make 找不到 autoconf.h | 内核头文件未正确安装或路径错误 | 检查 /lib/modules/$(uname -r)/build 符号链接;执行 sudo make prepare 在头文件目录 |
| modprobe pcan 失败,dmesg 显示 -75 | ESD 检查失败 | 编译时添加 NO_ESCCECK=1;检查 USB 连接线质量 |
| ip link set can0 up 报 bitrate not supported | 波特率配置错误 | 使用 sudo ip link set can0 up type can bitrate 500000 dbitrate 2000000 fd on 启用 FD |
| 设备插拔后 can0 消失 | udev 未自动重新加载 | 重新插拔,或执行 sudo modprobe -r pcan && sudo modprobe pcan |
| apt update 证书错误 | 系统时间错误 | 按第一步校正时间;或临时改用 HTTP 源 |
📝 总结
完成以上步骤后,Jetson 平台上的 Ubuntu 20.04 即可完美支持 PEAK USBCANFD 设备,获得 SocketCAN 接口 can0,可以使用标准的 ip、candump、cansend 等工具进行 CAN/CAN FD 通信。编译过程中最关键的一步是获取正确版本的内核头文件,本文通过下载 NVIDIA 官方 BSP 包并安装对应的 deb 解决了该问题。
DeepSeek:
既然现在设备已经可以使用,说明当前环境没有冲突(可能 peak_usb 没有加载)。但为了避免重启后系统自动加载 peak_usb 而干扰 pcan,强烈建议执行这条 blacklist 命令,这样可以确保重启后只使用你手动编译的 pcan 驱动。
🔍 先检查一下当前是否有 peak_usb 加载
lsmod | grep peak_usb
如果没有输出,说明当前没加载;有输出则说明已加载,但可能与 pcan 共存(pcan 优先级更高?)不过安全起见,还是禁用为好。
✅ 执行 blacklist 命令
echo "blacklist peak_usb" | sudo tee /etc/modprobe.d/blacklist-peak_usb.conf
然后更新 initramfs 并重启验证(可选):
sudo update-initramfs -u
sudo reboot
重启后,插入设备,ip link show can0 应该仍然存在。
⚠️ 如果重启后 can0 消失
可能是 pcan 没有自动加载。可以设置开机自动加载:
echo "pcan" | sudo tee -a /etc/modules
并检查 /etc/modprobe.d/blacklist-peak_usb.conf 文件是否存在。
总之,执行 blacklist 是有必要的预防措施,不会影响当前已工作的配置。

浙公网安备 33010602011771号