diff --git a/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt b/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt
index 5dc2e55543f4064ec4723f0d8320578bd2e0636f..d62aacace2dfe49da62c05681bdd699e635366c0 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt
+++ b/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt
@@ -20,6 +20,7 @@
       tool chain?
     * seems that the make for building for device doesn't return useful exit code,
       so a run is started even if the build has errors
+    * gcce error parser (gcc seems not to be enough sometimes, and the make tool does not return valid exit codes
 
 * Run Configurations
     * handling of active run config getting disabled not optimal yet
@@ -32,8 +33,8 @@
     * time stamp of copied sisx is ridiculous
     * don't copy the sisx all the time
     * don't hardcode copy destination
-
-* Add compile output parser winscw at least
+    * be able to cancel the copy & install process
+    * isRunning is wrong
 
 * WINSCW tool chain:
     * predefined macros
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
index 2396789d8242c1affa3e99a2996f7d83cc7994df..9dc82b3163df326eff6491c9f6b966db1600a02f 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
@@ -495,10 +495,8 @@ void S60DeviceRunControl::start()
     emit addToOutputWindow(this, tr("Creating %1.sisx ...").arg(QDir::toNativeSeparators(m_baseFileName)));
 
     Q_ASSERT(project);
-    m_toolsDirectory = S60Manager::instance()->devices()->deviceForId(
-            S60Manager::instance()->deviceIdFromDetectionSource(
-            project->qtVersion(project->activeBuildConfiguration())
-            ->autodetectionSource())).epocRoot
+    m_toolsDirectory = S60Manager::instance()->deviceForQtVersion(
+            project->qtVersion(project->activeBuildConfiguration())).toolsRoot
             + "/epoc32/tools";
     QString makesisTool = m_toolsDirectory + "/makesis.exe";
     QString packageFile = QFileInfo(m_baseFileName + ".pkg").fileName();
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
index ac618ef190c9bc581a496ea796d518184dd7319d..28f803e562ff43598cfebb985d6827798a8193a6 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
@@ -143,8 +143,7 @@ void S60EmulatorRunConfiguration::updateTarget()
         return;
     }
 
-    QString baseDir = S60Manager::instance()->devices()->deviceForId(
-            S60Manager::instance()->deviceIdFromDetectionSource(qtVersion->autodetectionSource())).epocRoot;
+    QString baseDir = S60Manager::instance()->deviceForQtVersion(qtVersion).epocRoot;
     QString qmakeBuildConfig = "urel";
     if (projectBuildConfiguration & QtVersion::DebugBuild)
         qmakeBuildConfig = "udeb";
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
index 18cc1a4a0dcd7717f6b576b10056b09ccd689988..614a86c4215a3d02753c95a3e797f4f282517012 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
@@ -148,12 +148,32 @@ void S60Manager::updateQtVersions()
 
 ProjectExplorer::ToolChain *S60Manager::createWINSCWToolChain(const Qt4ProjectManager::QtVersion *version) const
 {
-    QString id = version->autodetectionSource().mid(QString(S60_AUTODETECTION_SOURCE).length()+1);
-    return new WINSCWToolChain(m_devices->deviceForId(id), version->mwcDirectory());
+    return new WINSCWToolChain(deviceForQtVersion(version), version->mwcDirectory());
 }
 
 ProjectExplorer::ToolChain *S60Manager::createGCCEToolChain(const Qt4ProjectManager::QtVersion *version) const
 {
-    QString id = version->autodetectionSource().mid(QString(S60_AUTODETECTION_SOURCE).length()+1);
-    return new GCCEToolChain(m_devices->deviceForId(id));
+    return new GCCEToolChain(deviceForQtVersion(version));
+}
+
+S60Devices::Device S60Manager::deviceForQtVersion(const Qt4ProjectManager::QtVersion *version) const
+{
+    S60Devices::Device device;
+    QString deviceId;
+    if (version->isAutodetected())
+        deviceId = deviceIdFromDetectionSource(version->autodetectionSource());
+    if (deviceId.isEmpty()) { // it's not an s60 autodetected version
+        // have a look if we find the device root anyhow
+        if (QFile::exists(QString::fromLatin1("%1/epoc32").arg(version->path()))) {
+            device.epocRoot = version->path();
+            device.toolsRoot = device.epocRoot;
+            device.qt = device.epocRoot;
+            device.isDefault = false;
+            device.name = QString::fromLatin1("SDK");
+            device.id = QString::fromLatin1("SDK");
+        }
+    } else {
+        device = m_devices->deviceForId(deviceId);
+    }
+    return device;
 }
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.h b/src/plugins/qt4projectmanager/qt-s60/s60manager.h
index 23ce072c07d45be5354a81a3899b5524814fe985..3704771bcd9a3ea1e421c76bb81105f8d8fcc77c 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60manager.h
+++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.h
@@ -32,6 +32,7 @@
 
 #include "qtversionmanager.h"
 #include "serialdevicelister.h"
+#include "s60devices.h"
 
 #include <extensionsystem/iplugin.h>
 #include <projectexplorer/toolchain.h>
@@ -41,7 +42,6 @@
 namespace Qt4ProjectManager {
 namespace Internal {
 
-class S60Devices;
 class S60DevicesPreferencePane;
 class S60EmulatorRunConfigurationFactory;
 class S60EmulatorRunConfigurationRunner;
@@ -60,6 +60,7 @@ public:
     ProjectExplorer::ToolChain *createGCCEToolChain(const Qt4ProjectManager::QtVersion *version) const;
 
     S60Devices *devices() const { return m_devices; }
+    S60Devices::Device deviceForQtVersion(const Qt4ProjectManager::QtVersion *version) const;
     QString deviceIdFromDetectionSource(const QString &autoDetectionSource) const;
 
     SerialDeviceLister *serialDeviceLister() const { return m_serialDeviceLister; }