1

I'm doing a project that will connect multiple subsystems (sensors, controller, etc) via CAN bus. I'm using SocketCAN and have settings as below:

root@ngtianxun-desktop:~# ip -details -statistic link show can0
5: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
    link/can  promiscuity 0 minmtu 0 maxmtu 0
    can state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 10
          bitrate 500000 sample-point 0.600
          tq 100 prop-seg 3 phase-seg1 8 phase-seg2 8 sjw 4
          RDC_CAN: tseg1 5..16 tseg2 3..8 sjw 1..4 brp 2..131072 brp-inc 2
          clock 20000000
          re-started bus-errors arbit-lost error-warn error-pass bus-off
          0          0          337        0          0          0         numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
    RX: bytes  packets  errors  dropped overrun mcast
    27841616   3498429  0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    9504120    2357958  0       0       0       0
root@ngtianxun-desktop:~#

Python scripts have been written to constantly monitor the subsystems and write to the subsystems upon request from the python end.

My question here is - Why am I seeing arbit-lost incrementing by 1 every time at an interval of about ~5 mins once my python program runs? Does it indicate any serious issue? Does it mean the data frame is lost? Is there any concern if I just let it be like this? Anyone who could help to answer and explain would be appreciated!

Worth noting: The programs started for about ~3 days. Only arbit-lost is observed, there's no re-started, bus-errors, error-warn, error-pass, and bus-off. And there are no errors, dropped, overrun, mcast, carrier, and collsns errors in TX/RX fields.

T08
  • 73
  • 1
  • 8

1 Answers1

2

Usually you can safely ignore arbitration lost errors. It just means one message lost an arbitration in favor of another. Thankfully CAN has been made robust enough so that the "arbitration loser" will be sent again.

I recommend the following reads:

Tranbi
  • 11,407
  • 6
  • 16
  • 33
  • Thanks for your answer. So it is just a reporting mechanism saying that a node has lost the fight during the arbitration process. It will be resent again in the next available slot until it wins the arbitration. – T08 Aug 02 '21 at 09:10
  • That's exactly how I understand it. – Tranbi Aug 02 '21 at 09:28