Muting and unmuting
The microphone on Jabra audio devices can be muted/unmuted from the device itself. Depending on the device, this can be achieved by pressing a physical button, touch-sensitive button, soft key, lifting the boom arm, and others.
It is also possible to request the device to mute/unmute through the Jabra device interface library. When the microphone is muted, the device stops sending audio to the application.
As a precaution from inadvertently transmitting audio to other participants, it is recommended that your application implements its own mute functionality and stops sending audio when the microphone is muted.
The USB HID protocol, unfortunately, does not support reading the state of the headset regarding parameters such as line busy or mute, it is therefore not possible to predict with certainty what state the headset is in.
Due to this, the recommended approach is to either mute or unmute the device when you offhook it, to ensure that it is in sync with the application.
For example, it could be that your application always unmutes your Jabra device when it is offhook, or when you join a call your application automatically mutes the Jabra device based on the number of participants already in the call.
Muting/Unmuting from the device
After you initialize the Jabra library, you can subscribe to signals relevant for your application. When a user mutes the device, the device sends a signal to the library.
The application listens for these signals and acknowledges that it has received the signal and stops sending audio to call participants.
The following diagram shows a Jabra headset stopping the transmission of audio from the microphone after the user mutes and the application stops sending audio.
sequenceDiagram
participant User as User
participant App as Application
participant Device as Headset
Note over User,Device: Ongoing call
User -->> Device: Mute via the device
Note over Device: Device stops transmitting<br>audio from microphone.
Device ->> App: Mute
Note over App: App must confirm<br>new mute state.
App -) Device: Mute = 1
App -) App: Stop recording microphone
User -->> Device: Unmute via the device
Note over Device: Device starts transmitting<br>audio from microphone.
Device ->> App: Mute
Note over App: App must confirm<br>new mute state.
App -) Device: Mute = 0
App -) App: Start recording microphone
Muting/unmuting from the application
When muting through your application UI, the application must also request the Jabra device to mute through the Jabra library.
Importantly, the Jabra device does not respond to a mute request from the application.
sequenceDiagram
participant User as User
participant App as Application
participant Device as Headset
Note over User,Device: Ongoing call
User -->> App: Mute via the softphone UI
App -) App: Stop recording microphone
App -) Device: Mute = 1
Note over Device: Device will not<br>acknowledge this request.
User -->> App: Unmute via the softphone UI
App -) Device: Mute = 0
Note over Device: Device will not<br>acknowledge this request.
App -) App: Start recording microphone
Hard-Mute State
On certain Jabra devices, it's possible to force a mute state, where it's not possible to unmute from the library. An example of this is the Jabra Evolve2 85 headset, where lifting the boom arm to an upright position hard-mutes the microphone.
In this case, if the boom arm remains in an upright position, the Jabra device remains muted.
When the application requests the device to unmute through the library and if the device is unable to unmute, it sends a mute signal, telling the application to return to a mute state.
sequenceDiagram
participant User as User
participant App as Application
participant Device as Headset
Note over User,Device: Ongoing call
User -->> Device: Mute by moving boom arm up
Device ->> App: Mute
Note over App: App must confirm<br>new mute state.
App -) Device: Mute = 1
App -) App: Stop recording microphone
User -->> App: Unmute via the softphone UI
App ->> Device: Mute = 0
Note over Device: Device will not unmute.
Note over Device: Device sends request to mute.
Device ->> App: Mute
Note over App: App must confirm<br>new mute state.
App ->> Device: Mute = 1
Common issues
Only every other mute signal received
A common mistake is to not acknowledge mute signals from the device. If the device does not receive an acknowledgement of a mute signal, it assumes the application did not receive it and is still stuck in the previous mute state.
As the user presses the Mute button again, the device understands that it is returning to the state the application is already in and does not send a new signal.
sequenceDiagram
participant User as User
participant App as Application
participant Device as Headset
Note over User,Device: Ongoing call
User -->> Device: Mute via the device
Device ->> Device: Set Mute State = 1
Device ->> App: Mute
Note over App: App fails to acknowledge the signal
App -) App: Stop recording microphone
User -->> Device: Unmute via the device
Device ->> Device: Set Mute State = 0
Note over Device: Headset thinks the mute state<br>is already Mute State = 0 in app
Note over Device: No signal sent to app