Jabra SDK Linux User Guide

Revision History

Revision Date Description
1.0 2017-06-27 Initial version
1.1 2017-07-12 Correction of paths in zip
1.2 2019-01-14 Update to match Linux SDK in general
1.3 2019-09-26 Updated library interfaces and supported devices
1.4 2019-11-08 Updated library interfaces and supported devices

1 Introduction

Jabra SDK V2 is a shared object library (so), which provides interfaces to the following functionalities in Jabra devices:

  • Device settings: Allows the user to view and change the settings of the connected Jabra device.
  • Remote call control (RCC) : Allows the user to perform functionalities using the connected Jabra device such as:
    • Send and receive HID reports to and from the device.
    • Answer and end calls.
    • Mute and unmute calls.
    • Receive ringtone for incoming calls.
    • Hold and resume calls.
    • Manually control the audio.
  • Getting the serial number and battery status, if supported by the device.
  • Button configuration (button takeover and remote MMI).
  • Child device support with Jabra Link 360 and Jabra Link 370.
  • Busylight indication.
  • Concurrency support for multiple applications of SDK.

The SDK is built as a shared object library with C interfaces.

1.1 Abbreviations and acronyms

Acronym Description
API Application Programming Interface
HID Human Interface Device
SDK Software Development Kit
IDE Integrated Development Environment
USB Universal Serial Bus
RCC Remote Call Control
MMI Man Machine Interface

1.2 SDK installation

The Jabra Linux SDK release consists of a zip archive containing the following top level directories:

  • Demo – demo application and source code.
  • Doc – installation guide and release notes.
  • Library – shared object libraries and header files required for development.
  • Readme text file.

To unzip the zip archive execute:

unzip JabraLibLinux.zip

The directory contains the following assets:

Assets Description
readme.txt Provides information on Jabra SDK V2.
doc/Jabra_SDK_V2_User_Guide_Linux_1.0.pdf User Guide and API documentation.
doc/ReleaseNotes.txt Release information.
library/[disto]/[arch]/libjabra.so.[version] Jabra SDK shared library for [disto] and [arch].
library/headers/JabraNativeHid.h Header file defining the RCC APIs.
library/headers/JabraDeviceConfig.h Header file defining the dynamic setting APIs.
library/headers/Common.h Header file defining the common interfaces used across Jabra SDK V2.
demo/[disto]/JabraDemo Demo application.
demo/src/JabraDemoQt Demo application source code (Qt Creator project).

[disto] is Linux distribution, e.g. Ubuntu [arch] is processor architecture, e.g. 32-bit [version] is SDK version, e.g.

1.2.1 Supported Jabra devices

The following Jabra devices are supported by the SDK:

  • AudioCodes HRS 457
  • Jabra BIZ 1100 Mono
  • Jabra BIZ 1100 Stereo
  • Jabra BIZ 1500 USB Duo
  • Jabra BIZ 1500 USB Mono
  • Jabra BIZ 2300 USB Duo
  • Jabra BIZ 2300 USB Mono
  • Jabra BIZ 2400 II CC USB Mono
  • Jabra BIZ 2400 II CC USB Stereo
  • Jabra BIZ 2400 II Duo
  • Jabra BIZ 2400 II Mono
  • Jabra BIZ 2400 II USB Duo BT
  • Jabra BIZ 2400 II USB Mono BT
  • Jabra BIZ 2400 II USB Mono CC
  • Jabra BIZ 2400 USB
  • Jabra BIZ 2400 USB Duo
  • Jabra BIZ 2400 USB Mono
  • Jabra DIAL 550
  • Jabra Engage 50 Mono
  • Jabra Engage 50 Stereo
  • Jabra Engage 65 Convertible
  • Jabra Engage 65 Mono
  • Jabra Engage 65 Stereo
  • Jabra Engage 75 Convertible
  • Jabra Engage 75 Mono
  • Jabra Engage 75 Stereo
  • Jabra Evolve 20 Mono
  • Jabra Evolve 20 Stereo
  • Jabra Evolve 20SE Mono
  • Jabra Evolve 20SE Stereo
  • Jabra Evolve 30 II Mono
  • Jabra Evolve 30 II Stereo
  • Jabra Evolve 30 Mono
  • Jabra Evolve 30 Stereo
  • Jabra Evolve 40/80
  • Jabra Evolve 65 Mono
  • Jabra Evolve 65 Stereo
  • Jabra Evolve 65e
  • Jabra Evolve 65t
  • Jabra Evolve 65t Cradle
  • Jabra Evolve 75
  • Jabra Evolve 75e
  • Jabra Handset 450
  • Jabra LINK 230
  • Jabra LINK 260
  • Jabra LINK 265
  • Jabra LINK 280
  • Jabra LINK 30
  • Jabra LINK 32
  • Jabra LINK 33
  • Jabra LINK 360
  • Jabra LINK 370
  • Jabra LINK 43
  • Jabra LINK 44
  • Jabra LINK 850
  • Jabra LINK 860
  • Jabra LINK 950
  • Jabra Motion Office
  • Jabra MOTION UC
  • Jabra Pro 920
  • Jabra Pro 925 Dual Connectivity
  • Jabra Pro 925 Single Connectivity
  • Jabra Pro 930
  • Jabra Pro 935
  • Jabra Pro 935 Single Connectivity
  • Jabra Pro 9450
  • Jabra Pro 9460
  • Jabra Pro 9465/9470
  • Jabra SPEAK 410
  • Jabra SPEAK 450 Cisco
  • Jabra SPEAK 510
  • Jabra SPEAK 710 MS
  • Jabra SPEAK 710 Teams
  • Jabra SPEAK 710 UC
  • Jabra SPEAK 810
  • Jabra STEALTH UC
  • Jabra SUPREME
  • Jabra SUPREME UC
  • Jabra UC VOICE 150a Duo
  • Jabra UC VOICE 150a Duo MS
  • Jabra UC VOICE 150a Mono
  • Jabra UC VOICE 150a Mono MS
  • Jabra UC VOICE 250a
  • Jabra UC VOICE 250a MS
  • Jabra UC VOICE 550a Duo
  • Jabra UC VOICE 550a Duo MS
  • Jabra UC VOICE 550a Mono
  • Jabra UC VOICE 550a Mono MS
  • Jabra UC VOICE 750a Duo
  • Jabra UC VOICE 750a Duo MS
  • Jabra UC VOICE 750a Mono
  • Jabra UC VOICE 750a Mono MS
  • Lenovo Pro Wired Stereo VoIP Headset
  • Mitel S720
  • NXT Technologies HUB
  • NXT Technologies UC-2000 Stereo Headset
  • NXT Technologies UC-5100
  • NXT Technologies UC-7500 Mono
  • NXT Technologies UC-7500 Stereo
  • USB2 Jabra Engage 75

Note: The headset may be wireless but the connection to the system must be via USB (e.g. using a Jabra Link 360 Bluetooth USB Adapter). In present scope, the library does not support Jabra Bluetooth headsets that are directly connected to the Linux system via Bluetooth.

1.2.2 Prerequisites

The prerequisites for the SDK are:

  • linux-vdso.so.1
  • libasound.so.2
  • libudev.so.1
  • libssl.so.1.1
  • libcrypto.so.1.1
  • libz.so.1
  • libstdc++.so.6
  • libm.so.6
  • libgcc_s.so.1
  • libc.so.6
  • libdl.so.2
  • libpthread.so.0
  • librt.so.1
  • ld-linux.so.2 (32-bit), ld-linux-x86-64.so.2 (64-bit)

1.2.3 Udev rules

To be able to communicate with Jabra devices with non-root privileges it is required to create a udev rule for Jabra devices. Place the udev rule in /etc/udev/rules.d, and follow naming guidelines for udev files. The contents of the file are:

ATTRS{idVendor}=="0b0e", MODE="0666", GROUP="users"

After creating the udev file (as root), reload the udev rules using:

sudo udevadm control --reload

Reattach your Jabra device it order to get new permissions assigned.

1.3 Developing an application using Jabra SDK V2

1.3.1 System requirements

  • Linux distribution: Ubuntu 18.04 LTS (32-bit or 64-bit)
  • Qt Creator: Only required for demo code.
  • Network connection

1.3.2 Target system requirements

To support the Jabra_UploadRingtone() API, the SDK requires the ffmpeg program to be installed on the end user’s machine. If the ffmpeg program is not installed, ringtone upload will fail.

1.3.3 Library interfaces Common.h: Common interfaces for devices
API name Description
Jabra_GetVersion Gets the version of the SDK library.
Jabra_SetAppID Application should set the application name using this interface. The Client ID/App ID must be obtained by registering to Jabra portal by App developers. This is a mandatory step, which needs to be done before initialization. If not, callbacks will not be registered with SDK.
Jabra_InitializeV2 Initializes the Jabra library. Argument details for the function are described here: Library initialization.
Jabra_Uninitialize Performs cleanup of library memory.
Jabra_IsFirstScanForDevicesDone Checks if device is scanned during initialization. It is recommended to register for the corresponding callback during initialization.
Jabra_IsDeviceAttached Checks if a device is connected. It is recommended to register for the corresponding callback during initialization.
Jabra_GetAttachedJabraDevices Gets the list of connected Jabra devices.
Jabra_GetBatteryStatusV2 Queries the current battery status for the charging state and indication of low battery. Only supported by devices with a battery.
Jabra_CopyJabraBatteryStatus Copies the content of a Jabra_BatteryStatus struct.
Jabra_FreeBatteryStatus Frees the Jabra_BatteryStatus struct.
Jabra_RegisterBatteryStatusUpdateCallbackV2 Register for battery status update callback.
Jabra_GetESN Returns the electronic serial number (ESN).
Jabra_GetMultiESN Returns ESN for all device components (Left earbud, right earbud, cradle and so on).
Jabra_FreeMap Release memory allocated by functions returning a Map_Int_String*.
Jabra_GetFirmwareVersion Returns the firmware version of the specified Jabra device.
Jabra_GetSku Returns the device SKU (Stock Keeping Unit)
Jabra_GetCurrentLanguageCode Get the language code for the current language
Jabra_GetDeviceImagePath Gets the image path of the connected device. The image is provided by Jabra Cloud service (and subsequently stored in the local directory of the device) and therefore requires network access for the first time.
Jabra_GetDeviceImageThumbnailPath Gets the thumbnail image of the device. The image is provided by Jabra cloud service (and subsequently stored in the local directory of the device) and therefore requires network access for the first time.
Jabra_FreeDeviceInfo Frees the information structure members of the device. This is called by the application right after handling the device attach event.
Jabra_ConnectToJabraApplication Integrates softphone app to Jabra applications like Jabra Direct (JD).
Jabra_DisconnectFromJabraApplication Disconnects the Jabra SDK application from Jabra Direct.
Jabra_SetSoftphoneReady Sets the softphone to ready.
Jabra_IsSoftphoneInFocus Indicates whether the softphone is in focus.
Jabra_SetBTPairing Sets the Bluetooth device in pairing mode.
Jabra_SearchNewDevices Queries for available Bluetooth devices that are turned on, within range, and ready to connect.
Jabra_GetSearchDeviceList Gets the list of new devices that are available for pairing and connecting.
Jabra_StopBTPairing Stops the search for available Bluetooth devices.
Jabra_SetAutoPairing Enables/disables auto pairing. When a Bluetooth adapter is plugged into the PC it will attempt to connect with the last connected Bluetooth device. If it cannot connect, it will automatically search for new Bluetooth devices to connect with if auto pairing is set.
Jabra_GetAutoPairing Queries whether auto pairing mode is enabled or disabled.
Jabra_ClearPairingList Clears the list of Bluetooth devices that are paired with the Bluetooth adapter.
Jabra_ConnectBTDevice Connects/Reconnects Bluetooth device with the Jabra Bluetooth adapter. Ensure the Bluetooth device is turned on and within range.
Jabra_ConnectNewDevice Connects with Bluetooth device and applies specified device details.
Jabra_DisconnectBTDevice Disconnects Bluetooth device from Bluetooth adapter.
Jabra_GetConnectedBTDeviceName Queries the name of Bluetooth device that is connected with Bluetooth adapter.
Jabra_GetErrorString Returns the error string from the error status.
Jabra_IsBusylightSupported Checks if busylight is supported by the device.
Jabra_GetBusylightStatus Checks the status of busylight.
Jabra_SetBusylightStatus Enables/Disables the busylight status.
Jabra_RegisterBusylightEvent Registers callback to receive busylight events.
Jabra_IsLeftEarbudStatusSupported Is left earbud status supported.
Jabra_GetLeftEarbudStatus Get left earbud connection status.
Jabra_RegisterLeftEarbudStatus Registration for left earbud connection status event. Can only be called when a device is attached.
Jabra_RegisterHearThroughSettingChangeHandler Registration for HearThrough setting change event.
Jabra_IsEqualizerSupported Checks if equalizer is supported by the device.
Jabra_IsEqualizerEnabled Checks if equalizer is enabled.
Jabra_EnableEqualizer Enable/disable equalizer.
Jabra_GetEqualizerParameters Get equalizer parameters.
Jabra_SetEqualizerParameters Set equalizer parameters.
Jabra_RegisterPairingListCallback Registers callback to receive list of devices paired with Bluetooth adapter.
Jabra_IsPairingListSupported Checks if pairing list is supported by the device.
Jabra_GetPairingList Gets the list of devices that have been paired with Bluetooth adapter.
Jabra_FreePairingList Frees the memory allocated for the list of paired devices.
Jabra_ConnectPairedDevice Connects a device that has already been paired.
Jabra_DisConnectPairedDevice Disconnects a paired device.
Jabra_ClearPairedDevice Clears the specified device from list of paired devices.
Jabra_IsRemoteMMISupported Checks if remote MMI feature is supported by the device.
Jabra_GetButtonFocus Configures the remote MMI events for a device.
Jabra_ReleaseButtonFocus Releases the remote MMI events configured in the device.
Jabra_GetSupportedButtonEvents Gets the supported remote MMI for a device.
Jabra_FreeButtonEvents Releases the memory allocated for the button events.
Jabra_RegisterForGNPButtonEvent Registers callback function to get notified on GNP button events.
Jabra_IsSettingProtectionEnabled Checks if setting protection is enabled.
Jabra_GetNpsUrlForApplication Get the NPS URL for the application only.
Jabra_GetNpsUrl Get the NPS URL.
Jabra_ProductRegistration Register a product.
Jabra_ExecuteAVRCPCommand Tells the device to execute a AVRCP command.
Jabra_RegisterDevLogCallback Registration for device logging events.
Jabra_EnableDevLog Enable/disable logging for a device.
Jabra_IsDevLogEnabled Is logging enabled on device.
Jabra_IsFirmwareLockEnabled Checks if firmware lock is enabled. If the firmware lock is enabled * it is not possible to upgrade nor downgrade the firmware. In this situation the firmware can only be changed to the same version e.g. if you want to change the language.
Jabra_CheckForFirmwareUpdate Check if Firmware update available for device.
Jabra_GetLatestFirmwareInformation Gets details of the latest firmware present in cloud.
Jabra_FreeFirmwareInfo Frees the firmware information structure members.
Jabra_GetFirmwareFilePath Get the file path of the downloaded file.
Jabra_GetAllFirmwareInformation Gets information of all the firmware present in cloud for the specific device.
Jabra_FreeFirmwareInfoList Frees the list of firmware information structure.
Jabra_DownloadFirmware Downloads the specified firmware version file.
Jabra_DownloadFirmwareUpdater Downloads the latest FW updater relevant for this device.
Jabra_UpdateFirmware Upgrades/Updates the firmware for the target device with specified version.
Jabra_CancelFirmwareDownload Cancels the firmware download.
Jabra_RegisterFirmwareProgressCallBack Registration for firmware progress event.
Jabra_Reconnect Recreates the session, input and output streams for all devices which are connected to the phone and not to the application.
Jabra_IsFeatureSupported Check if a feature is supported by a device.
Jabra_GetSupportedFeatures Get array of features supported by a device.
Jabra_FreeSupportedFeatures Free a list of features obtained by calling Jabra_GetSupportedFeatures.
Jabra_RequestNoHangupToneNextTime Request that the headset does not play its 'end of call' tone when the SCO closes next time.
Jabra_IsCertifiedForSkypeForBusiness Indicates whether the device is certified for Skype for Business.
Jabra_FreeCharArray Free a char array.
Jabra_IsUploadRingtoneSupported Checks if ringtone upload is supported by the device.
Jabra_UploadRingtone Upload ringtone to device. For Mac and Linux only (for Windows use Jabra_UploadWavRingtone).
Jabra_UploadWavRingtone Upload ringtone to device in wav format.
Jabra_GetAudioFileParametersForUpload Get details of audio file for uploading to device.
Jabra_RegisterUploadProgress Registration for ringtone upload progress event.
Jabra_IsUploadImageSupported Checks if image upload is supported by the device.
Jabra_UploadImage Upload image to device.
Jabra_SetWizardMode Sets the wizard mode (whether a full setup wizard, a limited setup wizard or none will run on next power-on).
Jabra_GetWizardMode Reads the current wizard mode (whether a full setup wizard, a limited setup wizard or none will run on next power-on).
Jabra_IsSetDateTimeSupported Checks if date and time synchronization is supported by the device.
Jabra_SetDateTime Sets (synchronizes) the date and time in the device.
Jabra_GetSupportedDeviceEvents Request info on supported device events.
Jabra_SetSubscribedDeviceEvents Set device events to subscribe to. Event callbacks are received through the event listener mechanism for each platform.
Jabra_GetRemoteMmiTypes Gets a list of supported remote MMIs.
Jabra_FreeRemoteMmiTypes Frees the memory area allocated by Jabra_GetRemoteMmiTypes.
Jabra_IsRemoteMmiInFocus Gets the status of the remote MMI focus.
Jabra_GetRemoteMmiFocus Gets the focus of the remote MMI specified. Once a remote MMI has focus, the normal functionality of the MMI (button/LED) is suppressed until Jabra_ReleaseRemoteMmiFocus or Jabra_ReleaseRemoteMmiFocusAll is called. If only the LED output MMI functionality is required, action can be specified as MMI_ACTION_NONE.
Jabra_ReleaseRemoteMmiFocus Releases the focus of the remote MMI specified. Note that focus on all actions are removed.
Jabra_SetRemoteMmiAction Sets an output action on the remote MMI. Note that Jabra_GetRemoteMmiFocus must be called once for the RemoteMmiType in question prior to setting the output action, else Return_ParameterFail is returned.
Jabra_RegisterRemoteMmiCallback Register for remote MMI event callback.
Jabra_GetPanics Get the panic list.
Jabra_FreePanicListType Frees the Jabra_PanicListType structure.
Jabra_SetTimestamp Sets a static timestamp in the device. Can be used for later referencing using Jabra_GetTimestamp.
Jabra_GetTimestamp Gets the static timestamp in the device.
Jabra_PlayRingtone Play ringtone in device.
Jabra_GetCustomerSupportUrl Gets the url for contacting Jabra customer support.
Jabra_SetJackConnectorStatusListener Subscribes/unsubscribes to JackStatus events. If not available, the client will get no events.
Jabra_SetHeadDetectionStatusListener Subscribes/unsubscribes to HeadDetectionStatus events. If not available, the client will get no events.
Jabra_SetLinkConnectionStatusListener Subscribes/unsubscribes to LinkConnectionStatus events. If not available, the client will get no events. JabraDeviceConfig.h: Interfaces for device settings
API name Description
Jabra_GetSettings Gets the settings for the connected Jabra device. Returns pointer to the device settings structure containing all settings for a particular device.
Jabra_FreeDeviceSettings When the device setting is requested by the application, memory needs to be freed by calling this API.
Jabra_SetSettings Updates/Sets the setting details of the connected Jabra device. Returns a return code to indicate whether settings were applied successfully.
Jabra_FreeString When the device image path is requested, application needs to release the memory by calling this API to prevent memory leak.
Jabra_GetFailedSettingNames Queries the list of failed setting names.
Jabra_FreeFailedSettings Prevents memory leak by releasing memory of failed setting names.
Jabra_IsFactoryResetSupported Returns whether the device supports factory reset.
Jabra_FactoryReset Restores the factory settings of the device.
Jabra_GetFailedSettingNames Returns error description for the error code.
Jabra_FreeFailedSettings Free FailedSettings structure.
Jabra_GetNamedAsset Request a named asset for the specified device.
Jabra_FreeAsset Release an asset previously obtained with Jabra_GetNamedAsset.
Jabra_SetSettingsChangeListener Add a listener for changes to the device settings. The listener will be called when a setting is changed in the device, regardless of who changed it (this instance, another instance, or the user through MMI). JabraNativeHID.h: RCC interfaces
API name Description
Jabra_IsOffhookSupported Returns true if off hook is supported for a specific Jabra device.
Jabra_SetOffhook Sets the specified device off hook/on hook.
Jabra_IsRingerSupported Returns true if ringer is supported for a specific Jabra device.
Jabra_SetRinger Sets ringer on/off for the specified device.
Jabra_IsMuteSupported Returns true if ringer is supported for a specific Jabra device.
Jabra_SetMute Sets mute on/off for the specified device.
Jabra_IsHoldSupported Returns true if hold is supported for a specific Jabra device.
Jabra_SetHold Sets hold on/off for the specified device.
Jabra_IsOnlineSupported Returns true if online mode is supported for a specific Jabra device.
Jabra_SetOnline Turns online mode on/off for a wireless headset. Online mode opens an audio link (radio link) between a base/Bluetooth adapter and a headset.
Jabra_WriteHIDCommand Sends HID output reports with device ID, Usage Page, and Usage. This function is for advanced users. It is recommended to use the dedicated functions: Jabra_SetOffHook, Jabra_SetRinger, Jabra_SetMute, Jabra_SetHold, and Jabra_SetOnline.
Jabra_IsGnHidStdHidSupported Is the device supporting GN HID and Std HID and are able to switch between them.
Jabra_GetHidWorkingState Gets the HID working state.
Jabra_SetHidWorkingState Sets the HID working state to either standard HID (usb.org HID specification) or GN HID. HID events will (default) NOT be triggered for standard HID to avoid conflicts.
Jabra_SetHidEventsFromNonJabraDevices Enables HID events from non Jabra devices.
Jabra_IsHidEventsFromNonJabraDevicesEnabled Returns true if HID events from non Jabra devices are enabled.
Jabra_SetStdHidEventsFromJabraDevices Enables HID events from Jabra devices.
Jabra_IsStdHidEventsFromJabraDevicesEnabled Returns true if HID events for Jabra devices are enabled.

1.3.4 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_Initialize. If the application ID key is not set, the SDK initialization will fail i.e. Jabra_Initialize will return false. Note, the application ID key must be obtained by the application developer by registering at the Jabra portal: https://developer.jabra.com and requesting an application ID key.
  • The library is initialized using the Jabra_Initialize API. The arguments consist of pointers to five callback functions and an instance number.
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.
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.
Instance Optional instance number. Can be 0 if not used.

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

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

Note: For RCC to be reflected in a Jabra device, HID button inputs from the device to the PC must be acknowledged by the application. Otherwise the next button input transition will not be detected by the system. A button input is acknowledged by setting the corresponding button output to the same value as the input value.

For example, when you receive an OffHook = true, you must call Jabra_SetOffHook (deviceId, true). After acknowledging the input you can set the new desired state.

For example, to reject the off-hook request you could call Jabra_SetOffHook (deviceId, false).

1.3.5 32-bit and 64-bit support

The library is delivered in a 32-bit version and in a 64-bit version. Application developers must make sure that linking is done to the version corresponding to the application.

1.3.6 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.

1.3.7 Logging

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.

1.3.8 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.

1.3.9 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.

1.4 Sample application code

Both source code and binary files for the demo application are packed along with this SDK. The demo application is a Qt application built using Qt Creator. The test program demonstrates library initialization, usage of remote call controls, and device setting features using Jabra SDK V2.

To execute the demo (here 64-bit Ubuntu):
cd JabraLibLinux/demo/ubuntu/64-bit
LD_LIBRARY_PATH=../../../library/ubuntu/64-bit ./JabraDemo

Figure 2(a): Device Information View
Figure 2(a): Device Information View

Figure 2(b): Device Settings View
Figure 2(b): Device Settings View

Figure 2(c): Call Control View
Figure 2(c): Call Control View

Figure 2(d): Device information when Bluetooth adapter is connected
Figure 2(d): Device information when Bluetooth adapter is connected

Figure 2(e): Device connected to PC using Bluetooth adapter
Figure 2(e): Device connected to PC using Bluetooth adapter