Write: no free space for socket-can / linux-can buffer

I am running a program with two CAN channels (using TowerTech CAN Cape TT3201).

Two channels: can0 (500k) and can1 (125k). The can0 channels work fine, but can1 starts recording: There is no error in the buffer space.

I am using ValueCAN3 / VehicleSpy to check messages.

This is before I run the program. can0 and can1 both seem to forward, but only can0 appears in VehicleSpy.

root@cantool:~# cansend can0 100#00 
root@cantool:~# cansend can1 100#20

enter image description here

This is after I try to run the program.

root@cantool:~# cansend can1 100#20 
write: No buffer space available 
root@cantool:~# cansend can0 111#10

enter image description here

While my program is running: I get this error to send all messages to can1

2016-11-02 15:36:03,052 - can.socketcan.native.tx - WARNING - Failed to send: 0.000000    12f83018    010    1    00 
2016-11-02 15:36:03,131 - can.socketcan.native.tx - WARNING - Failed to send: 0.000000    0af81118    010    6    00 00 00 00 00 00 
2016-11-02 15:36:03,148 - can.socketcan.native.tx - WARNING - Failed to send: 0.000000    12f81018    010    6    00 00 00 00 00 00 
2016-11-02 15:36:03,174 - can.socketcan.native.tx - WARNING - Failed to send: 0.000000    0af87018    010    3    00 00 00 
2016-11-02 15:36:03,220 - can.socketcan.native.tx - WARNING - Failed to send: 0.000000    12f89018    010    4    00 00 00 00 
2016-11-02 15:36:03,352 - can.socketcan.native.tx - WARNING - Failed to send: 0.000000    12f83018    010    1    00 

However, sometimes the whole program works fine (if the module is restarted or some random instances).

How to fix it?

root@cantool:~# uname -r 
4.1.15-ti-rt-r43

after some digging i found this

 root@cantool:-#ip -details link show can0
 4:can0: <NOARP,UP,LOWER_UP, ECHO> mtu 16 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 10
      link/can promiscuity 0
      can state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 100
      bitrate 500000 sample-point 0.875
      tq 125 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
      c_can: tseg1 2..16 tseg2 1..8 sjw 1..4 brp 1..1024 brp-inc 1
      clock 24000000
 root@cantool:-#ip -details link show can1
 5: can1: <NOARP,UP,LOWER_UP, ECHO> mtu 16 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 10
      link/can promiscuity 0
      can state STOPPED restart-ms 100
      bitrate 125000 sample-point 0.875
      tq 500 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
      c_can: tseg1 2..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1
      clock 8000000

It turns out that can1 is for some reason STOPPED

, :

ip link set can1 type can restart 
RNETLINK answers: Invalid argument
+4
2

can0 sudo ifconfig can0 up :

sudo ifconfig can0 txqueuelen 1000

.

... ( ).

, SocketCAN, , , .

+2

ifconfig can1 up, ...

-1

Source: https://habr.com/ru/post/1659830/


All Articles