diff --git a/audio_hal/audio_hw.c b/audio_hal/audio_hw.c
index 81291bd..9d61d19 100644
--- a/audio_hal/audio_hw.c
+++ b/audio_hal/audio_hw.c
@@ -3918,13 +3918,8 @@
 
     ret = str_parms_get_int(parms, "Audio hdmi-out mute", &val);
     if (ret >= 0) {
-        /* for tv,hdmitx module is not registered, do not response this control interface */
-        if (is_STB(adev)) {
-            aml_mixer_ctrl_set_int(&adev->alsa_mixer, AML_MIXER_ID_HDMI_OUT_AUDIO_MUTE, val);
-            AM_LOGI("audio hdmi out status: %d", val);
-        } else {
-            AM_LOGE("for tv,hdmitx module is not registered, do not response this control interface");
-        }
+        set_output_device_mute(adev, AUDIO_DEVICE_OUT_HDMI, val, false);
+        AM_LOGI("set Audio hdmi-out mute status: %d", val);
         goto exit;
     }
 
@@ -4187,18 +4182,21 @@
     ret = str_parms_get_int(parms, "speaker_mute", &val);
     if (ret >= 0) {
         set_output_device_mute(adev, AUDIO_DEVICE_OUT_SPEAKER, val, false);
+        AM_LOGI("set speaker_mute status: %d", val);
         goto exit;
     }
 
     ret = str_parms_get_int(parms, "headphone_mute", &val);
     if (ret >= 0) {
         set_output_device_mute(adev, AUDIO_DEVICE_OUT_WIRED_HEADPHONE, val, false);
+        AM_LOGI("set headphone_mute status: %d", val);
         goto exit;
     }
 
     ret = str_parms_get_int(parms, "ARC eARC mute", &val);
     if (ret >= 0) {
         set_output_device_mute(adev, AUDIO_DEVICE_OUT_HDMI_ARC, val, false);
+        AM_LOGI("set ARC eARC mute status: %d", val);
         goto exit;
     }
 
@@ -5698,6 +5696,37 @@
         sprintf(temp_buf, "support_effect_list =%s", effect_list);
         ALOGI("audio_effect_list: %s", temp_buf);
         return strdup(temp_buf);
+    } else if (strstr (keys, "speaker_mute")) {
+        bool is_muted = is_output_device_muted(adev, AUDIO_DEVICE_OUT_SPEAKER, false);
+        sprintf (temp_buf, "speaker_mute=%d", is_muted);
+        return strdup (temp_buf);
+    } else if (strstr (keys, "headphone_mute")) {
+        bool is_muted = is_output_device_muted(adev, AUDIO_DEVICE_OUT_WIRED_HEADPHONE, false);
+        sprintf (temp_buf, "headphone_mute=%d", is_muted);
+        return strdup (temp_buf);
+    } else if (strstr (keys, "Audio spdif mute")) {
+        bool is_muted = is_output_device_muted(adev, AUDIO_DEVICE_OUT_SPDIF, false);
+        sprintf (temp_buf, "Audio spdif mute=%d", is_muted);
+        return strdup (temp_buf);
+    } else if (strstr (keys, "ARC eARC mute")) {
+        bool is_muted = is_output_device_muted(adev, AUDIO_DEVICE_OUT_HDMI_ARC, false);
+        sprintf (temp_buf, "ARC eARC mute=%d", is_muted);
+        return strdup (temp_buf);
+    }  else if (strstr (keys, "Master volume")) {
+        int master_volume = 0;
+        if (is_STB(adev)) {
+            int dac_vol[2] = {0};
+            aml_mixer_ctrl_get_array(&adev->alsa_mixer, AML_MIXER_ID_DAC_DIGITAL_VOLUME, &dac_vol, 2);
+            master_volume = dac_vol[0];
+        } else {
+            master_volume = aml_mixer_ctrl_get_int(&adev->alsa_mixer, AML_MIXER_ID_AMP_MASTER_VOLUME);
+        }
+        sprintf (temp_buf, "Master volume=%d", master_volume);
+        return strdup (temp_buf);
+    } else if (strstr (keys, "Audio hdmi-out mute")) {
+        bool is_muted = is_output_device_muted(adev, AUDIO_DEVICE_OUT_HDMI, false);
+        sprintf (temp_buf, "Audio hdmi-out mute=%d", is_muted);
+        return strdup (temp_buf);
     }
     return strdup("");
 }
diff --git a/audio_hal/audio_hw_resource_mgr.c b/audio_hal/audio_hw_resource_mgr.c
index b334832..5a3ff04 100644
--- a/audio_hal/audio_hw_resource_mgr.c
+++ b/audio_hal/audio_hw_resource_mgr.c
@@ -632,8 +632,21 @@
         }
         port_info->mute = enable;
         break;
-    case AUDIO_DEVICE_OUT_HDMI_ARC:
     case AUDIO_DEVICE_OUT_HDMI:
+        /* for tv, hdmitx module is not registered, do not response this control interface */
+        if (is_STB(adev)) {
+            if (enable) {
+                audio_route_apply_path(mgr->ar, "hdmi_off");
+            } else {
+                audio_route_apply_path(mgr->ar, "hdmi");
+            }
+            audio_route_update_mixer(mgr->ar);
+            port_info->mute = enable;
+        } else {
+            AM_LOGE("for tv, hdmitx module is not registered, do not response this control interface");
+        }
+        break;
+    case AUDIO_DEVICE_OUT_HDMI_ARC:
         if (extern_arc) {
             aml_mixer_ctrl_set_int(mgr->mixer_ctrl, AML_MIXER_ID_SPDIF_MUTE, enable);
         } else {
