diff --git a/Source/Plugins/SpikeSorter/SpikeSorter.cpp b/Source/Plugins/SpikeSorter/SpikeSorter.cpp
index f21edd0253c404fed7a5a1877de8de62220e7f88..3e770324f7e0c9eef383383948c33aa62b58101f 100644
--- a/Source/Plugins/SpikeSorter/SpikeSorter.cpp
+++ b/Source/Plugins/SpikeSorter/SpikeSorter.cpp
@@ -172,6 +172,7 @@ void SpikeSorter::updateSettings()
 {
 
     mut.enter();
+	sorterReady = false;
     int numChannels = getNumInputs();
     if (numChannels > 0)
         overflowBuffer.setSize(getNumInputs(), overflowBufferSize);
@@ -191,7 +192,13 @@ void SpikeSorter::updateSettings()
 		Array<const DataChannel*> chans;
 		for (int c = 0; c < nChans; c++)
 		{
-			chans.add(getDataChannel(elec->channels[c]));
+			const DataChannel* ch = getDataChannel(elec->channels[c]);
+			if (!ch)
+			{
+				//not enough channels for the electrodes
+				return;
+			}
+			chans.add(ch);
 		}
 
 		SpikeChannel* spk = new SpikeChannel(SpikeChannel::typeFromNumChannels(nChans), this, chans);
@@ -200,7 +207,7 @@ void SpikeSorter::updateSettings()
 
         spikeChannelArray.add(spk);
     }
-
+	sorterReady = true;
     mut.exit();
 }
 
@@ -647,6 +654,12 @@ bool SpikeSorter::enable()
 {
 
     useOverflowBuffer.clear();
+	if (!sorterReady)
+	{
+		CoreServices::sendStatusMessage("Not enough channels for the configured electrodes");
+		std::cout << "SpikeSorter: Not enough channels for the configured electrodes" << std::endl;
+		return false;
+	}
 
     for (int i = 0; i < electrodes.size(); i++)
         useOverflowBuffer.add(false);
diff --git a/Source/Plugins/SpikeSorter/SpikeSorter.h b/Source/Plugins/SpikeSorter/SpikeSorter.h
index c003a1bf386673faa4fef2bdc6cc31a4040fed98..8f93e89a2cb7868ac29b969dbbf9978e16eb1a47 100644
--- a/Source/Plugins/SpikeSorter/SpikeSorter.h
+++ b/Source/Plugins/SpikeSorter/SpikeSorter.h
@@ -427,6 +427,8 @@ private:
  //   RHD2000Thread* getRhythmAccess();
     bool flipSignal;
 
+	bool sorterReady{ false };
+
     Time timer;
 
     void addWaveformToSpikeObject(SpikeEvent::SpikeBuffer& s,