diff --git a/grc/gen_bladerf_blocks.py b/grc/gen_bladerf_blocks.py
index db317c8b88203fb65007ff9a48d6b915b5328db8..9df9098d73933f6d0f3dcae7625da20c67c2f2db 100644
--- a/grc/gen_bladerf_blocks.py
+++ b/grc/gen_bladerf_blocks.py
@@ -110,9 +110,9 @@ parameters:
   category: Advanced
   label: 'XB-200'
   dtype: enum
-  default: auto
-  options: ['auto', 'auto3db', '50M', '144M', '222M', 'custom']
-  option_labels: ['auto', 'auto3db', '50M', '144M', '222M', 'custom']
+  default: 'none'
+  options: ['none','auto', 'auto3db', '50M', '144M', '222M', 'custom']
+  option_labels: ['none','auto', 'auto3db', '50M', '144M', '222M', 'custom']
   
 
   
diff --git a/lib/bladerf/bladerf_common.cc b/lib/bladerf/bladerf_common.cc
index 244d83d944ee11530804b909a80e1f664b8f238f..9dd91c3981e5d704f54c2267a0d1b1242503d1b9 100644
--- a/lib/bladerf/bladerf_common.cc
+++ b/lib/bladerf/bladerf_common.cc
@@ -242,43 +242,15 @@ void bladerf_common::init(dict_t const &dict, bladerf_direction direction)
     }
   }
 
-
-
   if (bladerf_is_fpga_configured(_dev.get()) != 1) {
     BLADERF_THROW("The FPGA is not configured! Provide device argument "
                   "fpga=/path/to/the/bitstream.rbf to load it.");
   }
 
   /* XB-200 Transverter Board */
-  if (dict.count("xb200")) {
-    status = bladerf_expansion_attach(_dev.get(), BLADERF_XB_200);
-    if (status != 0) {
-      BLADERF_WARNING("Could not attach XB-200: " << bladerf_strerror(status));
-    } else {
-      bladerf_xb200_filter filter = BLADERF_XB200_AUTO_1DB;
-
-      if (_get(dict, "xb200") == "custom") {
-        filter = BLADERF_XB200_CUSTOM;
-      } else if (_get(dict, "xb200") == "50M") {
-        filter = BLADERF_XB200_50M;
-      } else if (_get(dict, "xb200") == "144M") {
-        filter = BLADERF_XB200_144M;
-      } else if (_get(dict, "xb200") == "222M") {
-        filter = BLADERF_XB200_222M;
-      } else if (_get(dict, "xb200") == "auto3db") {
-        filter = BLADERF_XB200_AUTO_3DB;
-      } else if (_get(dict, "xb200") == "auto") {
-        filter = BLADERF_XB200_AUTO_1DB;
-      } else {
-        filter = BLADERF_XB200_AUTO_1DB;
-      }
+  if (dict.count("xb200") && _get(dict, "xb200") != "none") {
+      init_xb200(_get(dict, "xb200"), direction);
 
-      status = bladerf_xb200_set_filterbank(_dev.get(), direction, filter);
-      if (status != 0) {
-        BLADERF_WARNING("Could not set XB-200 filter: "
-                        << bladerf_strerror(status));
-      }
-    }
   }
 
   if(dict.count("ref_clk"))
@@ -430,6 +402,38 @@ size_t bladerf_common::get_max_channels(bladerf_direction direction)
 #endif
 }
 
+void bladerf_common::init_xb200(const std::string &filter_name, bladerf_direction direction)
+{
+    auto status = bladerf_expansion_attach(_dev.get(), BLADERF_XB_200);
+    if (status != 0) {
+        BLADERF_WARNING("Could not attach XB-200: " << bladerf_strerror(status));
+    } else {
+        bladerf_xb200_filter filter = BLADERF_XB200_AUTO_1DB;
+
+        if (filter_name == "custom") {
+            filter = BLADERF_XB200_CUSTOM;
+        } else if (filter_name == "50M") {
+            filter = BLADERF_XB200_50M;
+        } else if (filter_name == "144M") {
+            filter = BLADERF_XB200_144M;
+        } else if (filter_name== "222M") {
+            filter = BLADERF_XB200_222M;
+        } else if (filter_name == "auto3db") {
+            filter = BLADERF_XB200_AUTO_3DB;
+        } else if (filter_name == "auto") {
+            filter = BLADERF_XB200_AUTO_1DB;
+        } else {
+            filter = BLADERF_XB200_AUTO_1DB;
+        }
+
+        status = bladerf_xb200_set_filterbank(_dev.get(), direction, filter);
+        if (status != 0) {
+        BLADERF_WARNING("Could not set XB-200 filter: "
+                        << bladerf_strerror(status));
+        }
+    }
+}
+
 void bladerf_common::init_refclk(int freq)
 {
     const bladerf_range * range = nullptr;
diff --git a/lib/bladerf/bladerf_common.h b/lib/bladerf/bladerf_common.h
index eca363c2cfffa0ec94b9119cb56f85cd030bbbd1..51fa26228b2affa7175d719ba22b9ae1423cb683 100644
--- a/lib/bladerf/bladerf_common.h
+++ b/lib/bladerf/bladerf_common.h
@@ -163,8 +163,10 @@ protected:
   /* Get the maximum number of channels supported in a given direction */
   size_t get_max_channels(bladerf_direction direction);
 
+  void init_xb200(const std::string & filter, bladerf_direction direction);
   void init_refclk(int freq);
 
+
   void set_channel_enable(bladerf_channel ch, bool enable);
   bool get_channel_enable(bladerf_channel ch);