diff --git a/src/dynamixelserver_serial.cpp b/src/dynamixelserver_serial.cpp
index 26c6587457aaef4cec887181cf47b5408186548a..2d55c3d434b451d771fb43f33b30a9123e7b1b3c 100644
--- a/src/dynamixelserver_serial.cpp
+++ b/src/dynamixelserver_serial.cpp
@@ -41,15 +41,18 @@ void CDynamixelServerSerial::config_bus(const std::string &device, int baudrate)
 {
   TRS232_config serial_config;
 
-  serial_config.baud=baudrate;
-  serial_config.num_bits=8;
-  serial_config.parity=none;
-  serial_config.stop_bits=1;
-  this->comm_dev=new CRS232(device);
-  this->comm_dev->open((void *)&device);
-  this->comm_dev->config(&serial_config);
-  this->bus_info.baud_rate=baudrate;
-  this->bus_info.device=device;
+  if(this->comm_dev==NULL)
+  {
+    serial_config.baud=baudrate;
+    serial_config.num_bits=8;
+    serial_config.parity=none;
+    serial_config.stop_bits=1;
+    this->comm_dev=new CRS232(device);
+    this->comm_dev->open((void *)&device);
+    this->comm_dev->config(&serial_config);
+    this->bus_info.baud_rate=baudrate;
+    this->bus_info.device=device;
+  }
 }
 
 #ifdef _HAVE_XSD