Spinnaker C++
Working with GenICam GenTL Devices

Table of Contents

Avoid LLA (169.254.x.x) as NIC's statically assigned IP

Spinnaker GenTL Producer is a software driver that implements the GenICamâ„¢ GenTL 1.5 standard (https://www.emva.org/). It allows users to enumerate, communicate and stream from Teledyne GigE Vision and USB3 Vision devices in a generic way independent from the underlying transport technology. This allows third-party software such as MATLAB (https://www.mathworks.com) and other software libraries to work with Teledyne devices in a transport layer agnostic way. These applications are referred to as "GenTL Consumers," which directly use one or more GenTL Producers.

NOTE: Consumer applications must be aware of differences in device capabilities and be prepared to handle specific device models differently.


In order to use a Spinnaker GenTL producer, it needs to be properly registered and installed on the system. The Spinnaker Producer comes packaged with the full Spinnaker SDK installer as of 2.x or newer.

The GenTL Producer is provided as a platform dependent, dynamic loadable library file with the .cti ("Common Transport Interface") extension.

The Spinnaker SDK installer stores the folder paths for 32-bit and 64-bit GenTL Producers (.cti files) in environment variables named GENICAM_GENTL32_PATH and GENICAM_GENTL64_PATH, respectively. If there are multiple GenTL Producers installed on the system, path entries must be separated by ; on Windows and : on UNIX-like systems.

NOTE: A 32bit GenTL consumer application will require a 32-bit GenTL producer and a 64-bit application will require a 64-bit producer library.


Enable Spinnaker GenTL Logging

Spinnaker GenTL Logging can be enabled if a configuration file with the name "log4cpp.gentl.property" resides in the path of where the consumer application executes from. For MATLAB, this is where the working directory is set and may default to the "Downloads" folder on Windows.

Sample log4cpp.gentl.property configuration file:

# Spinnaker GenTL Property Configuration file
log4cpp.rootCategory=ERROR, rootAppender
log4cpp.category.GenTLCategory=ERROR, GenTLCategory

log4cpp.appender.rootAppender.layout.ConversionPattern=[%p] %d [%t] %m%n

log4cpp.appender.GenTLCategory.layout.ConversionPattern=[%p] %d [%t] %m%n

USB3 Device Image Tearing

Image tearing could occur with certain USB3 host controllers when streaming with a GenTL producer. To work around the issue, make sure the size of each buffer announced to the Spinnaker GenTL producer is 1024 bytes aligned. The size of each buffer should be (bufferSize + 1024 - 1) / 1024) * 1024 where 1024 is the USB3 packet transfer size.

For more information about image tearing causes and solutions, please refer to: https://www.flir.com/support-center/iis/machine-vision/application-note/image-tearing-causes-and-solutions/

Contact Support Spinnaker® SDK Programmer's Guide and API Reference