Steps to initialize the library

The below steps are mandatory for initializing the Jabra SDK

  • Valid App ID/Client ID must be set to SDK using Jabra_SetAppID API. If app id is not set, SDK initialization will fail. Kindly note, App ID/Client ID must be obtained by the application developers by registering with Jabra portal
  • 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 This callback function is called when the library has finished the initial scanning for Jabra devices
DeviceAttachedFunc This callback function is called when a new Jabra device is attached or the library has been initialized and found a Jabra device
DeviceRemovedFunc This callback function is called when a Jabra device is removed
ButtonInDataRawHidFunc This callback function is called when new input data has been received. Data is raw HID data. HID Events will (default) NOT be triggered for standard HID to avoid conflicts
ButtonInDataTranslatedFunc This callback function is called when new input data has been received. Data is represented at a higher level of abstraction than the raw HID data
nonJabraDeviceDectection This is used to detect non Jabra devices. Can be false if not used.
configParams This is optional configuration. Can be null if not used.

Important: As callbacks are executed in SDK context, application must perform only small/light-weight activity. For bulky functionality, it should continue using application thread

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

C# Application

User has an option to develop an application using C++ by directly consuming C interfaces. But if the application is developed in C#, a wrapper has to be created to use the APIs from these libraries.

Refer Library Interfaces

64-Bit Support

The library has support for both 32 bit and 64 bit applications. Two separate dll files built for x86(32 bit) and x64(64 bit) would be shared. Application developers must use the respective dll file.


SDK provides logging to troubleshoot issues. By default, log level is set to Warning.

Log level can be defined by setting the environment variable (LIBJABRA_TRACE_LEVEL) from command prompt or editing LIBJABRA_TRACE_LEVEL in system environment variables. Supported log levels are - fatal, error, warning and info.

The logs will be placed at %appdata%\JabraSDK or...\AppData\Roaming\JabraSDK by default, if the environment variable LIBJABRA_RESOURCE_PATH is not set.

Application log file size is restricted to 10 MB, log exceeding this size new files are created.

10 latest log files can be stored, after that on new log file creation the oldest log is deleted.

Points to Remember

  • Concurrency is maintained between all the applications which uses Jabra SDK library and Jabra Direct
  • Dependent settings are some special settings which depend on other settings. For example, based on the value of one setting, other setting(s) may get enabled or disabled
    • Application needs to handle dependency settings, based on the flag isDepedentsetting in exposed settingInfo structure
    • ListKeyValue (structure) in each setting (mainly for drop down control settings) will contain list of possible values. Along with this, ListKeyValue will also have dependent settings details
    • For each values in the ListKeyValue structure,
    • dependentcount will have the information of how many settings are dependent for this value. It will be zero, if no settings are dependent.
    • If dependentcount is non-zero, then DependencySetting (structure) will have the details of the settings, which are dependent
    • DependencySetting will have setting GUID and a flag to say whether to enable or disable
    • For some settings when disabled because of dependency, the value needs to be changed to default value. dependentDefaultValue in settingInfo structure will have default value
  • PC settings are settings, which application needs to handle as it is not device settings. And the exposed settingInfo structure has the flag, isPCsetting, to identify whether it is PC setting or not
  • Any string input given should be terminated with a NULL pointer
  • Validations like regular expression, min length, max length etc. for string input needs to be handled by application
  • The button configurations done for remote MMI should be cleared/reset on device unplug or exit of the application. The application should perform button configuration again on next start up
  • Since device does not provide any information on currently configured remote MMI's, it is purely demo app logic to maintain the remote MMI configurations for a device. Different instances of demo app will not know the remote MMI configured as device does not support reading of current remote MMI configurations
  • Remote MMI is restricted when supported device is paired with Dongle
  • If any of the settings fails while retrieving from the device, device settings structure will be null pointer
  • 3rd party developers have to register for the authorization token for firmware updater
  • For firmware update feature, firmware updater application (JabraSDKFirmwareUpdater) needs to be installed. It will be downloaded from cloud as part of firmware file download for Jabra device from Jabra_DownloadFirmware API
  • Jabra_DownloadFirmware API to be called before calling firmware update API to get the firmware file path

Bluetooth/Dongle devices

  • The USB dongle and the paired Bluetooth headset is shown as separate entries
  • The call control is not supported for USB dongles (e.g. Jabra Link 360) unless they are paired with a Bluetooth headset
  • Only USB devices can be reset to default factory setting
  • When Dongle is paired with the Speak 710 device, if the user change shared use setting to off in Speak 710, then the device will disconnect the Bluetooth connection with the Dongle.