2

When creating a bridge between can and virtual can, I am getting this error:

netlink error -95 (Operation not supported)

Steps that I followed:

  1. Created a virtual can:
    sudo modprobe -n --first-time vcan

  2. Load it
    sudo modprobe vcan

  3. add it to type vcan
    sudo ip link add dev vcan0 type vcan

  4. change the status to up
    sudo ip link set vcan0 up

  5. Now when creating bridge between can0 and vcan0 using can gateway using below commands, I am getting netlink error:

sudo cangw -A -s can0 -d vcan0 -e
sudo cangw -A -s vcan0 -d can0 -e

I also checked if can modules are enabled in kernel or not:

$ grep CAN /boot/config-$(uname -r)
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_NET_EMATCH_CANID=m
CONFIG_CAN=m
CONFIG_CAN_RAW=m
CONFIG_CAN_BCM=m
CONFIG_CAN_GW=m
CONFIG_CAN_J1939=m
CONFIG_CAN_ISOTP=m
# CAN Device Drivers
CONFIG_CAN_VCAN=m
CONFIG_CAN_VXCAN=m
CONFIG_CAN_SLCAN=m
CONFIG_CAN_DEV=m
CONFIG_CAN_CALC_BITTIMING=y
CONFIG_CAN_JANZ_ICAN3=m
CONFIG_CAN_KVASER_PCIEFD=m
CONFIG_CAN_C_CAN=m
CONFIG_CAN_C_CAN_PLATFORM=m
CONFIG_CAN_C_CAN_PCI=m
CONFIG_CAN_CC770=m
CONFIG_CAN_CC770_ISA=m
CONFIG_CAN_CC770_PLATFORM=m
CONFIG_CAN_IFI_CANFD=m
CONFIG_CAN_M_CAN=m
CONFIG_CAN_M_CAN_PCI=m
CONFIG_CAN_M_CAN_PLATFORM=m
CONFIG_CAN_M_CAN_TCAN4X5X=m
CONFIG_CAN_PEAK_PCIEFD=m
CONFIG_CAN_SJA1000=m
CONFIG_CAN_EMS_PCI=m
CONFIG_CAN_EMS_PCMCIA=m
CONFIG_CAN_F81601=m
CONFIG_CAN_KVASER_PCI=m
CONFIG_CAN_PEAK_PCI=m
CONFIG_CAN_PEAK_PCIEC=y
CONFIG_CAN_PEAK_PCMCIA=m
CONFIG_CAN_PLX_PCI=m
CONFIG_CAN_SJA1000_ISA=m
CONFIG_CAN_SJA1000_PLATFORM=m
CONFIG_CAN_SOFTING=m
CONFIG_CAN_SOFTING_CS=m
# CAN SPI interfaces
CONFIG_CAN_HI311X=m
CONFIG_CAN_MCP251X=m
CONFIG_CAN_MCP251XFD=m
# CONFIG_CAN_MCP251XFD_SANITY is not set
# end of CAN SPI interfaces
# CAN USB interfaces
CONFIG_CAN_8DEV_USB=m
CONFIG_CAN_EMS_USB=m
CONFIG_CAN_ESD_USB2=m
CONFIG_CAN_ETAS_ES58X=m
CONFIG_CAN_F81604=m
CONFIG_CAN_GS_USB=m
CONFIG_CAN_KVASER_USB=m
CONFIG_CAN_MCBA_USB=m
CONFIG_CAN_PEAK_USB=m
CONFIG_CAN_UCAN=m
# end of CAN USB interfaces
# CONFIG_CAN_DEBUG_DEVICES is not set
# end of CAN Device Drivers
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_PINCTRL_CANNONLAKE=m
CONFIG_SND_SOC_SOF_CANNONLAKE=m
CONFIG_PHY_CAN_TRANSCEIVER=m
# CONFIG_TEST_SCANF is not set

Ubuntu version:

$ lsb_release -a 
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04
Codename:       focal

I also cross checked if vcan0 is listing by using ip link show command:

$ ip link show
4: vcan0: <NOARP,UP,LOWER_UP> mtu 72 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/can 
6: elmcan: <NOARP,UP,LOWER_UP> mtu 72 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/can 
7: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
    link/can 

One thing which I noticed here is state is coming as unknown. But when sending any message using cansend command to vcan0, I can see the command is getting captured in candump.

$ cansend vcan0 123#DEADBEEF

$ candump vcan0 vcan0 123 [4] DE AD BE EF

At this point, I am not sure what is missing here. Any suggestion/help would be appreciated.

0 Answers0