Steps to initialize the library

The following steps are mandatory for initializing the Jabra SDK:

  • A valid application ID key must be set to SDK using `Jabra_SetAppID` API prior to calling `Jabra_InitializeV2`. If the application ID key is not set, the SDK initialization will fail i.e. `Jabra_InitializeV2` will return false. Note, the application ID key must be obtained by the application developer by registering at the Jabra portal: and requesting an application ID key.
  • The library is initialized using the `Jabra_InitializeV2` API. The arguments consist of pointers to five callback functions, non-Jabra device detection parameter and an optional configuration parameter
Parameter Description
FirstScanForDeviceDoneFunc Callback function that is called when the library has finished the initial scanning for Jabra devices.
DeviceAttachedFunc Callback function that is called when a new Jabra device is connected or the library has been initialized and found a Jabra device.
DeviceRemovedFunc Callback function that is called when a Jabra device is removed.
ButtonInDataRawHidFunc Callback function that is called when new input data has been received. Data is raw HID data.
ButtonInDataTranslatedFunc Callback function that is called when new input data has been received. Data is represented at a higher level of abstraction than the raw HID data.
nonJabraDeviceDetection Should be false as non-Jabra device detection is not supported on Linux.
configParams Optional. Used for e.g. changing networking settings. Set to NULL to use default configuration.

Important: As callbacks are executed in SDK context, the callbacks should only perform minor and non-blocking activities. Time-consuming tasks should be handled in the main application.

Library initialization must be done only once. Before process shutdown, Jabra_Uninitialize() must be called in order to perform memory cleanup.

32-bit and 64-bit support

The library is delivered in a 64-bit version only. Since Ubuntu 16.04 LTS is no longer officially supported, a 32-bit library is no longer included.
Application developers must make sure that linking is only done against other 64-bit libraries and executables.

Network connection

For most of the SDK functionality a network connection is required. During device discovery, information about the device is retrieved from Jabra server and stored locally. Default storage location is /tmp/Resources which can be changed by setting the LIBJABRA_RESOURCE_PATH environment variable.


The SDK provides logging to troubleshoot issues. By default, the log level is set to warning. You can alter logs by setting the environment variable LIBJABRA_TRACE_LEVEL from the command prompt. Other supported log levels are invalid, fatal, and error. The logs are sent to stdout.

Points to remember

  • As multiple applications can access the same device at the same time, the device is locked by the SDK while performing operations such as call control, view settings, apply settings. An RCC or setting operation will not be able to perform unless the device is locked. The SDK will unlock the device after usage, so that other applications can access the device.
  • Concurrency is maintained between all the applications that use the Jabra SDK library and Jabra Direct.
  • Dependent settings are special settings that are dependent on other settings. For example, based on the value of one setting, other setting(s) may become enabled or disabled.
    • The application needs to handle dependency settings, based on the flag isDepedentsetting in the exposed SettingInfo structure.
    • ListKeyValue (structure) in each setting (mainly for drop down control settings) will contain a list of possible values. In addition, ListKeyValue will also have details of dependent settings.
    • For each value in the ListKeyValue structure,
    • dependentcount will have the information for how many settings are dependent on this value. It will be zero, if no settings are dependent.
    • If dependentcount is not zero, then DependencySetting (structure) will have the details of the settings that are dependent.
    • DependencySetting will have setting GUID and a flag to indicate whether to enable or disable it.
    • For some settings that are disabled because of dependency, the value needs to be changed to the default value. dependentDefaultValue in SettingInfo structure will have the default value.
  • Any given string input should be terminated with a null character.
  • Validations such as regular expression, minimum length, or maximum length for string input, need to be handled by the application.
  • The button configurations done for remote MMI would be cleared/reset when unplugging the device or exiting the application. The application should perform the button configuration again the next time it starts up.

Bluetooth adapter devices

  • Call control is not supported for USB Bluetooth adapters (such as Jabra Link 360) unless they are paired with a Bluetooth headset.
  • Settings of Bluetooth headsets can be accessed through the USB adapter when paired.
  • Only USB devices can be reset to default factory settings.