diff --git a/bbb-api-demo/src/main/webapp/demo_iframe.jsp b/bbb-api-demo/src/main/webapp/demo_iframe.jsp
index 3cd02f6fda6db623efc735311ae0a3e3a8e19f5f..e8aafb61d2849581eee2c88b0f9705ab10e31b0d 100644
--- a/bbb-api-demo/src/main/webapp/demo_iframe.jsp
+++ b/bbb-api-demo/src/main/webapp/demo_iframe.jsp
@@ -133,10 +133,11 @@ muteButton.id = 'muteButton';
 
 function getInitialState() {
   document.getElementById('client-content').contentWindow.postMessage('c_recording_status', '*');
-  document.getElementById('client-content').contentWindow.postMessage('c_mute_status', '*');
+  document.getElementById('client-content').contentWindow.postMessage('get_audio_joined_status', '*');
 }
 
 function handleMessage(e) {
+  let neverJoinedAudio = true;
   switch (e) {
     case 'readyToConnect': {
       // get initial state
@@ -160,11 +161,18 @@ function handleMessage(e) {
     case 'notInAudio': {
       muteButton.innerHTML = 'Not in audio';
       document.getElementById('muteButton').disabled = true;
+      if (neverJoinedAudio) {
+        // poll every 1 sec to check if we joined audio
+        setTimeout(function(){
+          document.getElementById('client-content').contentWindow.postMessage('get_audio_joined_status', '*');
+        }, 1000);}
       break;
     }
     case 'joinedAudio': {
+      neverJoinedAudio = false;
       muteButton.innerHTML = '';
-      document.getElementById('muteButton').disabled = false; getInitialState();
+      document.getElementById('muteButton').disabled = false;
+      document.getElementById('client-content').contentWindow.postMessage('c_mute_status', '*');
       break;
     }
     default: console.log('neither', { e });
diff --git a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx
index b2334ede83a8d269b2a0f1313bdae8309f8543db..6e7124fad1da3e9b40beda8021e76b0b75e2701d 100644
--- a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/container.jsx
@@ -15,11 +15,12 @@ const processToggleMuteFromOutside = (e) => {
       makeCall('toggleSelfVoice');
       break;
     }
+    case 'get_audio_joined_status': {
+      const audioJoinedState = AudioManager.isConnected ? 'joinedAudio' : 'notInAudio';
+      this.window.parent.postMessage({ response: audioJoinedState }, '*');
+      break;
+    }
     case 'c_mute_status': {
-      if (!AudioManager.isUsingAudio()) {
-        this.window.parent.postMessage({ response: 'notInAudio' }, '*');
-        return;
-      }
       const muteState = AudioManager.isMuted ? 'selfMuted' : 'selfUnmuted';
       this.window.parent.postMessage({ response: muteState }, '*');
       break;