diff -Nru bluez-5.50/debian/changelog bluez-5.50/debian/changelog
--- bluez-5.50/debian/changelog	2020-03-13 21:31:22.000000000 +0100
+++ bluez-5.50/debian/changelog	2020-03-20 21:19:01.000000000 +0100
@@ -1,3 +1,11 @@
+bluez (5.50-1.2) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * input: hog: Attempt to set security level if not bonded
+  * input: Add LEAutoSecurity setting to input.conf
+
+ -- Salvatore Bonaccorso <carnil@debian.org>  Fri, 20 Mar 2020 21:19:01 +0100
+
 bluez (5.50-1.1) unstable; urgency=high
 
   * Non-maintainer upload.
diff -Nru bluez-5.50/debian/patches/input-Add-LEAutoSecurity-setting-to-input.conf.patch bluez-5.50/debian/patches/input-Add-LEAutoSecurity-setting-to-input.conf.patch
--- bluez-5.50/debian/patches/input-Add-LEAutoSecurity-setting-to-input.conf.patch	1970-01-01 01:00:00.000000000 +0100
+++ bluez-5.50/debian/patches/input-Add-LEAutoSecurity-setting-to-input.conf.patch	2020-03-20 21:19:01.000000000 +0100
@@ -0,0 +1,121 @@
+From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+Date: Wed, 11 Mar 2020 11:43:21 -0700
+Subject: input: Add LEAutoSecurity setting to input.conf
+Origin: https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit?id=f2778f5877d20696d68a452b26e4accb91bfb19e
+
+LEAutoSecurity can be used to enable/disable automatic upgrades of
+security for LE devices, by default it is enabled so existing devices
+that did not require security and were not bonded will automatically
+upgrade the security.
+
+Note: Platforms disabling this setting would require users to manually
+bond the device which may require changes to the user interface to
+always force bonding for input devices as APIs such as Device.Connect
+will no longer work which maybe perceived as a regression.
+---
+ profiles/input/device.h   |  1 +
+ profiles/input/hog.c      | 13 +++++++++++--
+ profiles/input/input.conf |  5 +++++
+ profiles/input/manager.c  | 11 ++++++++++-
+ 4 files changed, 27 insertions(+), 3 deletions(-)
+
+diff --git a/profiles/input/device.h b/profiles/input/device.h
+index 3044db67332c..5a077f92a82c 100644
+--- a/profiles/input/device.h
++++ b/profiles/input/device.h
+@@ -30,6 +30,7 @@ struct input_conn;
+ void input_set_idle_timeout(int timeout);
+ void input_enable_userspace_hid(bool state);
+ void input_set_classic_bonded_only(bool state);
++void input_set_auto_sec(bool state);
+ 
+ int input_device_register(struct btd_service *service);
+ void input_device_unregister(struct btd_service *service);
+diff --git a/profiles/input/hog.c b/profiles/input/hog.c
+index f0226ebbd1ba..327a1d1c3c2b 100644
+--- a/profiles/input/hog.c
++++ b/profiles/input/hog.c
+@@ -53,6 +53,7 @@
+ #include "src/shared/gatt-client.h"
+ #include "src/plugin.h"
+ 
++#include "device.h"
+ #include "suspend.h"
+ #include "attrib/att.h"
+ #include "attrib/gattrib.h"
+@@ -67,8 +68,14 @@ struct hog_device {
+ };
+ 
+ static gboolean suspend_supported = FALSE;
++static bool auto_sec = true;
+ static struct queue *devices = NULL;
+ 
++void input_set_auto_sec(bool state)
++{
++	auto_sec = state;
++}
++
+ static void hog_device_accept(struct hog_device *dev, struct gatt_db *db)
+ {
+ 	char name[248];
+@@ -192,11 +199,13 @@ static int hog_accept(struct btd_service *service)
+ 	if (!device_is_bonded(device, btd_device_get_bdaddr_type(device))) {
+ 		struct bt_gatt_client *client;
+ 
++		if (!auto_sec)
++			return -ECONNREFUSED;
++
+ 		client = btd_device_get_gatt_client(device);
+ 		if (!bt_gatt_client_set_security(client,
+-						BT_ATT_SECURITY_MEDIUM)) {
++						BT_ATT_SECURITY_MEDIUM))
+ 			return -ECONNREFUSED;
+-		}
+ 	}
+ 
+ 	/* TODO: Replace GAttrib with bt_gatt_client */
+diff --git a/profiles/input/input.conf b/profiles/input/input.conf
+index 166aff4a43b2..4c70bc561f05 100644
+--- a/profiles/input/input.conf
++++ b/profiles/input/input.conf
+@@ -19,3 +19,8 @@
+ # pairing/encryption.
+ # Defaults to false to maximize device compatibility.
+ #ClassicBondedOnly=true
++
++# LE upgrade security
++# Enables upgrades of security automatically if required.
++# Defaults to true to maximize device compatibility.
++#LEAutoSecurity=true
+diff --git a/profiles/input/manager.c b/profiles/input/manager.c
+index 5cd27b8396b8..bf4acb4ed583 100644
+--- a/profiles/input/manager.c
++++ b/profiles/input/manager.c
+@@ -96,7 +96,7 @@ static int input_init(void)
+ 	config = load_config_file(CONFIGDIR "/input.conf");
+ 	if (config) {
+ 		int idle_timeout;
+-		gboolean uhid_enabled, classic_bonded_only;
++		gboolean uhid_enabled, classic_bonded_only, auto_sec;
+ 
+ 		idle_timeout = g_key_file_get_integer(config, "General",
+ 							"IdleTimeout", &err);
+@@ -125,6 +125,15 @@ static int input_init(void)
+ 		} else
+ 			g_clear_error(&err);
+ 
++		auto_sec = g_key_file_get_boolean(config, "General",
++						"LEAutoSecurity", &err);
++		if (!err) {
++			DBG("input.conf: LEAutoSecurity=%s",
++					auto_sec ? "true" : "false");
++			input_set_auto_sec(auto_sec);
++		} else
++			g_clear_error(&err);
++
+ 	}
+ 
+ 	btd_profile_register(&input_profile);
+-- 
+2.20.1
+
diff -Nru bluez-5.50/debian/patches/input-hog-Attempt-to-set-security-level-if-not-bonde.patch bluez-5.50/debian/patches/input-hog-Attempt-to-set-security-level-if-not-bonde.patch
--- bluez-5.50/debian/patches/input-hog-Attempt-to-set-security-level-if-not-bonde.patch	1970-01-01 01:00:00.000000000 +0100
+++ bluez-5.50/debian/patches/input-hog-Attempt-to-set-security-level-if-not-bonde.patch	2020-03-20 21:19:01.000000000 +0100
@@ -0,0 +1,48 @@
+From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+Date: Tue, 10 Mar 2020 09:59:07 -0700
+Subject: input: hog: Attempt to set security level if not bonded
+Origin: https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit?id=35d8d895cd0b724e58129374beb0bb4a2edf9519
+
+This attempts to set the security if the device is not bonded, the
+kernel will block any communication on the ATT socket while bumping
+the security and if that fails the device will be disconnected which
+is better than having the device dangling around without being able to
+communicate with it until it is properly bonded.
+---
+ profiles/input/hog.c | 13 +++++++++++--
+ 1 file changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/profiles/input/hog.c b/profiles/input/hog.c
+index dfac689219a0..f0226ebbd1ba 100644
+--- a/profiles/input/hog.c
++++ b/profiles/input/hog.c
+@@ -49,6 +49,8 @@
+ #include "src/shared/util.h"
+ #include "src/shared/uhid.h"
+ #include "src/shared/queue.h"
++#include "src/shared/att.h"
++#include "src/shared/gatt-client.h"
+ #include "src/plugin.h"
+ 
+ #include "suspend.h"
+@@ -187,8 +189,15 @@ static int hog_accept(struct btd_service *service)
+ 	}
+ 
+ 	/* HOGP 1.0 Section 6.1 requires bonding */
+-	if (!device_is_bonded(device, btd_device_get_bdaddr_type(device)))
+-		return -ECONNREFUSED;
++	if (!device_is_bonded(device, btd_device_get_bdaddr_type(device))) {
++		struct bt_gatt_client *client;
++
++		client = btd_device_get_gatt_client(device);
++		if (!bt_gatt_client_set_security(client,
++						BT_ATT_SECURITY_MEDIUM)) {
++			return -ECONNREFUSED;
++		}
++	}
+ 
+ 	/* TODO: Replace GAttrib with bt_gatt_client */
+ 	bt_hog_attach(dev->hog, attrib);
+-- 
+2.20.1
+
diff -Nru bluez-5.50/debian/patches/series bluez-5.50/debian/patches/series
--- bluez-5.50/debian/patches/series	2020-03-13 21:31:22.000000000 +0100
+++ bluez-5.50/debian/patches/series	2020-03-20 21:19:01.000000000 +0100
@@ -11,3 +11,5 @@
 main.conf-Add-more-details-Closes-904212.patch
 HOGP-must-only-accept-data-from-bonded-devices.patch
 HID-accepts-bonded-device-connections-only.patch
+input-hog-Attempt-to-set-security-level-if-not-bonde.patch
+input-Add-LEAutoSecurity-setting-to-input.conf.patch
