Yes you definitely need to patch.
Here is mine:
--- UHDDevice.cpp   2014-04-16 11:56:39.000000000 +0200
+++ UHDDevice.cpp   2015-08-31 18:03:21.494289230 +0200
@@ -34,6 +34,7 @@
 
 #define B2XX_CLK_RT      52e6
 #define B2XX_BASE_RT     GSMRATE
+#define X3XX_CLK_RT      104e6
 #define B100_BASE_RT     400000
 #define USRP2_BASE_RT    390625
 #define TX_AMPL          0.3
@@ -44,6 +45,7 @@
    USRP2,
    B100,
    B2XX,
+   X3XX,
    UMTRX,
    NUM_USRP_TYPES,
 };
@@ -73,6 +75,8 @@
    { B100,  4, 7.9307e-5 },
    { B2XX,  1, 9.9692e-5 },
    { B2XX,  4, 6.9248e-5 },
+   { X3XX,  1, 1.5360e-4 },
+   { X3XX,  4, 1.1264e-4 },
    { UMTRX, 1, 9.9692e-5 },
    { UMTRX, 4, 7.3846e-5 },
 };
@@ -108,6 +112,8 @@
    switch (type) {
    case USRP2:
       return USRP2_BASE_RT * sps;
+   case X3XX:
+      return USRP2_BASE_RT * sps;
    case B100:
       return B100_BASE_RT * sps;
    case B2XX:
@@ -474,7 +480,7 @@
 {
    std::string mboard_str, dev_str;
    uhd::property_tree::sptr prop_tree;
-   size_t usrp1_str, usrp2_str, b100_str, b200_str, b210_str, umtrx_str;
+   size_t usrp1_str, usrp2_str, b100_str, b200_str, b210_str, umtrx_str, x300_str, x310_str;
 
    prop_tree = usrp_dev->get_device()->get_tree();
    dev_str = prop_tree->access<std::string>("/name").get();
@@ -486,6 +492,8 @@
    b200_str = mboard_str.find("B200");
    b210_str = mboard_str.find("B210");
    umtrx_str = dev_str.find("UmTRX");
+   x300_str = mboard_str.find("X300");
+   x310_str = mboard_str.find("X310");
 
    if (usrp1_str != std::string::npos) {
       LOG(ALERT) << "USRP1 is not supported using the UHD driver";
@@ -504,6 +512,12 @@
       dev_type = B2XX;
    } else if (b210_str != std::string::npos) {
       dev_type = B2XX;
+   } else if (x300_str != std::string::npos) {
+       dev_type = X3XX;
+       LOG(ALERT) << "Chooose X300";
+   } else if (x310_str != std::string::npos) {
+      dev_type = X3XX;
+      LOG(ALERT) << "Choose X310";
    } else if (usrp2_str != std::string::npos) {
       dev_type = USRP2;
    } else if (umtrx_str != std::string::npos) {
@@ -583,6 +597,7 @@
    case B100:
       return RESAMP_64M;
    case USRP2:
+   case X3XX:
       return RESAMP_100M;
    }