diff --git a/patches/frameworks/base/0014-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch b/patches/frameworks/base/0014-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch
new file mode 100644
index 0000000..b13082f
--- /dev/null
+++ b/patches/frameworks/base/0014-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch
@@ -0,0 +1,79 @@
+From baa43b505d69d7d5dadf13bdb25d97eac8145d5f Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Mon, 6 Aug 2018 20:01:44 +0200
+Subject: [PATCH 14/24] Change SignalStrentgh to change behaviour based on
+ property
+
+Change-Id: I940ed724047567ec5195ac93ea04574c3d92f70b
+Signed-off-by: Jackeagle <jackeagle102@gmail.com>
+---
+ .../android/telephony/SignalStrength.java     | 39 +++++++++++++------
+ 1 file changed, 27 insertions(+), 12 deletions(-)
+
+diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
+index 55c0c778972..69bc6128da6 100644
+--- a/telephony/java/android/telephony/SignalStrength.java
++++ b/telephony/java/android/telephony/SignalStrength.java
+@@ -854,6 +854,7 @@ public class SignalStrength implements Parcelable {
+          * RSRQ = quality of signal dB = Number of Resource blocks*RSRP/RSSI
+          * SNR = gain = signal/noise ratio = -10log P1/P2 dB
+          */
++        String method = android.os.SystemProperties.get("persist.sys.signal.level", "default");
+         int rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN, rsrpIconLevel = -1, snrIconLevel = -1;
+ 
+         if (mLteRsrp > MAX_LTE_RSRP || mLteRsrp < MIN_LTE_RSRP) {
+@@ -900,6 +901,32 @@ public class SignalStrength implements Parcelable {
+ 	/* Ignore RSSNR for now */
+ 	if(rsrpIconLevel != -1) return rsrpIconLevel;
+ 
++        /* Valid values are (0-63, 99) as defined in TS 36.331 */
++        // TODO the range here is probably supposed to be (0..31, 99). It's unclear if anyone relies
++        // on the current incorrect range check, so this will be fixed in a future release with more
++        // soak time
++        if (mLteSignalStrength > 63) rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
++        else if (mLteSignalStrength >= 12) rssiIconLevel = SIGNAL_STRENGTH_GREAT;
++        else if (mLteSignalStrength >= 8) rssiIconLevel = SIGNAL_STRENGTH_GOOD;
++        else if (mLteSignalStrength >= 5) rssiIconLevel = SIGNAL_STRENGTH_MODERATE;
++        else if (mLteSignalStrength >= 0) rssiIconLevel = SIGNAL_STRENGTH_POOR;
++
++        if (DBG) log("getLTELevel - rssi:" + mLteSignalStrength + " rssiIconLevel:"
++                + rssiIconLevel);
++
++        if("rsrp".equals(method)) {
++            if(rsrpIconLevel == -1) rsrpIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
++            return rsrpIconLevel;
++        }
++        if("rssnr".equals(method)) {
++            if(snrIconLevel == -1) snrIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
++            return snrIconLevel;
++        }
++        if("rssi".equals(method)) {
++            if(rssiIconLevel == -1) rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
++            return rssiIconLevel;
++        }
++
+         /* Choose a measurement type to use for notification */
+         if (snrIconLevel != -1 && rsrpIconLevel != -1) {
+             /*
+@@ -914,18 +941,6 @@ public class SignalStrength implements Parcelable {
+ 
+         if (rsrpIconLevel != -1) return rsrpIconLevel;
+ 
+-        /* Valid values are (0-63, 99) as defined in TS 36.331 */
+-        // TODO the range here is probably supposed to be (0..31, 99). It's unclear if anyone relies
+-        // on the current incorrect range check, so this will be fixed in a future release with more
+-        // soak time
+-        if (mLteSignalStrength > 63) rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+-        else if (mLteSignalStrength >= 12) rssiIconLevel = SIGNAL_STRENGTH_GREAT;
+-        else if (mLteSignalStrength >= 8) rssiIconLevel = SIGNAL_STRENGTH_GOOD;
+-        else if (mLteSignalStrength >= 5) rssiIconLevel = SIGNAL_STRENGTH_MODERATE;
+-        else if (mLteSignalStrength >= 0) rssiIconLevel = SIGNAL_STRENGTH_POOR;
+-
+-        if (DBG) log("getLteLevel - rssi:" + mLteSignalStrength + " rssiIconLevel:"
+-                + rssiIconLevel);
+         return rssiIconLevel;
+ 
+     }
+-- 
+2.17.1
+
