diff --git a/guest/hals/audio/audio_hw.c b/guest/hals/audio/audio_hw.c
index 41a0543..7db1ec1 100644
--- a/guest/hals/audio/audio_hw.c
+++ b/guest/hals/audio/audio_hw.c
@@ -331,6 +331,7 @@
     struct str_parms *parms;
     char value[32];
     int success;
+    int ret = -EINVAL;
 
     if (kvpairs == NULL || kvpairs[0] == 0) {
         return 0;
@@ -342,12 +343,19 @@
     // Instead, it should use create_audio_patch API.
     assert(("Must not use set parameters API to set audio devices", success < 0));
 
+    if (str_parms_has_key(parms, AUDIO_PARAMETER_STREAM_FORMAT)) {
+        // match the return value of out_set_format
+        ret = -ENOSYS;
+    }
+
     str_parms_destroy(parms);
 
-    ALOGW("%s(), unsupported parameter %s", __func__, kvpairs);
-    // There is not any key supported for set_parameters API.
-    // Return error when there is non-null value passed in.
-    return -EINVAL;
+    if (ret == -EINVAL) {
+        ALOGW("%s(), unsupported parameter %s", __func__, kvpairs);
+        // There is not any key supported for set_parameters API.
+        // Return error when there is non-null value passed in.
+    }
+    return ret;
 }
 
 static char * out_get_parameters(const struct audio_stream *stream, const char *keys)
@@ -847,6 +855,7 @@
     struct str_parms *parms;
     char value[32];
     int success;
+    int ret = -EINVAL;
 
     if (kvpairs == NULL || kvpairs[0] == 0) {
         return 0;
@@ -858,12 +867,19 @@
     // Instead, it should use create_audio_patch API.
     assert(("Must not use set parameters API to set audio devices", success < 0));
 
+    if (str_parms_has_key(parms, AUDIO_PARAMETER_STREAM_FORMAT)) {
+        // match the return value of in_set_format
+        ret = -ENOSYS;
+    }
+
     str_parms_destroy(parms);
 
-    ALOGW("%s(), unsupported parameter %s", __func__, kvpairs);
-    // There is not any key supported for set_parameters API.
-    // Return error when there is non-null value passed in.
-    return -EINVAL;
+    if (ret == -EINVAL) {
+        ALOGW("%s(), unsupported parameter %s", __func__, kvpairs);
+        // There is not any key supported for set_parameters API.
+        // Return error when there is non-null value passed in.
+    }
+    return ret;
 }
 
 static char * in_get_parameters(const struct audio_stream *stream,
diff --git a/shared/config/manifest.xml b/shared/config/manifest.xml
index cde4e443..6783068 100644
--- a/shared/config/manifest.xml
+++ b/shared/config/manifest.xml
@@ -21,7 +21,7 @@
     <hal format="hidl">
         <name>android.hardware.audio</name>
         <transport>hwbinder</transport>
-        <version>5.0</version>
+        <version>6.0</version>
         <interface>
             <name>IDevicesFactory</name>
             <instance>default</instance>
@@ -30,7 +30,7 @@
     <hal format="hidl">
         <name>android.hardware.audio.effect</name>
         <transport>hwbinder</transport>
-        <version>5.0</version>
+        <version>6.0</version>
         <interface>
             <name>IEffectsFactory</name>
             <instance>default</instance>
diff --git a/shared/device.mk b/shared/device.mk
index 955232a..aa9e3d0 100644
--- a/shared/device.mk
+++ b/shared/device.mk
@@ -209,8 +209,8 @@
 PRODUCT_PACKAGES += \
     audio.primary.cutf \
     audio.r_submix.default \
-    android.hardware.audio@5.0-impl:32 \
-    android.hardware.audio.effect@5.0-impl:32 \
+    android.hardware.audio@6.0-impl:32 \
+    android.hardware.audio.effect@6.0-impl:32 \
     android.hardware.audio@2.0-service \
     android.hardware.soundtrigger@2.0-impl \
 
diff --git a/tests/hidl/hidl_implementation_test.cpp b/tests/hidl/hidl_implementation_test.cpp
index 3eedc96..bb0709f 100644
--- a/tests/hidl/hidl_implementation_test.cpp
+++ b/tests/hidl/hidl_implementation_test.cpp
@@ -28,10 +28,10 @@
     "android.frameworks.vr.composer@2.0",
     "android.hardware.audio@2.0",
     "android.hardware.audio@4.0",
-    "android.hardware.audio@6.0",
+    "android.hardware.audio@5.0",
     "android.hardware.audio.effect@2.0",
     "android.hardware.audio.effect@4.0",
-    "android.hardware.audio.effect@6.0",
+    "android.hardware.audio.effect@5.0",
     "android.hardware.automotive.audiocontrol@1.0",
     "android.hardware.automotive.can@1.0",
     "android.hardware.automotive.evs@1.0",
