diff --git a/examples/bluetooth/scanner/scanner.qml b/examples/bluetooth/scanner/scanner.qml
index 67aaecf0c6a40208c14684c0c78abf5b9185850d..543e19dedc46df7f4057d51f7bf05fd35694bccc 100644
--- a/examples/bluetooth/scanner/scanner.qml
+++ b/examples/bluetooth/scanner/scanner.qml
@@ -60,6 +60,8 @@ Item {
                     console.log("Error: Bluetooth device not turned on"); break;
                 case BluetoothDiscoveryModel.InputOutputError:
                     console.log("Error: Bluetooth I/O Error"); break;
+                case BluetoothDiscoveryModel.InvalidBluetoothAdapterError:
+                    console.log("Error: Invalid Bluetooth Adapter Error"); break;
                 case BluetoothDiscoveryModel.NoError:
                     break;
                 default:
diff --git a/src/bluetooth/qbluetoothservicediscoveryagent.cpp b/src/bluetooth/qbluetoothservicediscoveryagent.cpp
index c800dc6d351f6f6a2d3a6e69438ee84a45f013d0..ef28ef8252daa32290274c6b9b3d68f27c7bbfed 100644
--- a/src/bluetooth/qbluetoothservicediscoveryagent.cpp
+++ b/src/bluetooth/qbluetoothservicediscoveryagent.cpp
@@ -91,7 +91,8 @@ QT_BEGIN_NAMESPACE
     \value PoweredOffError  The Bluetooth adaptor is powered off, power it on before doing discovery.
     \value InputOutputError    Writing or reading from the device resulted in an error.
     \value InvalidBluetoothAdapterError The passed local adapter address does not match the physical
-                                        adapter address of any local Bluetooth device.
+                                        adapter address of any local Bluetooth device. This value
+                                        was introduced by Qt 5.3.
     \value UnknownError     An unknown error has occurred.
 */
 
diff --git a/src/imports/bluetooth/plugins.qmltypes b/src/imports/bluetooth/plugins.qmltypes
index f7d0d08d30a4fe3b8ec606b9995cc2c39be267ba..cf2146e2e0611f9d6cb0d67ff4fc27e8063c292a 100644
--- a/src/imports/bluetooth/plugins.qmltypes
+++ b/src/imports/bluetooth/plugins.qmltypes
@@ -30,7 +30,8 @@ Module {
                 "NoError": 0,
                 "InputOutputError": 1,
                 "PoweredOffError": 2,
-                "UnknownError": 3
+                "UnknownError": 3,
+                "InvalidBluetoothAdapterError": 4
             }
         }
         Property { name: "error"; type: "Error"; isReadonly: true }
diff --git a/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel.cpp b/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel.cpp
index 20f47f6508f42303bf516234a77f1c97c84027ac..01a53bfa38628b41f5c4def2926ab519653885e6 100644
--- a/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel.cpp
+++ b/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel.cpp
@@ -151,7 +151,19 @@ void QDeclarativeBluetoothDiscoveryModel::componentComplete()
 
 void QDeclarativeBluetoothDiscoveryModel::errorDiscovery(QBluetoothServiceDiscoveryAgent::Error error)
 {
-    d->m_error = static_cast<QDeclarativeBluetoothDiscoveryModel::Error>(error);
+    switch (error) {
+    case QBluetoothServiceDiscoveryAgent::InvalidBluetoothAdapterError:
+        d->m_error = QDeclarativeBluetoothDiscoveryModel::InvalidBluetoothAdapterError; break;
+    case QBluetoothServiceDiscoveryAgent::NoError:
+        d->m_error = QDeclarativeBluetoothDiscoveryModel::NoError; break;
+    case QBluetoothServiceDiscoveryAgent::InputOutputError:
+        d->m_error = QDeclarativeBluetoothDiscoveryModel::InputOutputError; break;
+    case QBluetoothServiceDiscoveryAgent::PoweredOffError:
+        d->m_error = QDeclarativeBluetoothDiscoveryModel::PoweredOffError; break;
+    case QBluetoothServiceDiscoveryAgent::UnknownError:
+        d->m_error = QDeclarativeBluetoothDiscoveryModel::UnknownError; break;
+    }
+
     emit errorChanged();
 }
 
@@ -187,6 +199,12 @@ void QDeclarativeBluetoothDiscoveryModel::clearModel()
          \li An IO failure occurred during device discovery
     \row \li \c BluetoothDiscoveryModel.PoweredOffError
          \li The bluetooth device is not powered on.
+    \row \li \c BluetoothDiscoveryModel.InvalidBluetoothAdapterError
+         \li There is no default Bluetooth device to perform the
+             service discovery. The model always uses the local default adapter.
+             Specifying a default adapter is not possible. If that's required,
+             \l QBluetoothServiceDiscoveryAgent should be directly used. This
+             value was introduced by Qt 5.4.
     \row \li \c BluetoothDiscoveryModel.UnknownError
          \li An unknown error occurred.
     \endtable
@@ -407,6 +425,13 @@ void QDeclarativeBluetoothDiscoveryModel::setRunning(bool running)
                 //qDebug() << "Minimal Discovery";
                 d->m_serviceAgent->start(QBluetoothServiceDiscoveryAgent::MinimalDiscovery);
             }
+
+            // we could not start service discovery
+            if (!d->m_serviceAgent->isActive()) {
+                d->m_running = false;
+                errorDiscovery(d->m_serviceAgent->error());
+                return;
+            }
         }
     }
 
diff --git a/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel_p.h b/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel_p.h
index 279fb06329091e457ef51a9805531bec4ae51b1f..1834ce36f3f4ea43d354780294ac7e934a52fb98 100644
--- a/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel_p.h
+++ b/src/imports/bluetooth/qdeclarativebluetoothdiscoverymodel_p.h
@@ -94,7 +94,8 @@ public:
         NoError,
         InputOutputError,
         PoweredOffError,
-        UnknownError
+        UnknownError,
+        InvalidBluetoothAdapterError
     };
 
     Error error() const;