Ensure you have the correct Pixelink SDK Variant
There are several variants of the Pixelink SDK (for Linux):
64-bit variant that is built for Intel x86 'PCs'. These systems may have an Intel, or an AMD processor.
v2.1 for PCs running Ubuntu 14.04
v2.2 for PCs running Ubuntu 16.04
v2.3 for PCs running Ubuntu 14.04/16.04
v2.4 for PCs running Ubuntu 14.04/16.04/18.04
v3.0 for PCs running Ubuntu 16.04/18.04/20.04
v3.2 for PCs running Ubuntu 16.04/18.04/20.04
A 32-bit variant that is built for ARM7 platforms, including the Odroid XU3/4 and the NVIDIA Jetson-TK1.
v2.1 for Odroid XU3/4 running Ubuntu 14.04
v2.1 for Jetson TK1 running Ubuntu 14.04
v2.2 for Odroid XU3/4 running Ubuntu 16.04
v2.3 for ARM7 platforms running Ubuntu 14.04/16.04
v2.4 for ARM7 platforms running Ubuntu 14.04/16.04/18.04
v3.0 for ARM7 platforms running Ubuntu 16.04/18.04
v3.2 for ARM7 platforms running Ubuntu 16.04/18.04
A 64-bit variant that is built for ARM8 platforms, including Jetson TX1/TX2, Nano
v2.1 for Jetson TX1/TX2 running Ubuntu 14.04
v2.2 for Jetson TX1/TX2 running Ubuntu 16.04
v2.3 for ARM8 platforms running Ubuntu 14.04/16.04
v2.4 for ARM8 platforms running Ubuntu 14.04/16.04/18.04
v3.0 for ARM8 platforms running Ubuntu 16.04/18.04
v3.2 for ARM8 platforms running Ubuntu 16.04/18.04
A 64-bit variant that is built with a focus on the Raspberry Pi 4
v3.0 for Raspberry Pi 4 running Ubuntu 20.10
v3.2 for Raspberry Pi 4 running Ubuntu 20.10
The installation instructions for your SDK Variant are written in the INSTALL_INSTRUCTIONS.txt file, which is included with the downloaded SDK. For convenience, some of the required steps are listed below, but please refer to the install instructions file for a comprehensive list.
Install prerequisite libraries
The Pixelink SDK uses the libraries listed below. Please install the latest variant of these libraries on your system. Be sure to choose the 64-bit variant for PCs and ARMv8s, and the 32-bit variant for ARMv7s.
GNU C++ toolchain, including the G++ compiler/linker. For instance, you could use the following command to install the necessary tools to build basic applications (including the GNU C++ toolchain):
sudo apt-get install build-essential
If you intend to use the Pixelink API Python interface, then you will need to install Python package installer::
sudo apt-get install python3-pip
As explained in the READ.ME.txt file, there are two variants of the Pixelink API; the standard (default) version that is fully functional, and a 'Lite' version that has reduced dependencies and functionality. The standard version of the API has the following additional dependencies:
SDL2. Simple Directmedia Layer, used principally for video previewing capabilities. For instance, you can download the 2.0 version of this library with the following command:
sudo apt-get install libsdl2-2.0
Additionally, if you intend to develop (Gnome based) GUI applications, similar to the captureOEM sample application, you will need the development files for this library. That is:
sudo apt-get install libsdl2-dev
GTK+3 and Glade, used for the (Gnome-based) GUI applications captureOEM and simpleGui. GTK+3 is a dependent library of Glade, so installing Glade will also install GTK+3. Your version of Gnome will have software package management tool, it's usually easiest to use it to download the Glade tool. Alternatively, you can use the following command to get Glade:
[for Ubuntu 14.04] sudo apt-get install glade-gnome
[for Ubuntu 16.04 and above] sudo apt-get install glade
ffmpeg / libav. ffmpeg is an open source video compression library, while libav is a forked version of that library that was used with Ubuntu 14.04. You can install the latest variant of this library as follows:
[for Ubuntu 14.04] sudo apt-get install libav-tools
[for Ubuntu 16.04 and above] sudo apt-get install ffmpeg
NOTE: Some of these dependent libraries may not be part of 'official' distribution for your particular install, as they rely on open-source software. If your system cannot find the above libraries, then you can update the search repositories with commands such as:
sudo add-apt-repository universe
sudo add-apt-repository multiverse
sudo apt-get update
Install the Pixelink SDK files
The Pixelink SDK files have been archived into the compressed archive file PixeLINKSdk-for-zzzzz-vx.y, where 'zzzzz' identifies the target OS for the specific install (such as Ubuntu14.04-x86_64 for a 64-bit build of Ubuntu v14.04 on a PC platform), and 'x' and 'y' refer to the version and sub-version respectively. Before decompressing this archive, you should consider an 'appropriate' location for the Pixelink files. For example, a single user install may want to locate the files off of the directory ~/PixeLINKSdk, whereas a multi-user install would want the files located in a more central location. When decompressed (using a command like tar -xzvf PixeLINKSdk-for-Ubuntu20.04-x86_64-v3.2.tar.gz), the Pixelink SDK will be expanded into the following folders:
lib: This folder contains the shared libraries required to build (link) camera control applications. Your build process must be able to 'locate' these libraries (see step 4 of the INSTALL_INSTRUCTIONS.txt file). The file HOW.TO.USE.PxlApiLite.txt contains instructions on how to use the 'Lite' variant of the Pixelink API (as explained in the READ.ME.txt file).
include: This folder contains the 'C' header files describing the programmers interface to the Pixelink API.
samples: This folder contains a series of other folders which provide sample applications that use the Pixelink API. These folders contain all of the source and makefiles needed to build the application.
utilities: This folder contains any Pixelink utility programs, provided in binary form. See the READ.ME.txt file for a list of these utilities.
Create a PIXELINK_SDK_INC and PIXELINK_SDK_LIB environmental variables
These environmental variables identify the folder where the Pixelink SDK files have been installed (from the previous step). See the makefiles in the sample application to see how this variable can be used to build applications.
The easiest way to do this, is to create and export them within a startup script. One way of doing this is shown in the step below.
Configure your system so that the runtimes can find the Pixelink shared objects
You could do this by locating the shared objects in a common location (such as /lib) and using the ldconfig to create the necessary links to the shared libraries, however this requires super user privilege. Alternatively, you can add the path $PIXELINK_SDK_LIB (where PIXELINK_SDK was created in the step above) to the environmental variable LD_LIBRARY_PATH.
For example, assuming the Pixelink SDK files were installed to the ~/PixeLINKSdk folder, you could accommodate both this and the previous step by adding the following set of commands to a particular users ~/.bashrc file:
# +++++ PixeLINK cameras/SDK +++++
# ----- PixeLINK cameras/SDK -----
Add read/write privilege to the camera device(s) (USB cameras only)
Pixelink API applications require read and write access to the USB device (the camera) in order to communicate with the device. On Ubuntu, this can be accomplished by creating a 'PixeLINK.rules' file in the 'etc/udev/rules.d' folder, that contains the following lines:
Note that you will need super user privilege to create this file in this folder, but once this is done, all users will be able to control all Pixelink cameras connected to the system. For instance, the following command will open/create this file:
sudo gedit /etc/udev/rules.d/PixeLINK.rules
For more instructions, please see the INSTALL_INSTRUCTIONS.txt file, included in the downloaded SDK.
If you run into any issues when installing the SDK, please Contact Support