diff --git a/arduino-core/src/processing/app/Serial.java b/arduino-core/src/processing/app/Serial.java
index 04803f36381..25e10bfd5ce 100644
--- a/arduino-core/src/processing/app/Serial.java
+++ b/arduino-core/src/processing/app/Serial.java
@@ -52,27 +52,35 @@ public Serial() throws SerialException {
       PreferencesData.getInteger("serial.debug_rate", 9600),
       PreferencesData.getNonEmpty("serial.parity", "N").charAt(0),
       PreferencesData.getInteger("serial.databits", 8),
-      PreferencesData.getFloat("serial.stopbits", 1));
+      PreferencesData.getFloat("serial.stopbits", 1),
+      !BaseNoGui.getBoardPreferences().get("serial.disableRTS").equalsIgnoreCase("true"),
+      !BaseNoGui.getBoardPreferences().get("serial.disableDTR").equalsIgnoreCase("true"));
   }
 
   public Serial(int irate) throws SerialException {
     this(PreferencesData.get("serial.port"), irate,
       PreferencesData.getNonEmpty("serial.parity", "N").charAt(0),
       PreferencesData.getInteger("serial.databits", 8),
-      PreferencesData.getFloat("serial.stopbits", 1));
+      PreferencesData.getFloat("serial.stopbits", 1),
+      !BaseNoGui.getBoardPreferences().get("serial.disableRTS").equalsIgnoreCase("true"),
+      !BaseNoGui.getBoardPreferences().get("serial.disableDTR").equalsIgnoreCase("true"));
   }
 
   public Serial(String iname, int irate) throws SerialException {
     this(iname, irate, PreferencesData.getNonEmpty("serial.parity", "N").charAt(0),
       PreferencesData.getInteger("serial.databits", 8),
-      PreferencesData.getFloat("serial.stopbits", 1));
+      PreferencesData.getFloat("serial.stopbits", 1),
+      !BaseNoGui.getBoardPreferences().get("serial.disableRTS").equalsIgnoreCase("true"),
+      !BaseNoGui.getBoardPreferences().get("serial.disableDTR").equalsIgnoreCase("true"));
   }
 
   public Serial(String iname) throws SerialException {
     this(iname, PreferencesData.getInteger("serial.debug_rate", 9600),
       PreferencesData.getNonEmpty("serial.parity", "N").charAt(0),
       PreferencesData.getInteger("serial.databits", 8),
-      PreferencesData.getFloat("serial.stopbits", 1));
+      PreferencesData.getFloat("serial.stopbits", 1),
+      !BaseNoGui.getBoardPreferences().get("serial.disableRTS").equalsIgnoreCase("true"),
+      !BaseNoGui.getBoardPreferences().get("serial.disableDTR").equalsIgnoreCase("true"));
   }
 
   public static boolean touchForCDCReset(String iname) throws SerialException {
@@ -96,7 +104,7 @@ public static boolean touchForCDCReset(String iname) throws SerialException {
     }
   }
 
-  private Serial(String iname, int irate, char iparity, int idatabits, float istopbits) throws SerialException {
+  private Serial(String iname, int irate, char iparity, int idatabits, float istopbits, boolean setRTS, boolean setDTR) throws SerialException {
     //if (port != null) port.close();
     //this.parent = parent;
     //parent.attach(this);
@@ -112,7 +120,7 @@ private Serial(String iname, int irate, char iparity, int idatabits, float istop
     try {
       port = new SerialPort(iname);
       port.openPort();
-      boolean res = port.setParams(irate, idatabits, stopbits, parity, true, true);
+      boolean res = port.setParams(irate, idatabits, stopbits, parity, setRTS, setDTR);
       if (!res) {
         System.err.println(format(tr("Error while setting serial port parameters: {0} {1} {2} {3}"),
                                   irate, iparity, idatabits, istopbits));