When working with PL-X 10 GigE cameras, there are some additional considerations to help ensure optimal performance from the camera. This article is specifically for setting up your camera in a Linux (Ubuntu) environment. For the Windows version, please see the Working with Pixelink 10 GigE Cameras article.
We strongly recommend also referring to the INSTALL.INSTRUCTIONS.txt file which is included in the Linux SDK package, as this file also includes detailed steps for setting up your specific environment that are not included in this article.
Configuration - Enabling 'Jumbo' Ethernet Frames (Packets)
The original Ethernet specification defined the maximum packet size as 1500 bytes. This packet size is too small to accommodate newer high capacity / throughput network devices such as Pixelink 10 GigE cameras. Fortunately, most current NICs and switches can accommodate larger 'jumbo' frames.
To ensure maximum performance from your Pixelink 10 GigE camera, ensure that the systems NIC and all intermediate Ethernet switches between the host system and the camera, have defined the maximum frame size of at least 9000 bytes. On Ubuntu, you can do this by modifying the MTU (Maximum Transmission Unit) setting. One way to do this is shown below.
First, open the Settings window on your Linux system. The settings window should look similar to the one below.
Select the gear icon next to your camera's connection. If you have multiple connections, it may take some trial-and-error to determine which connection is your camera. You can try disconnecting the camera, and whichever connection disappears is the camera connection.
In the window that appears after clicking the gear icon, select the Identity option along the top menu bar. The window should look similar to the one in the below image. In this window, change the MTU setting to be at least 9000 bytes.
Click Apply in the top right corner to save your changes.
Please note that the Raspberry Pi 4 platform does not support jumbo frames without modifications to its kernel. If you have a Raspberry Pi 4 and want to enable jumbo frames, you will have to download the source files for your kernel, modify them and rebuild them. The file modifications needed are detailed in the README file included with the Linux SDK download package.
Redefining the IP stack receive buffer space
By default, the Linux kernel will allocate as little as mere 256 bytes of receive buffer space for it's IP stack. For larger, higher speed devices (such as the Pixelink 10 GigE cameras) this is not adequate. Calling the API function PxLSetStreamState to turn on the camera stream, will return a warning return code of ApiSuccessLowMemory if your system is currently configured for very little buffer space. See the sample application lowLinkMemory for details.
Increasing the amount of receive buffer space to a more appropriate value (in this case, 25 MB) is outlined as follows. It's recommended that you allocate enough receive buffer space for at least 2 images. For instance, if you will be using your system to stream a 6 megapixel camera using a 16-bit pixel format, then you should have at least 24 MB of receive buffer.
You can use the instructions below to increase your buffer space:
1. Edit the file ‘/etc/sysctl.conf’ (requires super-user privilege)
2. Add the following to the file
# Allow 25MB of receive buffer memory
3. Effect this change with the following command:
sudo sysctl -p
Camera IP Address - Local Link Address (LLA)
When using Ubuntu, you don’t have to use a static IP address; Ubuntu will allow you to use LLA (link-local address), so you do not need to worry about managing the IP addresses yourself. To enable LLA connection, you will need to adjust the network settings of your camera connection.
First, open the Settings window on your Linux system. Select the gear icon next to your camera's connection. In the window that appears after clicking the gear icon, select the IPv4 option along the top menu bar. The window should look similar to the one in the below image. In this window, select "Link-Local Only" as the IPv4 method.
Next, move on to the IPv6 option along the top menu bar. The window should look similar to the one in the below image. In this window, select "Link-Local Only" as the IPv6 method.
Once you are done making the changes to IPv4 and IPv6 methods, click the Apply button in the top right corner to save your changes.
The FindGevCameras tool can be found in the following file location: [SDK install location]/PixeLINKSdk/utilities. You can run it from the terminal by navigating to it's location, and running './FindGevCameras'.
This tool will attempt to discover cameras connected to the PC across various configurations. If your camera is not being detected in other applications, try running FindGevCameras to confirm if the camera is successfully connecting to the PC.