diff --git a/src/com/t_oster/liblasercut/drivers/Marlin.java b/src/com/t_oster/liblasercut/drivers/Marlin.java
index 4cad848d0b09da7802ddeb6b72426fa4013e4fe7..f900a7c9cfaed3ae585cbcd8e5514d8213eb1c70 100644
--- a/src/com/t_oster/liblasercut/drivers/Marlin.java
+++ b/src/com/t_oster/liblasercut/drivers/Marlin.java
@@ -38,9 +38,10 @@ public class Marlin extends GenericGcodeDriver {
     setWaitForOKafterEachLine(true);
     setBaudRate(115200);
     setLineend("CRLF");
-    setInitDelay(10);
-    setPreJobGcode(getPreJobGcode()+",G28 XY,M3");
-    setPostJobGcode(getPostJobGcode()+",G0 X0Y0,M5");
+    setInitDelay(0);
+    setPreJobGcode(getPreJobGcode()+",G28 XY,M5");
+    setPostJobGcode(getPostJobGcode()+",M5,G28 XY");
+    setSerialTimeout(35000);
     
     //Marlin has no way to upload over the network so remove the upload url text
     setHttpUploadUrl("");
@@ -60,7 +61,6 @@ public class Marlin extends GenericGcodeDriver {
     result.addAll(Arrays.asList(super.getPropertyKeys()));
     result.remove(GenericGcodeDriver.SETTING_IDENTIFICATION_STRING);
     result.remove(GenericGcodeDriver.SETTING_WAIT_FOR_OK);
-    result.remove(GenericGcodeDriver.SETTING_BAUDRATE);
     result.remove(GenericGcodeDriver.SETTING_LINEEND);
     result.remove(GenericGcodeDriver.SETTING_INIT_DELAY);
     result.remove(GenericGcodeDriver.SETTING_HTTP_UPLOAD_URL);