diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp
index e1aae8b843f4f2144ff3cb81ffce23473a306ae4..16f434a495440ac27817432d23675d8a93830de5 100644
--- a/src/plugins/debugger/gdb/trkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp
@@ -413,6 +413,7 @@ void TrkGdbAdapter::waitForTrkConnect()
     }
 
     m_trkDevice.sendTrkInitialPing();
+    sendTrkMessage(0x02); // Disconnect, as trk might be still connected
     sendTrkMessage(0x01); // Connect
     sendTrkMessage(0x05, TrkCB(handleSupportMask));
     sendTrkMessage(0x06, TrkCB(handleCpuType));
diff --git a/src/shared/trk/launcher.cpp b/src/shared/trk/launcher.cpp
index 78f7df6f177d12ae1f14c2b8ee2e7da0041d7e3f..08af4a215359f409423ac4bcde93d3b9bc744b16 100644
--- a/src/shared/trk/launcher.cpp
+++ b/src/shared/trk/launcher.cpp
@@ -150,6 +150,7 @@ bool Launcher::startServer(QString *errorMessage)
     if (!d->m_device.open(d->m_trkServerName, errorMessage))
         return false;
     d->m_device.sendTrkInitialPing();
+    d->m_device.sendTrkMessage(TrkDisconnect); // Disconnect, as trk might be still connected
     d->m_device.sendTrkMessage(TrkSupported, TrkCallback(this, &Launcher::handleSupportMask));
     d->m_device.sendTrkMessage(TrkCpuType, TrkCallback(this, &Launcher::handleCpuType));
     d->m_device.sendTrkMessage(TrkVersions, TrkCallback(this, &Launcher::handleTrkVersion));