diff --git a/src/usb_ftdi/ftdimodule.cpp b/src/usb_ftdi/ftdimodule.cpp
index 33bd12fbee70c181d5992a36c5b10e6d52e63495..4137d05b3569ab5672396bd50cbcd56ac585d701 100644
--- a/src/usb_ftdi/ftdimodule.cpp
+++ b/src/usb_ftdi/ftdimodule.cpp
@@ -104,7 +104,12 @@ void CFTDI::hard_config(void *config)
       /* handle exceptions */
       throw CFTDIException(_HERE_,error_messages[ft_status],this->comm_id);
     }
-    usleep(100);
+    usleep(1000000);
+    if((ft_status=FT_SetBitMode(this->ft_handle,0xFF,0x40))!=FT_OK)
+    {
+      /* handle exceptions */
+      throw CFTDIException(_HERE_,error_messages[ft_status],this->comm_id);
+    }
 
     if((ft_status=FT_SetLatencyTimer(this->ft_handle,2))!=FT_OK)
     {
@@ -123,7 +128,7 @@ void CFTDI::hard_config(void *config)
       /* handle exceptions */
       throw CFTDIException(_HERE_,error_messages[ft_status],this->comm_id);
     }
-    if((ft_status=FT_Purge(this->ft_handle,FT_PURGE_RX))!=FT_OK)
+    if((ft_status=FT_Purge(this->ft_handle,FT_PURGE_TX|FT_PURGE_RX))!=FT_OK)
     {
       /* handle exceptions */
       throw CFTDIException(_HERE_,error_messages[ft_status],this->comm_id);