Linux 上 CAN 总线接口以网络设备形式呈现,默认系统启动时 CAN 总线处于 DOWN 模式,需要手动使用 ip 命令配置并使能 UP。但也可以使用系统 network 的 interfaces 式文件来实现 CAN 总线自动化配置和激活。

can0 总线设备为例,如果设备为非可插拔(固定)总线,则可以新建 /etc/network/interfaces.d/can 文件,写入如下内容(假设使用 500k 波特率):

1
2
3
4
5
auto can0
iface can0 inet manual
        pre-up /sbin/ip link set $IFACE type can bitrate 500000 restart-ms 10
        up /sbin/ip link set $IFACE up
        down /sbin/ip link set $IFACE down

重启,然后使用 ip -details link show can0 来查看总线是否激活。

对于可插拔总线,比如 USB 转换的 CAN 总线,需要修改 auto can0allow-hotplug can0

1
2
3
4
5
allow-hotplug can0
iface can0 inet manual
        pre-up /sbin/ip link set $IFACE type can bitrate 500000 restart-ms 10
        up /sbin/ip link set $IFACE up
        down /sbin/ip link set $IFACE down

这样当 CAN 设备插入时,系统会自动配置并激活。