diff --git a/htdocs/index.wrx b/htdocs/index.wrx
index 87a03dd..ae9d4b9 100644
--- a/htdocs/index.wrx
+++ b/htdocs/index.wrx
@@ -91,6 +91,7 @@
diff --git a/htdocs/openwebrx.js b/htdocs/openwebrx.js
index 5352332..07459a5 100644
--- a/htdocs/openwebrx.js
+++ b/htdocs/openwebrx.js
@@ -429,7 +429,7 @@ function demodulator_default_analog(offset_frequency,subtype)
this.low_cut=-4000;
this.high_cut=4000;
}
- else if(subtype=="dmr")
+ else if(subtype=="dmr" || subtype=="ysf")
{
this.low_cut=-6500;
this.high_cut=6500;
diff --git a/plugins/dsp/csdr/plugin.py b/plugins/dsp/csdr/plugin.py
index 470bb4c..04b43f2 100644
--- a/plugins/dsp/csdr/plugin.py
+++ b/plugins/dsp/csdr/plugin.py
@@ -54,7 +54,7 @@ class dsp_plugin:
self.squelch_level = 0
def chain(self,which):
- if which in [ "dmr", "dstar", "nxdn" ]:
+ if which in [ "dmr", "dstar", "nxdn", "ysf" ]:
self.set_output_rate(48000)
else:
self.set_output_rate(11025)
@@ -91,6 +91,13 @@ class dsp_plugin:
c += " | sox -t raw -r 8000 -e signed-integer -b 16 -c 1 --buffer 32 - -t raw -r 11025 -e signed-integer -b 16 -c 1 - | csdr setbuf 256"
c += chain_end
return c
+ elif which == "ysf":
+ c = chain_begin
+ c += "csdr fmdemod_quadri_cf | csdr fastdcblock_ff | csdr convert_f_s16"
+ c += " | rrc_filter | gfsk_demodulator | ysf_decoder --fifo {meta_pipe} | mbe_synthesizer"
+ c += " | sox -t raw -r 8000 -e signed-integer -b 16 -c 1 --buffer 32 - -t raw -r 11025 -e signed-integer -b 16 -c 1 - | csdr setbuf 256"
+ c += chain_end
+ return c
elif which == "am": return chain_begin + "csdr amdemod_cf | csdr fastdcblock_ff | csdr fractional_decimator_ff {last_decimation} | csdr agc_ff | csdr limit_ff | csdr convert_f_s16"+chain_end
elif which == "ssb": return chain_begin + "csdr realpart_cf | csdr fractional_decimator_ff {last_decimation} | csdr agc_ff | csdr limit_ff | csdr convert_f_s16"+chain_end