Set can0 up at startup

Hi all,

I recently tried to add canbus support to my boot2qt. So via my custom meta-layer, I have added canutils and libsocketcan without any problem.

Then within my distro, I added /etc/systemd/network/80-can.network to start canbus at startup

[Match]
Name=can0

[CAN]
BitRate=500000

Now when I boot my system, the result of dmesg | grep can is always like this

# dmesg | grep can
[    0.038658] dma_flexcan0 : no governor for states
[    0.038671] dma_flexcan1 : no governor for states
[    0.038684] dma_flexcan2 : no governor for states
[    5.031842] ahci-imx 5f020000.sata: can't get per_clk0 clock.
[    8.902208] flexcan 5a8d0000.can: 5a8d0000.can supply xceiver not found, using dummy regulator
[    8.919258] flexcan 5a8d0000.can: device registered (reg_base=ffff000019d70000, irq=63)
[    8.937963] flexcan 5a8e0000.can: 5a8e0000.can supply xceiver not found, using dummy regulator
[    8.962485] flexcan 5a8e0000.can: device registered (reg_base=ffff000019db0000, irq=64)
[    9.855369] IPv6: ADDRCONF(NETDEV_UP): can0: link is not ready
[    9.861456] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready

Which seems right.

But when I am running ifconfig or ip link, I don’t always have the same results
When it works, I have this result

# ifconfig
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          UP RUNNING NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:63
# ip link 
3: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
    link/can

But sometimes when booting my device, dmesg seems correct as always but ifconfig or ip link indicate that can0 is DOWN

# dmesg | grep can0
[    0.038651] dma_flexcan0 : no governor for states
[    9.794019] IPv6: ADDRCONF(NETDEV_UP): can0: link is not ready
[    9.800267] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready

# ifconfig

# ip link
3: can0: <NOARP,ECHO> mtu 16 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 10
    link/can

Even if I redo

# ip link set can0 up

The can interface stays DOWN
So what could be the problem? And what could I do to resolve this?

(Using Apalis-imx8qp V1.0B and Ixora carrier board V1.1B, Boot2Qt with Qt 5.15.5 built based on this manifest v5.15.5-lts.xml - yocto/boot2qt-manifest.git - Unnamed repository; edit this file 'description' to name the repository.)

Hello @Romain.Donze

Thank you for your message. For us to be able to better analyze the error, will it be possible for you to test this with our Reference multimedia image, instead of Boot2Qt?

And if you still face the same issue, then could you please share with us the dmesg log?

BR, Janani

Hi @saijanani.tx ,

In fact after further investigation, it looks like the canbus is being pull back down by a LEVEL ERROR if theres nothing on the bus.

So after physically bridging can0 and can1, and adding two 120ohms resistors to the bus to simulate a normal situation I was not able to reproduce this issue

1 Like

Hello @Romain.Donze ,

Thank you for the feedback. So, then I assume this thread is solved? or do you still require support elsewhere?

BR, Janani