diff --git a/src/plugins/baremetal/baremetaldeviceconfigurationwizardsetuppage.ui b/src/plugins/baremetal/baremetaldeviceconfigurationwizardsetuppage.ui
index 621631e2cc4f88e8f6b7808c5ebe5baca4f166c0..be6c1dd1203fb69d5c0910abeaab2d055105e43d 100644
--- a/src/plugins/baremetal/baremetaldeviceconfigurationwizardsetuppage.ui
+++ b/src/plugins/baremetal/baremetaldeviceconfigurationwizardsetuppage.ui
@@ -30,7 +30,7 @@
    <item row="3" column="1">
     <widget class="QLineEdit" name="hostNameLineEdit">
      <property name="text">
-      <string>localhost</string>
+      <string>|openocd -c &quot;gdb_port pipe&quot; -c &quot;log_output openocd.log;&quot; -f board/stm3241g_eval_stlink.cfg</string>
      </property>
     </widget>
    </item>
diff --git a/src/plugins/baremetal/baremetalruncontrolfactory.cpp b/src/plugins/baremetal/baremetalruncontrolfactory.cpp
index f8d54e5aded7518d3f45fb19ac2c2523f20a88c9..04cd5b0b7873851f912d8c04c56cdce54b96b954 100644
--- a/src/plugins/baremetal/baremetalruncontrolfactory.cpp
+++ b/src/plugins/baremetal/baremetalruncontrolfactory.cpp
@@ -98,7 +98,10 @@ DebuggerStartParameters BareMetalRunControlFactory::startParameters(const BareMe
             params.projectBuildDirectory = buildConfig->buildDirectory().toString();
         params.projectSourceFiles = project->files(Project::ExcludeGeneratedFiles);
     }
-    params.remoteChannel = device->sshParameters().host + QLatin1String(":") + QString::number(device->sshParameters().port);
+    if (device->sshParameters().host.startsWith(QLatin1Char('|'))) //gdb pipe mode enabled
+        params.remoteChannel = device->sshParameters().host;
+    else
+        params.remoteChannel = device->sshParameters().host + QLatin1String(":") + QString::number(device->sshParameters().port);
     params.remoteSetupNeeded = false; // qml stuff, not needed
     params.commandsAfterConnect = device->gdbInitCommands().toLatin1();
     BuildConfiguration *bc = target->activeBuildConfiguration();
@@ -109,7 +112,7 @@ DebuggerStartParameters BareMetalRunControlFactory::startParameters(const BareMe
             if (ds) {
                 if (!params.commandsAfterConnect.endsWith("\n"))
                     params.commandsAfterConnect.append("\n");
-                params.commandsAfterConnect.append(ds->gdbCommands().toLocal8Bit());
+                params.commandsAfterConnect.append(ds->gdbCommands().toLatin1());
             }
         }
     }
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
index fda04137c9e41832fd15ca358748785015704b58..c031ab132c1d0e56dfad7f1de7dd14a17a572123 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
@@ -251,7 +251,8 @@ void GdbRemoteServerEngine::callTargetRemote()
 
     // Don't touch channels with explicitly set protocols.
     if (!channel.startsWith("tcp:") && !channel.startsWith("udp:")
-            && !channel.startsWith("file:") && channel.contains(':'))
+            && !channel.startsWith("file:") && channel.contains(':')
+            && !channel.startsWith('|'))
     {
         // "Fix" the IPv6 case with host names without '['...']'
         if (!channel.startsWith('[') && channel.count(':') >= 2) {