3
1
I want to setup a virtual SocketCAN interface on boot. The following lines do what I want (manually):
ip link add dev vcan0 type vcan
ip link set up vcan0
(or)
ip link add dev vcan0 up type vcan
I have a method to bring up a physical USB CAN interface on hotplugging - I add the following lines to /etc/network/interfaces
:
allow-hotplug can0
iface can0 can static
bitrate 250000
up /sbin/ip link set $IFACE down
up /sbin/ip link set $IFACE up type can
I now want to bring up the vcan
interface on boot, too. So I auto-added the vcan
module and added those lines to /etc/network/interfaces
:
auto vcan0
iface vcan0 can static
bitrate 0 # NEEDED but not supported
pre-up /sbin/ip link add dev $IFACE type vcan
up /sbin/ip link set $IFACE up
But strangely this approach does not work: on boot or when I run ifup vcan0
I get eighter the following error:
Configuring interface vcan0=vcan0 (can)
/sbin/ip link add dev $IFACE type vcan
...
ip link set vcan0 type can bitrate 0
RTNETLINK answers: Operation not supported
Failed to bring up vcan0.
.. when I add the line bitrate <somevalue>
or I get
Configuring interface vcan0=vcan0 (can)
Missing required variable: bitrate
Missing required configuration variables for interface vcan0/can.
Failed to bring up vcan0.
.. when I omit the bitrate setting.
So it looks like I have to set bitrate
and must not set it - at the same time.
What am I doing wrong here?
p.s. of course I could simply run the ip link add ..
on startup but I'd like to use the same approach for both interfaces.