SUNCAN CAN FD in Action: Practical Evaluation and Performance in Linux

 

  1. Introduction
  While the industry typically defines CAN FD as supporting data rates up to 8 Mbps, in practice, the actual throughput is often lower. This is due to delays introduced by hardware and software design, as well as the arbitration phase, which still operates at the lower speed defined by CAN 2.0. As a result, real-world performance rarely achieves the theoretical maximum.
  This article presents a practical evaluation of SUNCAN's performance by measuring its actual throughput on Linux, we will discuss Windows in the next article.
 
  1. In action - Linux
  The Linux kernel provides a Socket API for CAN, and nearly all well-known CAN products on the market today support SocketCAN, which has become the mainstream approach for CAN applications on Linux. Naturally, SUNCAN is no exception. In this article, we will use SocketCAN to conduct a hands-on performance test of SUNCAN.
  • Platform
 
OS Ubuntu 22.04 Kernel 6.8
CPU Intel 13th I7-13700
Chipset H770
Driver V2.1.1.0
Model CAN-E2104SI
Test Tool can-utils https://github.com/linux-can/can-utils
 
 














can-utils is a collection of command-line tools for working with SocketCAN — the Linux kernel's built-in CAN subsystem. Two commands are well-suited for verifying CAN FD performance: cangen and cansequence.
cangen can send 64-byte data frames back-to-back without gaps. This allows testing of the actual maximum bit rate for transmission and reception.
On the other hand, we need a monitoring tool to track the bus loading. The canbusload command can fulfill this task

  • cangen option
The focus of this test is on continuously transmitting 64-byte accelerated FD frames without interruption. We will set the options indicated in the figure below:
 
The complete syntax is
$can{n} –g 0 –f –b –E –D i –L 64
 
 
-g 0 -f -b -E -D i -L 64
no gap FD frame BRS on ESI on Payload Increment 64bytes
 
 
  • cansequence options
 
We will set the options indicated in the figure below:
 
 
TX:
$cansequence can{n} –e –v –f –s -b
 
 
RX:
$cansequence can{n} –e –v -r –f –s -b
 
 
-e -f -s -b -R
Ext. frame FD frame No CAN2.0 frame BRS on receiver
 
  • canbusload options
 
We will configure the fastest setting with an arbitration bitrate of 1Mbps and a data bitrate of 8Mbps. Due to the hardware configuration involves two CAN channels communicating with each other, We need to monitor two buses.
 
$canbusload can{n}@1000000[8000000] can{n}@1000000[8000000]
 
 
  • SUNCAN Configuration:
 
 
  • Wiring
 
  1. Practical results

The data highlights two key points: SUNCAN achieves a maximum throughput of 5.3 Mbps and a maximum receive rate of 16,875 frames per second on SocketCAN.
 

News & Event

SUNCAN CAN FD in Action: Practical Evaluation and Performance in Linux

 

  1. Introduction
  While the industry typically defines CAN FD as supporting data rates up to 8 Mbps, in practice, the actual throughput is often lower. This is due to delays introduced by hardware and software design, as well as the arbitration phase, which still operates at the lower speed defined by CAN 2.0. As a result, real-world performance rarely achieves the theoretical maximum.
  This article presents a practical evaluation of SUNCAN's performance by measuring its actual throughput on Linux, we will discuss Windows in the next article.
 
  1. In action - Linux
  The Linux kernel provides a Socket API for CAN, and nearly all well-known CAN products on the market today support SocketCAN, which has become the mainstream approach for CAN applications on Linux. Naturally, SUNCAN is no exception. In this article, we will use SocketCAN to conduct a hands-on performance test of SUNCAN.
  • Platform
 
OS Ubuntu 22.04 Kernel 6.8
CPU Intel 13th I7-13700
Chipset H770
Driver V2.1.1.0
Model CAN-E2104SI
Test Tool can-utils https://github.com/linux-can/can-utils
 
 














can-utils is a collection of command-line tools for working with SocketCAN — the Linux kernel's built-in CAN subsystem. Two commands are well-suited for verifying CAN FD performance: cangen and cansequence.
cangen can send 64-byte data frames back-to-back without gaps. This allows testing of the actual maximum bit rate for transmission and reception.
On the other hand, we need a monitoring tool to track the bus loading. The canbusload command can fulfill this task

  • cangen option
The focus of this test is on continuously transmitting 64-byte accelerated FD frames without interruption. We will set the options indicated in the figure below:
 
The complete syntax is
$can{n} –g 0 –f –b –E –D i –L 64
 
 
-g 0 -f -b -E -D i -L 64
no gap FD frame BRS on ESI on Payload Increment 64bytes
 
 
  • cansequence options
 
We will set the options indicated in the figure below:
 
 
TX:
$cansequence can{n} –e –v –f –s -b
 
 
RX:
$cansequence can{n} –e –v -r –f –s -b
 
 
-e -f -s -b -R
Ext. frame FD frame No CAN2.0 frame BRS on receiver
 
  • canbusload options
 
We will configure the fastest setting with an arbitration bitrate of 1Mbps and a data bitrate of 8Mbps. Due to the hardware configuration involves two CAN channels communicating with each other, We need to monitor two buses.
 
$canbusload can{n}@1000000[8000000] can{n}@1000000[8000000]
 
 
  • SUNCAN Configuration:
 
 
  • Wiring
 
  1. Practical results

The data highlights two key points: SUNCAN achieves a maximum throughput of 5.3 Mbps and a maximum receive rate of 16,875 frames per second on SocketCAN.
 

News & Event

SUNCAN CAN FD in Action: Practical Evaluation and Performance in Linux

 

  1. Introduction
  While the industry typically defines CAN FD as supporting data rates up to 8 Mbps, in practice, the actual throughput is often lower. This is due to delays introduced by hardware and software design, as well as the arbitration phase, which still operates at the lower speed defined by CAN 2.0. As a result, real-world performance rarely achieves the theoretical maximum.
  This article presents a practical evaluation of SUNCAN's performance by measuring its actual throughput on Linux, we will discuss Windows in the next article.
 
  1. In action - Linux
  The Linux kernel provides a Socket API for CAN, and nearly all well-known CAN products on the market today support SocketCAN, which has become the mainstream approach for CAN applications on Linux. Naturally, SUNCAN is no exception. In this article, we will use SocketCAN to conduct a hands-on performance test of SUNCAN.
  • Platform
 
OS Ubuntu 22.04 Kernel 6.8
CPU Intel 13th I7-13700
Chipset H770
Driver V2.1.1.0
Model CAN-E2104SI
Test Tool can-utils https://github.com/linux-can/can-utils
 
 














can-utils is a collection of command-line tools for working with SocketCAN — the Linux kernel's built-in CAN subsystem. Two commands are well-suited for verifying CAN FD performance: cangen and cansequence.
cangen can send 64-byte data frames back-to-back without gaps. This allows testing of the actual maximum bit rate for transmission and reception.
On the other hand, we need a monitoring tool to track the bus loading. The canbusload command can fulfill this task

  • cangen option
The focus of this test is on continuously transmitting 64-byte accelerated FD frames without interruption. We will set the options indicated in the figure below:
 
The complete syntax is
$can{n} –g 0 –f –b –E –D i –L 64
 
 
-g 0 -f -b -E -D i -L 64
no gap FD frame BRS on ESI on Payload Increment 64bytes
 
 
  • cansequence options
 
We will set the options indicated in the figure below:
 
 
TX:
$cansequence can{n} –e –v –f –s -b
 
 
RX:
$cansequence can{n} –e –v -r –f –s -b
 
 
-e -f -s -b -R
Ext. frame FD frame No CAN2.0 frame BRS on receiver
 
  • canbusload options
 
We will configure the fastest setting with an arbitration bitrate of 1Mbps and a data bitrate of 8Mbps. Due to the hardware configuration involves two CAN channels communicating with each other, We need to monitor two buses.
 
$canbusload can{n}@1000000[8000000] can{n}@1000000[8000000]
 
 
  • SUNCAN Configuration:
 
 
  • Wiring
 
  1. Practical results

The data highlights two key points: SUNCAN achieves a maximum throughput of 5.3 Mbps and a maximum receive rate of 16,875 frames per second on SocketCAN.
 

News & Event

SUNCAN CAN FD in Action: Practical Evaluation and Performance in Linux

 

  1. Introduction
  While the industry typically defines CAN FD as supporting data rates up to 8 Mbps, in practice, the actual throughput is often lower. This is due to delays introduced by hardware and software design, as well as the arbitration phase, which still operates at the lower speed defined by CAN 2.0. As a result, real-world performance rarely achieves the theoretical maximum.
  This article presents a practical evaluation of SUNCAN's performance by measuring its actual throughput on Linux, we will discuss Windows in the next article.
 
  1. In action - Linux
  The Linux kernel provides a Socket API for CAN, and nearly all well-known CAN products on the market today support SocketCAN, which has become the mainstream approach for CAN applications on Linux. Naturally, SUNCAN is no exception. In this article, we will use SocketCAN to conduct a hands-on performance test of SUNCAN.
  • Platform
 
OS Ubuntu 22.04 Kernel 6.8
CPU Intel 13th I7-13700
Chipset H770
Driver V2.1.1.0
Model CAN-E2104SI
Test Tool can-utils https://github.com/linux-can/can-utils
 
 














can-utils is a collection of command-line tools for working with SocketCAN — the Linux kernel's built-in CAN subsystem. Two commands are well-suited for verifying CAN FD performance: cangen and cansequence.
cangen can send 64-byte data frames back-to-back without gaps. This allows testing of the actual maximum bit rate for transmission and reception.
On the other hand, we need a monitoring tool to track the bus loading. The canbusload command can fulfill this task

  • cangen option
The focus of this test is on continuously transmitting 64-byte accelerated FD frames without interruption. We will set the options indicated in the figure below:
 
The complete syntax is
$can{n} –g 0 –f –b –E –D i –L 64
 
 
-g 0 -f -b -E -D i -L 64
no gap FD frame BRS on ESI on Payload Increment 64bytes
 
 
  • cansequence options
 
We will set the options indicated in the figure below:
 
 
TX:
$cansequence can{n} –e –v –f –s -b
 
 
RX:
$cansequence can{n} –e –v -r –f –s -b
 
 
-e -f -s -b -R
Ext. frame FD frame No CAN2.0 frame BRS on receiver
 
  • canbusload options
 
We will configure the fastest setting with an arbitration bitrate of 1Mbps and a data bitrate of 8Mbps. Due to the hardware configuration involves two CAN channels communicating with each other, We need to monitor two buses.
 
$canbusload can{n}@1000000[8000000] can{n}@1000000[8000000]
 
 
  • SUNCAN Configuration:
 
 
  • Wiring
 
  1. Practical results

The data highlights two key points: SUNCAN achieves a maximum throughput of 5.3 Mbps and a maximum receive rate of 16,875 frames per second on SocketCAN.
 

News & Event

Subscribe SUNIX eDM

Subscribe SUNIX eDM

Subscribe SUNIX eDM

Subscribe SUNIX eDM

Back to top
返回頂部
返回頂部