MATRIX VISION - mvBlueCOUGAR-X/-XD Technical Documentation
Raspberry Pi 4


The Raspberry Pi 4 is a well priced platform regarding its performance.

CPUCortex-A72 @ 1500MHz
RAM1/2/4/8 GB
USB2.0 Interfaces2
USB3.0 Interfaces2
Ethernet10/100/1000 MBit
For the following benchmark the 4GB version of the Raspberry Pi 4 with Raspbian OS has been used.


GigE Performance

Additional Settings Applied On The System

To improve the data transfer between the camera and the ARM device the following Kernel parameters have been modified:

In /etc/sysctl.d/62-buffers-performance.conf:

You may have to create this file!
net.core.wmem_max16777216Maximum memory size of a socket buffer for sending in Bytes
net.core.rmem_max16777216Maximum memory size of a socket buffer for receiving in Bytes
net.core.netdev_max_backlog10000Maximum number of packets which can be buffered if the Kernel does not manage to process them as fast as they are received

NIC Settings

MTU1500 Byte

The importance of setting these parameters as above is explained here: Network Performance Settings.

All tests using network (GigE Vision™) device have been done using the default MTU value of 1500 Bytes. This limitation is caused by the Raspberry Pi 4's default Kernel supporting MTU value only up to 1500 Bytes. There might be the possibility to compile a custom Kernel to enable the support of lager MTUs but the unmodified Kernel was used for testing.


The following scenarios have been tested:

  1. When de-Bayering is carried out on the host system: The camera delivers Bayer8 image data to the host system. The Bayer8 image data then get de-Bayered to RGB8 format on the host system. This setting results in a higher frame rate but a higher CPU load as well.
  2. When no de-Bayering is performed: The camera delivers Bayer8 image data to the host system. No de-Bayering is performed. This settings results in a lower CPU load and a higher frame rate. The behavior is identical to monochrome cameras.
For the internal NIC there is no support for MTUs bigger than 1500 Bytes in the standard Kernel as it seems (see above).