Timeouts and incompletes usually happen because of a network disruption that causes a flood of resends. If resends occur, either the camera did not transmit the whole image, or the host PC did not successfully receive the complete image. Below are the troubleshooting steps to avoid or eliminate the cause of resends.
Check the DeviceLinkSpeed
Check the value of the DeviceLinkSpeed node and see if it matches the rating of the camera.
Speed |
Bits / sec |
Bytes / sec |
Zeroes |
---|---|---|---|
1G |
1,000,000,000 |
125,000,000 |
6 |
2.5G |
2,500,000,000 |
312,500,000 |
5 |
5G |
5,000,000,000 |
625,000,000 |
6 |
10G |
10,000,000,000 |
1250,000,000 |
7 |
In case the DeviceLinkSpeed is not reporting the correct value, make sure that Ethernet adapter’s Speed & Duplex is set to Auto Negotiation, or try a different port or a cable.
The ethtool -s
command can be used to change the current settings by defining the values for speed
, duplex
, and autoneg
in the following format:
$ sudo ethtool -s [device_name] autoneg [on/off] speed [10/100/1000] duplex [half/full]
For example, to set the speed to 1000Mb/s
, the duplex mode to full
and the auto-negotiation to on
the command would be:
$ sudo ethtool -s enp0s3 autoneg on speed 1000 duplex full
Table of Contents
Check the DeviceLinkSpeed
Increase DeviceLinkThroughputReserve and PacketResendWindowFrameCount
Maximize Buffer/Packet Sizes on NIC Settings
Assign a Different Subnet to your NIC for each Camera
Increase Buffer Size in the SDK Using StartStream(100)
Maximize Memory Channel Configuration
Check Power Settings in the BIOS
Increase DeviceLinkThroughputReserve and PacketResendWindowFrameCount
The PacketResendWindowFrameCount node decides how far back resends can be requested for images. The default is 4, which means the SDK will attempt to request packets for as far back as frame n-3 while receiving the current frame n. Keep in mind that there still has to be enough bandwidth reserve within that window for the camera to actually send those packets.
nodemap[“PacketResendWindowFrameCount”].value = 4
The camera uses reserve bandwidth to resend the packets. By default, DeviceLinkThroughputReserve is set to 10%.
nodemap[“DeviceLinkThroughputReserve ”].value = 10
To reduce the number of incomplete images, try increasing PacketResendWindowFrameCount to 8 and slightly increasing the reserve bandwidth. You can first try with 10% and then slowly increase the value.
Maximize buffer/packet sizes in NIC settings
Set jumbo frames/ MTU size to 9000 bytes, or the maximum.
$ sudo ifconfig enp28s0 mtu 9000
Set receive buffers to 4096 bytes*, transmit buffer to 1024 bytes, or the maximum. (*The size of the Rx buffer is network chipset-dependent. No all chipset will accept 4096 bytes. Choose the largest size you can set.)
$ sudo ethtool -G enp0s8 rx 4096 $ sudo ethtool -G enp0s8 tx 1024
Set socket buffers to 32MB, or the maximum.
$ sudo sh -c "echo 'net.core.rmem_default=33554432' >> /etc/sysctl.conf" $ sudo sh -c "echo 'net.core.rmem_max=33554432' >> /etc/sysctl.conf" $ sudo sysctl -p
Assign a different subnet to your NIC for each camera
The following command sets the subnet for adapter enp0s8. Additional commands with a different subnet should be set for any other adapters.
$ sudo ifconfig enp0s8 169.254.0.1 netmask 255.255.0.0
Increase buffer size in the SDK using StartStream(100)
Increasing the number of internal buffers to use in the acquisition engine will help reducing the chance for incomplete images.
Maximize memory channel configuration
We recommend maximizing the memory channel configuration for your RAM.
Dual channel memory configuration
Priority | DDR4_A1 | DDR4_A2 | DDR4_B1 | DDR4_B2 |
---|---|---|---|---|
1 | Populated | Populated | ||
2 | Populated | Populated | Populated | Populated |
Below is an example on how to populate RAM slots to make use of dual channels. As shown in the diagram, DDR4_A2 and DDR4_B2 will get priority. Check the manual of your motherboard to make sure you are using the dual channels.
Check power settings in UEFI (BIOS)
- Ensure PC power-saving features are off
- Disable SpeedStep (EIST)
- Disable C-states
Missing data/incomplete images with the Arena SDK can occur when EIST and C-state are enabled in the systems power management settings.
C-states are states when the CPU has reduced or turned off selected functions.
Enhanced Intel SpeedStep Technology (EIST) gives your operating system the ability to switch the processor’s speed and voltage up and down, to preserve power when not much is being computed.
Both C-states and EIST power saving settings should be disabled to help resolve any issues with missing data in the Arena SDK.
Procedure (for Supermicro X10DRi motherboard with Intel Xeon E5 2620v4)
Note: Different motherboards may have a different menu structure and features from the one shown below.
Boot into the system BIOS settings.
Settings → Update and Security → Recovery → Advanced Startup → Restart Now
The computer will boot into a special menu.
Troubleshoot → Advanced Options → UEFI Firmware Settings → Restart
Once in the BIOS settings, there should be an explicit option for “Intel SpeedStep” or “EIST” that can be disabled.
Under CPU Power Management, change Package C State Limit to C0/C1 state and deactivate CPU C3 Report, CPU C6 Report and Enhanced Halt State (C1E). These steps will disable the CPU C-states.