diff --git a/plugins/channelrx/demodft8/ft8demod.cpp b/plugins/channelrx/demodft8/ft8demod.cpp
index ec98e3660b..64ab0bde4c 100644
--- a/plugins/channelrx/demodft8/ft8demod.cpp
+++ b/plugins/channelrx/demodft8/ft8demod.cpp
@@ -484,8 +484,10 @@ void FT8Demod::webapiUpdateChannelSettings(
if (channelSettingsKeys.contains("spanLog2")) {
settings.m_filterBank[settings.m_filterIndex].m_spanLog2 = response.getFt8DemodSettings()->getSpanLog2();
}
- if (channelSettingsKeys.contains("rfBandwidth")) {
- settings.m_filterBank[settings.m_filterIndex].m_rfBandwidth = response.getFt8DemodSettings()->getRfBandwidth();
+ if (channelSettingsKeys.contains("rfBandwidth"))
+ {
+ float bw = response.getFt8DemodSettings()->getRfBandwidth();
+ settings.m_filterBank[settings.m_filterIndex].m_rfBandwidth = bw > 5800.0f ? 5800.0f : bw; // Hard limit upper bandwidth to 5800 Hx fixes #2339
}
if (channelSettingsKeys.contains("lowCutoff")) {
settings.m_filterBank[settings.m_filterIndex].m_lowCutoff = response.getFt8DemodSettings()->getLowCutoff();
diff --git a/plugins/channelrx/demodft8/ft8demodgui.cpp b/plugins/channelrx/demodft8/ft8demodgui.cpp
index 2de0c60e98..13614a3631 100644
--- a/plugins/channelrx/demodft8/ft8demodgui.cpp
+++ b/plugins/channelrx/demodft8/ft8demodgui.cpp
@@ -667,7 +667,7 @@ FT8DemodGUI::FT8DemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
m_ft8Demod->setLevelMeter(ui->volumeMeter);
- ui->BW->setMaximum(60);
+ ui->BW->setMaximum(58);
ui->BW->setMinimum(10);
ui->lowCut->setMaximum(50);
ui->lowCut->setMinimum(0);
@@ -759,7 +759,7 @@ void FT8DemodGUI::applyBandwidths(unsigned int spanLog2, bool force)
ui->BW->blockSignals(true);
ui->lowCut->blockSignals(true);
- ui->BW->setMaximum(bwMax);
+ ui->BW->setMaximum(bwMax > 58 ? 58 : bwMax); // Cap to 5.8k fixes #2339
ui->BW->setMinimum(0);
ui->BW->setValue(bw);
diff --git a/plugins/channelrx/demodft8/ft8demodgui.ui b/plugins/channelrx/demodft8/ft8demodgui.ui
index c6a8715285..102f3e277f 100644
--- a/plugins/channelrx/demodft8/ft8demodgui.ui
+++ b/plugins/channelrx/demodft8/ft8demodgui.ui
@@ -516,7 +516,7 @@
0
- 60
+ 58
1
diff --git a/plugins/channelrx/demodft8/ft8demodsettings.cpp b/plugins/channelrx/demodft8/ft8demodsettings.cpp
index 08a8b2cda3..f1da9ceb6b 100644
--- a/plugins/channelrx/demodft8/ft8demodsettings.cpp
+++ b/plugins/channelrx/demodft8/ft8demodsettings.cpp
@@ -219,6 +219,7 @@ bool FT8DemodSettings::deserialize(const QByteArray& data)
{
d.readS32(100 + 10*i, &m_filterBank[i].m_spanLog2, 3);
d.readS32(101 + 10*i, &tmp, 30);
+ tmp = tmp > 58 ? 58 : tmp; // Hard limit upper bandwidth fixes #2339
m_filterBank[i].m_rfBandwidth = tmp * 100.0;
d.readS32(102+ 10*i, &tmp, 3);
m_filterBank[i].m_lowCutoff = tmp * 100.0;
diff --git a/plugins/channelrx/demodft8/readme.md b/plugins/channelrx/demodft8/readme.md
index 554c87cea1..b2e68f771d 100644
--- a/plugins/channelrx/demodft8/readme.md
+++ b/plugins/channelrx/demodft8/readme.md
@@ -85,7 +85,7 @@ Values are expressed in kHz and step is 100 Hz.
A.9: RF filter high cutoff
-Values are expressed in kHz and step is 100 Hz.
+Values are expressed in kHz and step is 100 Hz. This is limited to 5800 Hz,
A.10: Volume