Introduction
This article explains how to use Long Reach mode with a LUCID Atlas10 camera. To minimize power consumption and camera temperature, the Atlas10 camera configures its Ethernet interface in Short Reach mode by default. Short Reach mode limits the maximum Ethernet cable length to 20 meters or less. It is possible to configure the Ethernet interface to use Long Reach mode and support cable lengths of up to 100 meters.
Prerequisites
- Atlas10 camera with Long Reach mode option.
- Power supplied to Atlas10 via GPIO.
Note: Power over Ethernet is not supported.
Test Environment
PC Specifications
Long Reach mode was tested on the system shown below:
Motherboard | ASUS PRIME Z270-A |
Processor | Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz |
Memory | Kingston KHX2400C15D4 16GB (2x8GB) DDR4 SDRAM |
Operating System | Microsoft Windows 10 Professional (x64) version 19.09, build 18363.1082 |
Arena SDK | UDP or TCP Setup: Arena SDK for Windows v1.0.36.7 RDMA Setup: Arena SDK for Windows v1.0.41.8 |
Video | Intel HD Graphics 630 |
Storage | Samsung SSD 850 EVO 500GB |
Network Interface Card (NIC) | UDP or TCP Setup: Syba SD-PEX24055 - 10 Gigabit 10GBase-T NBASE-T Ethernet PCI-e x4 Network Card, Aquantia AQC-107 (non-PoE) RDMA Setup: LUCID PCIE-10GETH2-BC - Broadcom 2-CH 10G/1G RDMA Host Channel Adapter (HCA) Network Card, Broadcom BCM957416A4160C (non-PoE) |
Network Card (UDP or TCP)
- Syba SD-PEX24055
- 10G/5G/2.5G/1G NBASE-T Ethernet Card
- Chipset: Marvell Aquantia AQC107
- Driver Version: 2.2.1.0, Date: 8/13/2020
Network Card (RDMA)
- LUCID PCIE-10GETH2-BC
- 2-CH 10G/1G RDMA Host Channel Adapter (HCA) Network Card
- Chipset: Broadcom BCM957416A4160C
- Driver Version: 226.0.108.0, Date: 4/25/2023
NIC Setup
Open your NIC properties window. Uncheck all options under the Networking tab except the following:
- LUCID Vision Labs Lightweight Filter Driver
- Internet Protocol Version 4 (TCP/IPv4)
- Internet Protocol Version 6 (TCP/IPv6)
Assign an IP address and subnet to your NIC:
Apply the following to cards featuring the Marvell Aquantia AQC107 chipset:
- Transmit Buffers: 4096
- Receiver Buffers: 4096
- Jumbo Packets: 16348 Bytes
- Interrupt Moderation: Enabled
- Interrupt Moderation Rate: Adaptive
- IPv4 Checksum Offload: Rx & Tx enabled
- TCP/UDP Checksum Offload (IPv4): Rx & Tx enabled
- Energy-Efficient Ethernet: Disabled
- Allow the computer to turn off this device to save power: Unchecked
Arena SDK v1.0.41.8 and higher will automatically set up LUCID RDMA cards that are found on the system during SDK installation.
Physical Setup
Enabling Long Reach Mode
Use the following steps to use Long Reach mode with your Atlas10.
- Connect your camera to your NIC with a cable length of 20 meters or less.
- Connect to the camera in your host software.
- Set Short Reach Mode Enable = False.
This node’s setting persists on power cycle. It is not necessary to save to a User Set when setting this node.
- Remove power from the camera.
- When reattaching power, the camera will use Long Reach mode.
With this setup, the Atlas10 was able to stream with UDP or TCP with an 80 meter network cable length.
Using TCP
Follow the instructions in the Knowledge Base article Using TCP with Atlas10 Cameras.
NOTE: In Atlas10 v1.20 firmware, the TCP Enable node has been renamed to Transmission Stream Protocol
In C++ code:
Arena::IDevice* pDevice = pSystem->CreateDevice(deviceInfos[0]); Arena::SetNodeValue<GenICam::gcstring>(pDevice->GetNodeMap(), "TransportStreamProtocol", "TCP"); // When using TCP, there is no need to enable packet resend. // The packet delay and bandwidth reserve should be set to 0 // to maximize TCP efficiency. std::cout << TAB1 << "GevSCPD = " << 0 << std::endl; Arena::SetNodeValue<int64_t>(pDevice->GetNodeMap(), "GevSCPD", 0); std::cout << TAB1 << "DeviceLinkThroughputReserve = " << 0 << std::endl; Arena::SetNodeValue<int64_t>(pDevice->GetNodeMap(), "DeviceLinkThroughputReserve", 0); // Packet size should be set to the maximum value supported by the NIC. // In practice, the TCP engine may negotiate a smaller packet size. std::cout << TAB1 << "GevSCPSPacketSize = " << 9000 << std::endl; Arena::SetNodeValue<int64_t>(pDevice->GetNodeMap(), "GevSCPSPacketSize", 9000);
Using RDMA
NOTE: Arena SDK v1.0.41.8 or higher, Atlas10 v1.20 firmware or higher, and an RDMA-enabled NIC are required. See this link for more details.
In C++ code:
Arena::IDevice* pDevice = pSystem->CreateDevice(deviceInfos[0]); Arena::SetNodeValue<GenICam::gcstring>(pDevice->GetNodeMap(), "TransportStreamProtocol", "RDMA"); // When using RDMA, there is no need to enable packet resend. // The packet delay and bandwidth reserve should be set to 0 // to maximize RDMA efficiency. std::cout << TAB1 << "GevSCPD = " << 0 << std::endl; Arena::SetNodeValue<int64_t>(pDevice->GetNodeMap(), "GevSCPD", 0); std::cout << TAB1 << "DeviceLinkThroughputReserve = " << 0 << std::endl; Arena::SetNodeValue<int64_t>(pDevice->GetNodeMap(), "DeviceLinkThroughputReserve", 0); std::cout << TAB1 << "GevSCPSPacketSize = " << 9000 << std::endl; Arena::SetNodeValue<int64_t>(pDevice->GetNodeMap(), "GevSCPSPacketSize", 9000);