diff --git a/packages/mediacenter/kodi/config/appliance.xml b/packages/mediacenter/kodi/config/appliance.xml
index 3bc554af94..9741cc0458 100644
--- a/packages/mediacenter/kodi/config/appliance.xml
+++ b/packages/mediacenter/kodi/config/appliance.xml
@@ -42,6 +42,14 @@
+
+
+
+
+ 0
+
+
+
diff --git a/packages/mediacenter/kodi/patches/kodi-999.18-PR12111-smbclient-changes-for-samba4.patch b/packages/mediacenter/kodi/patches/kodi-999.18-PR12111-smbclient-changes-for-samba4.patch
index 2126d32073..ddb5ab4e3f 100644
--- a/packages/mediacenter/kodi/patches/kodi-999.18-PR12111-smbclient-changes-for-samba4.patch
+++ b/packages/mediacenter/kodi/patches/kodi-999.18-PR12111-smbclient-changes-for-samba4.patch
@@ -1,22 +1,22 @@
-From 84eccc9a16867d1e06ca2b65da1cc41f050ca06b Mon Sep 17 00:00:00 2001
+From 5c7b7960036917338e0830ba2986b62c36bb5589 Mon Sep 17 00:00:00 2001
From: chewitt
Date: Tue, 16 May 2017 12:51:32 +0100
Subject: [PATCH] smbclient: cleanup smbclient configuration
---
- .../resource.language.en_gb/resources/strings.po | 38 +++++++++++++++++++-
- system/settings/settings.xml | 20 +++++++++--
- xbmc/filesystem/SMBFile.cpp | 40 ++++++++++++++--------
+ .../resource.language.en_gb/resources/strings.po | 44 ++++++++++++++++++++-
+ system/settings/settings.xml | 21 ++++++++--
+ xbmc/filesystem/SMBFile.cpp | 45 ++++++++++++++--------
xbmc/network/NetworkServices.cpp | 3 +-
- xbmc/settings/Settings.cpp | 2 ++
+ xbmc/settings/Settings.cpp | 2 +
xbmc/settings/Settings.h | 1 +
- 6 files changed, 84 insertions(+), 20 deletions(-)
+ 6 files changed, 95 insertions(+), 21 deletions(-)
diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
-index e0060d1fae55..eb47be8cc723 100644
+index e0060d1fae55..e8e3f2c169ec 100644
--- a/addons/resource.language.en_gb/resources/strings.po
+++ b/addons/resource.language.en_gb/resources/strings.po
-@@ -19063,7 +19063,43 @@ msgctxt "#36620"
+@@ -19063,7 +19063,49 @@ msgctxt "#36620"
msgid "Enable high quality downscaling of pictures (uses more memory and has moderate performance impact)."
msgstr ""
@@ -30,42 +30,48 @@ index e0060d1fae55..eb47be8cc723 100644
+#. Description of setting with label #36621 "Maximum protocol version"
+#: system/settings/settings.xml
+msgctxt "#36622"
-+msgid "Set the maximum SMB protocol version that can be negotiated (default SMBv3). Reduce to SMBv2 or SMBv1 for compatibility with older NAS and Windows shares if required."
++msgid "Set the maximum SMB protocol version to negotiate when making connections. Forcing SMBv2 or SMBv1 compatibility may be required with older NAS and Windows shares."
+msgstr ""
+
-+#. Values for setting with label #36621 "Maximum protocol version"
++#. Values for setting with label #36621 "Maximum protocol version" - none means "no protocol version is forced"
+#: system/settings/settings.xml
+msgctxt "#36623"
-+msgid "SMBv1"
++msgid "None"
+msgstr ""
+
+#. Values for setting with label #36621 "Maximum protocol version"
+#: system/settings/settings.xml
+msgctxt "#36624"
-+msgid "SMBv2"
++msgid "SMBv1"
+msgstr ""
+
+#. Values for setting with label #36621 "Maximum protocol version"
+#: system/settings/settings.xml
+msgctxt "#36625"
++msgid "SMBv2"
++msgstr ""
++
++#. Values for setting with label #36621 "Maximum protocol version"
++#: system/settings/settings.xml
++msgctxt "#36626"
+msgid "SMBv3"
+msgstr ""
+
+#. Label of a group, that allows configuration of the system SMB client
+#: system/settings/settings.xml
-+msgctxt "#36626"
++msgctxt "#36627"
+msgid "Client"
+msgstr ""
+
-+#empty strings from id 36627 to 36899
++#empty strings from id 36628 to 36899
#: xbmc/media/MediaType.cpp
msgctxt "#36900"
diff --git a/system/settings/settings.xml b/system/settings/settings.xml
-index 301e7276e5b7..de6f6055afb8 100644
+index 301e7276e5b7..f453ed0ad296 100644
--- a/system/settings/settings.xml
+++ b/system/settings/settings.xml
-@@ -1944,15 +1944,29 @@
+@@ -1944,15 +1944,30 @@
HAS_FILESYSTEM_SMB
@@ -75,7 +81,7 @@ index 301e7276e5b7..de6f6055afb8 100644
+
+
+
-+
++
2
0.0.0.0
@@ -89,9 +95,10 @@ index 301e7276e5b7..de6f6055afb8 100644
+ 3
+
+
-+
-+
-+
++
++
++
++
+
+
+
@@ -99,7 +106,7 @@ index 301e7276e5b7..de6f6055afb8 100644
diff --git a/xbmc/filesystem/SMBFile.cpp b/xbmc/filesystem/SMBFile.cpp
-index e53d5552cf10..a51d1d383cb0 100644
+index e53d5552cf10..e5301b0452f9 100644
--- a/xbmc/filesystem/SMBFile.cpp
+++ b/xbmc/filesystem/SMBFile.cpp
@@ -27,6 +27,7 @@
@@ -110,18 +117,19 @@ index e53d5552cf10..a51d1d383cb0 100644
#include "settings/AdvancedSettings.h"
#include "settings/Settings.h"
#include "threads/SingleLock.h"
-@@ -91,34 +92,36 @@ void CSMB::Deinit()
+@@ -91,34 +92,39 @@ void CSMB::Deinit()
void CSMB::Init()
{
CSingleLock lock(*this);
+
if (!m_context)
{
+- // Create ~/.smb/smb.conf. This file is used by libsmbclient.
+ // force libsmbclient to use our own smb.conf by overriding HOME
+ std::string truehome(getenv("HOME"));
+ setenv("HOME", CSpecialProtocol::TranslatePath("special://home").c_str(), 1);
+
- // Create ~/.smb/smb.conf. This file is used by libsmbclient.
++ // Create ~/.kodi/.smb/smb.conf. This file is used by libsmbclient.
// http://us1.samba.org/samba/docs/man/manpages-3/libsmbclient.7.html
// http://us1.samba.org/samba/docs/man/manpages-3/smb.conf.5.html
- char smb_conf[MAX_PATH];
@@ -155,14 +163,17 @@ index e53d5552cf10..a51d1d383cb0 100644
- fprintf(f, "\tsocket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536\n");
- fprintf(f, "\tlock directory = %s/.smb/\n", getenv("HOME"));
+ // set maximum smbclient protocol version
-+ if (CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MAXPROTOCOL) == 1)
-+ fprintf(f, "\tclient max protocol = NT1\n");
-+ else
-+ fprintf(f, "\tclient max protocol = SMB%d\n", CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MAXPROTOCOL));
++ if (CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MAXPROTOCOL) > 0)
++ {
++ if (CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MAXPROTOCOL) == 1)
++ fprintf(f, "\tclient max protocol = NT1\n");
++ else
++ fprintf(f, "\tclient max protocol = SMB%d\n", CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MAXPROTOCOL));
++ }
// set wins server if there's one. name resolve order defaults to 'lmhosts host wins bcast'.
// if no WINS server has been specified the wins method will be ignored.
-@@ -135,6 +138,9 @@ void CSMB::Init()
+@@ -135,6 +141,9 @@ void CSMB::Init()
if (g_advancedSettings.m_sambadoscodepage.length() > 0)
fprintf(f, "\tdos charset = %s\n", g_advancedSettings.m_sambadoscodepage.c_str());
@@ -172,7 +183,7 @@ index e53d5552cf10..a51d1d383cb0 100644
fclose(f);
}
}
-@@ -151,6 +157,10 @@ void CSMB::Init()
+@@ -151,6 +160,10 @@ void CSMB::Init()
// setup our context
m_context = smbc_new_context();
diff --git a/packages/network/samba/patches/samba-951-backport-SMB3_11-default.patch b/packages/network/samba/patches/samba-951-backport-SMB3_11-default.patch
new file mode 100644
index 0000000000..cdbfcab494
--- /dev/null
+++ b/packages/network/samba/patches/samba-951-backport-SMB3_11-default.patch
@@ -0,0 +1,55 @@
+From 1199907cbe2f003a7df6f56e6cf3878d0732344d Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher
+Date: Mon, 26 Jun 2017 10:00:53 +0200
+Subject: [PATCH] param: change the effective default for "client max protocol"
+ to the latest supported protocol
+
+Currently it's SMB3_11.
+
+Signed-off-by: Stefan Metzmacher
+Reviewed-by: Andrew Bartlett
+---
+ docs-xml/smbdotconf/protocol/clientmaxprotocol.xml | 2 +-
+ lib/param/loadparm.c | 2 +-
+ source3/param/loadparm.c | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml b/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml
+index 0131331b876..eba18bfb80a 100644
+--- a/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml
++++ b/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml
+@@ -79,7 +79,7 @@
+ negotiation phase in the SMB protocol takes care of choosing
+ the appropriate protocol.
+
+- The value default refers to NT1.
++ The value default refers to SMB3_11.
+
+ IPC$ connections for DCERPC e.g. in winbindd, are handled by the
+ option.
+diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
+index 9f32d7b27b0..3ceea50b279 100644
+--- a/lib/param/loadparm.c
++++ b/lib/param/loadparm.c
+@@ -3401,7 +3401,7 @@ int lpcfg_client_max_protocol(struct loadparm_context *lp_ctx)
+ {
+ int client_max_protocol = lpcfg__client_max_protocol(lp_ctx);
+ if (client_max_protocol == PROTOCOL_DEFAULT) {
+- return PROTOCOL_NT1;
++ return PROTOCOL_LATEST;
+ }
+ return client_max_protocol;
+ }
+diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
+index 91fa85ea7b0..8f0cf5e6e03 100644
+--- a/source3/param/loadparm.c
++++ b/source3/param/loadparm.c
+@@ -4543,7 +4543,7 @@ int lp_client_max_protocol(void)
+ {
+ int client_max_protocol = lp__client_max_protocol();
+ if (client_max_protocol == PROTOCOL_DEFAULT) {
+- return PROTOCOL_NT1;
++ return PROTOCOL_LATEST;
+ }
+ return client_max_protocol;
+ }