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
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
Instance Optional instance number. Can be 0 if not used

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.

Mac OS X (C++/Objective-C/Swift) Application

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

Refer Library Interfaces More information on Objective-C Wrapper can be found in Wrapper/Documentation folder.


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) using export or launchctl setenv command from Terminal. Supported log levels are - fatal, error, warning and info.

The logs will be placed at ~/Application Support/JabraSDK by default.

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 Online
  • 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, the client 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
  • The Firmware updater application (Jabra Firmware is required to be installed to support firmware update feature. The installer will be downloaded from cloud as part of firmware file download for Jabra device from Jabra_DownloadFirmware API. The udpater application will be installed when firmware update is initiated.
  • Jabra_DownloadFirmware API to be called before calling Jabra_UpdateFirmware API to get the firmware file path

Bluetooth/Dongle devices

  • The USB dongle and the paired Bluetooth headset are enumerated as seperate device in the available device list
  • When Dongle is paired with the Speak 710, if the user change shared use setting to off in Speak 710, then the device will disconnect the Bluetooth connection with the Dongle.