Index: qtconnectivity-opensource-src-5.12.5/src/bluetooth/qlowenergycontroller_bluezdbus.cpp =================================================================== --- qtconnectivity-opensource-src-5.12.5.orig/src/bluetooth/qlowenergycontroller_bluezdbus.cpp +++ qtconnectivity-opensource-src-5.12.5/src/bluetooth/qlowenergycontroller_bluezdbus.cpp @@ -950,7 +950,11 @@ void QLowEnergyControllerPrivateBluezDBu if (charData.uuid != QBluetoothUuid(gattChar.characteristic->uUID())) continue; - QDBusPendingReply<> reply = gattChar.characteristic->WriteValue(nextJob.value, QVariantMap()); + QVariantMap options; + // The "type" option only works with BlueZ >= 5.50, older versions always write with response + options[QStringLiteral("type")] = nextJob.writeMode == QLowEnergyService::WriteWithoutResponse ? + QStringLiteral("command") : QStringLiteral("request"); + QDBusPendingReply<> reply = gattChar.characteristic->WriteValue(nextJob.value, options); QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply, this); connect(watcher, &QDBusPendingCallWatcher::finished, this, &QLowEnergyControllerPrivateBluezDBus::onCharWriteFinished);