diff --git a/sohstationviewer/controller/processing.py b/sohstationviewer/controller/processing.py
index 7eaa504cb3dca8afc1501aad5cd3aa0c6d4ee284..28f3c17269fb45098332e490e9328ce1971051ba 100644
--- a/sohstationviewer/controller/processing.py
+++ b/sohstationviewer/controller/processing.py
@@ -186,8 +186,9 @@ def detect_data_type(list_of_dir: List[str]) -> Optional[str]:
         raise Exception(msg)
 
     elif data_type_list == {'Unknown'}:
-        msg = ("There are no known data detected.\n"
-               "Please select different folder(s).")
+        msg = ("There are no known data detected.\n\n"
+               "Do you want to cancel to select different folder(s)\n"
+               "Or continue to read any available mseed file?")
         raise Exception(msg)
 
     return list(dir_data_type_dict.values())[0][0]
diff --git a/sohstationviewer/view/main_window.py b/sohstationviewer/view/main_window.py
index 324a558f42115fffafe9e4cfcd1eadbbfcd77593..188d8940e4094b65145ca64c9b497c7011eecf93 100755
--- a/sohstationviewer/view/main_window.py
+++ b/sohstationviewer/view/main_window.py
@@ -386,31 +386,41 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
         :rtype: List[str, int]
         """
         req_wf_chans = []
-
-        if self.all_wf_chans_check_box.isChecked():
-            req_mseed_wildcards = ['*']
-            req_dss = ['*']      # all data stream
-        else:
-            req_dss = []
-            req_mseed_wildcards = []
-            for idx, ds_checkbox in enumerate(self.ds_check_boxes):
-                if ds_checkbox.isChecked():
-                    req_dss.append(idx + 1)
-            if self.mseed_wildcard_edit.text().strip() != "":
-                req_mseed_wildcards = self.mseed_wildcard_edit.text(
-                    ).split(",")
-
-        if self.data_type == 'RT130':
-            req_wf_chans = req_dss
-            if req_dss != ['*'] and req_mseed_wildcards != []:
-                msg = 'MSeed Wildcards will be ignored for RT130.'
-                self.processing_log.append((msg, LogType.WARNING))
-        else:
-            req_wf_chans = req_mseed_wildcards
-            if req_mseed_wildcards != ['*'] and req_dss != []:
-                msg = ('Checked data streams will be ignored for '
-                       'none-RT130 data type.')
-                self.processing_log.append((msg, LogType.WARNING))
+        if ((self.all_wf_chans_check_box.isChecked()
+                or [ds for ds in self.ds_check_boxes if ds.isChecked()] != []
+                or self.mseed_wildcard_edit.text().strip() != "")
+                and not self.tps_check_box.isChecked()
+                and not self.raw_check_box.isChecked()):
+            raise Exception(
+                "Waveform channels have been selected but there are none of "
+                "TPS or RAW checkboxes checked.\nPlease clear the "
+                "selection of waveform if you don't want to display the data.")
+
+        if self.tps_check_box.isChecked() or self.raw_check_box.isChecked():
+            if self.all_wf_chans_check_box.isChecked():
+                req_mseed_wildcards = ['*']
+                req_dss = ['*']      # all data stream
+            else:
+                req_dss = []
+                req_mseed_wildcards = []
+                for idx, ds_checkbox in enumerate(self.ds_check_boxes):
+                    if ds_checkbox.isChecked():
+                        req_dss.append(idx + 1)
+                if self.mseed_wildcard_edit.text().strip() != "":
+                    req_mseed_wildcards = self.mseed_wildcard_edit.text(
+                        ).split(",")
+
+            if self.data_type == 'RT130':
+                req_wf_chans = req_dss
+                if req_dss != ['*'] and req_mseed_wildcards != []:
+                    msg = 'MSeed Wildcards will be ignored for RT130.'
+                    self.processing_log.append((msg, LogType.WARNING))
+            else:
+                req_wf_chans = req_mseed_wildcards
+                if req_mseed_wildcards != ['*'] and req_dss != []:
+                    msg = ('Checked data streams will be ignored for '
+                           'none-RT130 data type.')
+                    self.processing_log.append((msg, LogType.WARNING))
         return req_wf_chans
 
     def get_requested_soh_chan(self):
@@ -530,13 +540,6 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
         else:
             self.min_gap = None
 
-        # if waveform channels are selected, Event DS will be read from EH/ET
-        # header
-        # rt130_waveform_data_req is to read data for wave form data
-        rt130_waveform_data_req = False
-        if self.raw_check_box.isChecked() or self.tps_check_box.isChecked():
-            rt130_waveform_data_req = True
-
         if self.mseed_wildcard_edit.text().strip() != '':
             try:
                 check_chan_wildcards_format(self.mseed_wildcard_edit.text())
@@ -559,8 +562,19 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
         try:
             self.read_from_file_list()
         except Exception as e:
-            QtWidgets.QMessageBox.warning(self, "Select directory", str(e))
-            return
+            if 'no known data detected':
+                msgbox = QtWidgets.QMessageBox()
+                msgbox.setWindowTitle('Do you want to continue?')
+                msgbox.setText(str(e))
+                msgbox.addButton(QtWidgets.QMessageBox.Cancel)
+                msgbox.addButton('Continue', QtWidgets.QMessageBox.YesRole)
+                result = msgbox.exec_()
+                if result == QtWidgets.QMessageBox.Cancel:
+                    return
+                self.data_type == 'Unknown'
+            else:
+                QtWidgets.QMessageBox.warning(self, "Select directory", str(e))
+                return
 
         dir_size = sum(get_dir_size(str(dir))[0] for dir in self.dir_names)
         if dir_size > constants.BIG_FILE_SIZE:
@@ -605,8 +619,7 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
             read_start=self.start_tm,
             read_end=self.end_tm,
             include_mp123=self.mass_pos_123zne_check_box.isChecked(),
-            include_mp456=self.mass_pos_456uvw_check_box.isChecked(),
-            rt130_waveform_data_req=rt130_waveform_data_req
+            include_mp456=self.mass_pos_456uvw_check_box.isChecked()
         )
 
         self.data_loader.worker.finished.connect(self.data_loaded)
@@ -718,7 +731,6 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
         """
         if self.has_problem:
             return
-        self.clear_plots()
         self.is_plotting_soh = True
 
         d_obj = self.data_object
diff --git a/sohstationviewer/view/plotting/gps_plot/extract_gps_data.py b/sohstationviewer/view/plotting/gps_plot/extract_gps_data.py
index 35f04bcd34a07d60932bef010f854f5b9335b601..daf859445e136b43eb58ae121f3a6ac91ac3617b 100644
--- a/sohstationviewer/view/plotting/gps_plot/extract_gps_data.py
+++ b/sohstationviewer/view/plotting/gps_plot/extract_gps_data.py
@@ -434,8 +434,22 @@ def gps_data_rt130(data_obj: RT130) -> List[GPSPoint]:
 
 @extract_gps_data.register(MSeed)
 def gps_data_mseed(data_obj: MSeed) -> List[GPSPoint]:
-    data_type = detect_data_type([data_obj.dir])
+    try:
+        data_type = detect_data_type([data_obj.dir])
+    except Exception:
+        data_type = 'Unknown'
+
     if data_type == 'Q330':
         return extract_gps_data_q330(data_obj)
     elif data_type == 'Centaur' or data_type == 'Pegasus':
         return extract_gps_data_pegasus_centaur(data_obj, data_type)
+    else:
+        # data_type = "Unknown"
+        try:
+            gps_data = extract_gps_data_q330(data_obj)
+        except KeyError:
+            try:
+                gps_data = extract_gps_data_pegasus_centaur(data_obj, data_type)
+            except AttributeError:
+                return []
+        return gps_data
diff --git a/tests/test_controller/test_processing.py b/tests/test_controller/test_processing.py
index 289eb5bbdfc516f1a3b6d925e15c507415359b75..11144a43e35a534136ddd40627cf67ff7d0eafd2 100644
--- a/tests/test_controller/test_processing.py
+++ b/tests/test_controller/test_processing.py
@@ -370,8 +370,9 @@ class TestDetectDataType(TestCase):
             detect_data_type([self.dir1.name])
         self.assertEqual(
             str(context.exception),
-            "There are no known data detected.\n"
-            "Please select different folder(s).")
+            "There are no known data detected.\n\n"
+            "Do you want to cancel to select different folder(s)\n"
+            "Or continue to read any available mseed file?")
 
 
 class TestGetDataTypeFromFile(TestCase):