Have custom IMX6ULL based device with two CAN MCP2551 driven interfaces.
It works well:
root@OpenWrt:/# dmesg | grep can [ 0.240380] i2c i2c-1: can't use DMA, using PIO instead. [ 9.197828] jffs2_scan_eraseblock(): End of filesystem marker found at 0x10000 [ 56.468563] can: controller area network core (rev 20170425 abi 9) [ 56.476122] can: broadcast manager protocol (rev 20170425 t) [ 56.486172] can: raw protocol (rev 20170425) [ 56.491659] flexcan 2090000.flexcan: 2090000.flexcan supply xceiver not found, using dummy regulator [ 56.496660] flexcan 2090000.flexcan: device registered (reg_base=90b3c000, irq=22) [ 56.600712] flexcan 2094000.flexcan: 2094000.flexcan supply xceiver not found, using dummy regulator [ 56.604591] flexcan 2094000.flexcan: device registered (reg_base=90b44000, irq=23) [ 56.791607] vcan: Virtual CAN interface driver
But I have to execute following commands manually to enable CAN interfaces:
# ip link set can0 down # ip link set can0 up type can bitrate 500000 # ip link set can1 down # ip link set can1 up type can bitrate 500000
root@OpenWrt:/# dmesg | grep can ... [ 1067.275430] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready [ 1074.011520] IPv6: ADDRCONF(NETDEV_CHANGE): can1: link becomes ready
So I am wondering about proper way to handling same in boot scripts. Tried to add following in
case "$board" in flexcan_ethernet) ip link set can0 down ip link set can0 up type can bitrate 500000 ip link set can1 down ip link set can1 up type can bitrate 500000 ;; esac
but it throws me errors:
[ 0.685683] fec 2188000.ethernet (unnamed net_device) (uninitialized): Invalid MAC address: 00:00:00:00:00:00 Cannot find device "can0" Cannot find device "can0" Cannot find device "can1" Cannot find device "can1"
probably because this script executes before getting can controllers initialized.
Same when I try to place it in separate
How to deal with CAN bus interfaces properly in OpenWrt? Thank you.