diff --git a/tools/ddms/libs/ddmlib/src/com/android/ddmlib/AdbHelper.java b/tools/ddms/libs/ddmlib/src/com/android/ddmlib/AdbHelper.java
index db88f67..7a4d0ad 100644
--- a/tools/ddms/libs/ddmlib/src/com/android/ddmlib/AdbHelper.java
+++ b/tools/ddms/libs/ddmlib/src/com/android/ddmlib/AdbHelper.java
@@ -40,8 +40,6 @@
 
     static final int WAIT_TIME = 5; // spin-wait sleep, in ms
 
-    public static final int STD_TIMEOUT = 5000; // standard delay, in ms
-
     static final String DEFAULT_ENCODING = "ISO-8859-1"; //$NON-NLS-1$
 
     /** do not instantiate */
@@ -576,7 +574,7 @@
      */
     static boolean read(SocketChannel chan, byte[] data) {
        try {
-           read(chan, data, -1, STD_TIMEOUT);
+           read(chan, data, -1, DdmPreferences.getTimeOut());
        } catch (IOException e) {
            Log.d("ddms", "readAll: IOException: " + e.getMessage());
            return false;
@@ -636,7 +634,7 @@
      */
     static boolean write(SocketChannel chan, byte[] data) {
         try {
-            write(chan, data, -1, STD_TIMEOUT);
+            write(chan, data, -1, DdmPreferences.getTimeOut());
         } catch (IOException e) {
             Log.e("ddms", e);
             return false;
diff --git a/tools/ddms/libs/ddmlib/src/com/android/ddmlib/DdmPreferences.java b/tools/ddms/libs/ddmlib/src/com/android/ddmlib/DdmPreferences.java
index c96d40d..8044ab1 100644
--- a/tools/ddms/libs/ddmlib/src/com/android/ddmlib/DdmPreferences.java
+++ b/tools/ddms/libs/ddmlib/src/com/android/ddmlib/DdmPreferences.java
@@ -40,6 +40,8 @@
     public final static int DEFAULT_DEBUG_PORT_BASE = 8600;
     /** Default value for the logcat {@link LogLevel} */
     public final static LogLevel DEFAULT_LOG_LEVEL = LogLevel.ERROR;
+    /** Default timeout values for adb connection (milliseconds) */
+    public static final int DEFAULT_TIMEOUT = 5000; // standard delay, in ms
 
     private static boolean sThreadUpdate = DEFAULT_INITIAL_THREAD_UPDATE;
     private static boolean sInitialHeapUpdate = DEFAULT_INITIAL_HEAP_UPDATE;
@@ -47,6 +49,7 @@
     private static int sSelectedDebugPort = DEFAULT_SELECTED_DEBUG_PORT;
     private static int sDebugPortBase = DEFAULT_DEBUG_PORT_BASE;
     private static LogLevel sLogLevel = DEFAULT_LOG_LEVEL;
+    private static int sTimeOut = DEFAULT_TIMEOUT;
 
     /**
      * Returns the initial {@link Client} flag for thread updates.
@@ -75,7 +78,7 @@
     /**
      * Sets the initial {@link Client} flag for heap updates.
      * <p/>If <code>true</code>, the {@link ClientData} will automatically be updated with
-     * the VM heap information whenever a GC happens. 
+     * the VM heap information whenever a GC happens.
      * <p/>This change takes effect right away, for newly created {@link Client} objects.
      */
     public static void setInitialHeapUpdate(boolean state) {
@@ -137,7 +140,23 @@
 
         Log.setLevel(sLogLevel);
     }
-    
+
+    /**
+     * Returns the timeout to be used in adb connections (milliseconds).
+     */
+    public static int getTimeOut() {
+        return sTimeOut;
+    }
+
+    /**
+     * Sets the timeout value for adb connection.
+     * <p/>This change takes effect for newly created connections only.
+     * @param timeOut the timeout value (milliseconds).
+     */
+    public static void setTimeOut(int timeOut) {
+        sTimeOut = timeOut;
+    }
+
     /**
      * Non accessible constructor.
      */
diff --git a/tools/ddms/libs/ddmlib/src/com/android/ddmlib/EmulatorConsole.java b/tools/ddms/libs/ddmlib/src/com/android/ddmlib/EmulatorConsole.java
index 75347c6..6ac019d 100644
--- a/tools/ddms/libs/ddmlib/src/com/android/ddmlib/EmulatorConsole.java
+++ b/tools/ddms/libs/ddmlib/src/com/android/ddmlib/EmulatorConsole.java
@@ -566,7 +566,7 @@
             }
 
             // write the command
-            AdbHelper.write(mSocketChannel, bCommand, bCommand.length, AdbHelper.STD_TIMEOUT);
+            AdbHelper.write(mSocketChannel, bCommand, bCommand.length, DdmPreferences.getTimeOut());
 
             result = true;
         } catch (IOException e) {
diff --git a/tools/ddms/libs/ddmlib/src/com/android/ddmlib/SyncService.java b/tools/ddms/libs/ddmlib/src/com/android/ddmlib/SyncService.java
index 7abe557..9f6b561 100644
--- a/tools/ddms/libs/ddmlib/src/com/android/ddmlib/SyncService.java
+++ b/tools/ddms/libs/ddmlib/src/com/android/ddmlib/SyncService.java
@@ -222,7 +222,7 @@
             AdbHelper.setDevice(mChannel, mDevice);
 
             byte[] request = AdbHelper.formAdbRequest("sync:"); // $NON-NLS-1$
-            AdbHelper.write(mChannel, request, -1, AdbHelper.STD_TIMEOUT);
+            AdbHelper.write(mChannel, request, -1, DdmPreferences.getTimeOut());
 
             AdbResponse resp = AdbHelper.readAdbResponse(mChannel, false /* readDiagString */);
 
@@ -559,6 +559,9 @@
             ISyncProgressMonitor monitor) {
         byte[] msg = null;
         byte[] pullResult = new byte[8];
+
+        final int timeOut = DdmPreferences.getTimeOut();
+
         try {
             byte[] remotePathContent = remotePath.getBytes(AdbHelper.DEFAULT_ENCODING);
 
@@ -570,11 +573,11 @@
             msg = createFileReq(ID_RECV, remotePathContent);
 
             // and send it.
-            AdbHelper.write(mChannel, msg, -1, AdbHelper.STD_TIMEOUT);
+            AdbHelper.write(mChannel, msg, -1, timeOut);
 
             // read the result, in a byte array containing 2 ints
             // (id, size)
-            AdbHelper.read(mChannel, pullResult, -1, AdbHelper.STD_TIMEOUT);
+            AdbHelper.read(mChannel, pullResult, -1, timeOut);
 
             // check we have the proper data back
             if (checkResult(pullResult, ID_DATA) == false &&
@@ -626,10 +629,10 @@
 
             try {
                 // now read the length we received
-                AdbHelper.read(mChannel, data, length, AdbHelper.STD_TIMEOUT);
+                AdbHelper.read(mChannel, data, length, timeOut);
 
                 // get the header for the next packet.
-                AdbHelper.read(mChannel, pullResult, -1, AdbHelper.STD_TIMEOUT);
+                AdbHelper.read(mChannel, pullResult, -1, timeOut);
             } catch (IOException e) {
                 return new SyncResult(RESULT_CONNECTION_ERROR, e);
             }
@@ -705,6 +708,8 @@
         FileInputStream fis = null;
         byte[] msg;
 
+        final int timeOut = DdmPreferences.getTimeOut();
+
         try {
             byte[] remotePathContent = remotePath.getBytes(AdbHelper.DEFAULT_ENCODING);
 
@@ -733,7 +738,7 @@
         // and send it. We use a custom try/catch block to make the difference between
         // file and network IO exceptions.
         try {
-            AdbHelper.write(mChannel, msg, -1, AdbHelper.STD_TIMEOUT);
+            AdbHelper.write(mChannel, msg, -1, timeOut);
         } catch (IOException e) {
             return new SyncResult(RESULT_CONNECTION_ERROR, e);
         }
@@ -771,7 +776,7 @@
 
             // now write it
             try {
-                AdbHelper.write(mChannel, mBuffer, readCount+8, AdbHelper.STD_TIMEOUT);
+                AdbHelper.write(mChannel, mBuffer, readCount+8, timeOut);
             } catch (IOException e) {
                 return new SyncResult(RESULT_CONNECTION_ERROR, e);
             }
@@ -792,19 +797,19 @@
             msg = createReq(ID_DONE, (int)time);
 
             // and send it.
-            AdbHelper.write(mChannel, msg, -1, AdbHelper.STD_TIMEOUT);
+            AdbHelper.write(mChannel, msg, -1, timeOut);
 
             // read the result, in a byte array containing 2 ints
             // (id, size)
             byte[] result = new byte[8];
-            AdbHelper.read(mChannel, result, -1 /* full length */, AdbHelper.STD_TIMEOUT);
+            AdbHelper.read(mChannel, result, -1 /* full length */, timeOut);
 
             if (checkResult(result, ID_OKAY) == false) {
                 if (checkResult(result, ID_FAIL)) {
                     // read some error message...
                     int len = ArrayHelper.swap32bitFromArray(result, 4);
 
-                    AdbHelper.read(mChannel, mBuffer, len, AdbHelper.STD_TIMEOUT);
+                    AdbHelper.read(mChannel, mBuffer, len, timeOut);
 
                     // output the result?
                     String message = new String(mBuffer, 0, len);
@@ -832,12 +837,12 @@
             // create the stat request message.
             byte[] msg = createFileReq(ID_STAT, path);
 
-            AdbHelper.write(mChannel, msg, -1 /* full length */, AdbHelper.STD_TIMEOUT);
+            AdbHelper.write(mChannel, msg, -1 /* full length */, DdmPreferences.getTimeOut());
 
             // read the result, in a byte array containing 4 ints
             // (id, mode, size, time)
             byte[] statResult = new byte[16];
-            AdbHelper.read(mChannel, statResult, -1 /* full length */, AdbHelper.STD_TIMEOUT);
+            AdbHelper.read(mChannel, statResult, -1 /* full length */, DdmPreferences.getTimeOut());
 
             // check we have the proper data back
             if (checkResult(statResult, ID_STAT) == false) {
