diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index f268434f60..667d1239ca 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -12170,6 +12170,23 @@
filter_roll_off: "Short Slow"
+
+ id: LANG_FILTER_SUPER_SLOW
+ desc: in sound settings
+ user: core
+
+
+ *: none
+ filter_roll_off: "Super Slow"
+
+
+ *: none
+ filter_roll_off: "Super Slow"
+
+
id: LANG_FILTER_SHORT
desc: in sound settings
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 1cdbc4115d..5464416b21 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -858,6 +858,9 @@ const struct settings_list settings[] = {
#elif defined(AUDIOHW_HAVE_SHORT2_ROLL_OFF)
"roll_off", "sharp,slow,short sharp,short slow", sound_set_filter_roll_off,
4, ID2P(LANG_FILTER_SHARP), ID2P(LANG_FILTER_SLOW), ID2P(LANG_FILTER_SHORT_SHARP), ID2P(LANG_FILTER_SHORT_SLOW)),
+#elif defined(AUDIOHW_HAVE_SS_ROLL_OFF)
+ "roll_off", "sharp,slow,short sharp,short slow,super slow", sound_set_filter_roll_off,
+ 5, ID2P(LANG_FILTER_SHARP), ID2P(LANG_FILTER_SLOW), ID2P(LANG_FILTER_SHORT_SHARP), ID2P(LANG_FILTER_SHORT_SLOW), ID2P(LANG_FILTER_SUPER_SLOW)),
#elif defined(AUDIOHW_HAVE_SHORT_ROLL_OFF)
"roll_off", "sharp,slow,short,bypass", sound_set_filter_roll_off,
4, ID2P(LANG_FILTER_SHARP), ID2P(LANG_FILTER_SLOW), ID2P(LANG_FILTER_SHORT), ID2P(LANG_FILTER_BYPASS)),
diff --git a/firmware/drivers/audio/xduoolinux_codec.c b/firmware/drivers/audio/xduoolinux_codec.c
index 749d551739..3a25f6f7cf 100644
--- a/firmware/drivers/audio/xduoolinux_codec.c
+++ b/firmware/drivers/audio/xduoolinux_codec.c
@@ -238,7 +238,8 @@ void audiohw_set_filter_roll_off(int value)
/* 0 = Sharp;
1 = Slow;
2 = Short Sharp
- 3 = Short Slow */
+ 3 = Short Slow
+ 4 = Super Slow */
#if defined(XDUOO_X3II)
long int value_hw = value;
alsa_controls_set_ints("AK4490 Digital Filter", 1, &value_hw);
diff --git a/firmware/export/xduoolinux_codec.h b/firmware/export/xduoolinux_codec.h
index 301a341f15..a5bdab0661 100644
--- a/firmware/export/xduoolinux_codec.h
+++ b/firmware/export/xduoolinux_codec.h
@@ -3,7 +3,6 @@
#define AUDIOHW_CAPS (LINEOUT_CAP | FILTER_ROLL_OFF_CAP)
AUDIOHW_SETTING(VOLUME, "dB", 1, 5, -102*10, 0, -30*10)
-AUDIOHW_SETTING(FILTER_ROLL_OFF, "", 0, 1, 0, 4, 0)
#endif
// We want this, but the codec takes over a second to unmute!
@@ -12,10 +11,14 @@ AUDIOHW_SETTING(FILTER_ROLL_OFF, "", 0, 1, 0, 4, 0)
#if defined(XDUOO_X3II)
/* The AK4490 glitches when switching sample rates */
#define AUDIOHW_MUTE_ON_SRATE_CHANGE
+AUDIOHW_SETTING(FILTER_ROLL_OFF, "", 0, 1, 0, 5, 0)
+#define AUDIOHW_HAVE_SS_ROLL_OFF
#endif
#if defined(XDUOO_X20)
//#define AUDIOHW_NEEDS_INITIAL_UNMUTE
+AUDIOHW_SETTING(FILTER_ROLL_OFF, "", 0, 1, 0, 4, 0)
+#define AUDIOHW_HAVE_SHORT2_ROLL_OFF
#endif
void audiohw_mute(int mute);