diff --git a/src/darwin_robot.cpp b/src/darwin_robot.cpp
index 87418a60e9c39765595d36935ff45afbd9e01c24..b3f91afb04d7c6fb30f37e4e74215be666d1f661 100644
--- a/src/darwin_robot.cpp
+++ b/src/darwin_robot.cpp
@@ -457,6 +457,19 @@ unsigned char CDarwinRobot::mm_get_num_servos(void)
     throw CDarwinRobotException(_HERE_,"Invalid robot device");
 }
 
+unsigned int CDarwinRobot::mm_get_present_servos(void)
+{
+  unsigned int present_servos;
+
+  if(this->robot_device!=NULL)
+  {
+    this->robot_device->read_registers(DARWIN_MM_PRESENT_SERVOS1,(unsigned char *)&present_servos,4);
+    return present_servos;
+  }
+  else
+    throw CDarwinRobotException(_HERE_,"Invalid robot device");
+}
+
 void CDarwinRobot::mm_start(void)
 {
   if(this->robot_device!=NULL)
diff --git a/src/darwin_robot.h b/src/darwin_robot.h
index 0e46bc373ea2f4e5ba331444bfeac0c5b239de93..af91eadc9221bdd59b6ebd15dccbbdf416bc3819 100644
--- a/src/darwin_robot.h
+++ b/src/darwin_robot.h
@@ -83,6 +83,7 @@ class CDarwinRobot
     void mm_set_period(double period_ms);
     double mm_get_period(void);
     unsigned char mm_get_num_servos(void);
+    unsigned int mm_get_present_servos(void);
     void mm_start(void);
     void mm_stop(void);
     bool mm_is_running(void);
diff --git a/src/examples/darwin_action_test.cpp b/src/examples/darwin_action_test.cpp
index 7afacc4de3fc361a5d09bc9862c7db05a53e3036..740e75f3a405e91cb6937e1650c4f4b861774e78 100644
--- a/src/examples/darwin_action_test.cpp
+++ b/src/examples/darwin_action_test.cpp
@@ -10,15 +10,19 @@ std::string robot_device="A4008atn";
 int main(int argc, char *argv[])
 {
   int i=0,num_servos;
+  unsigned int present_servos;
 
   try{
     CDarwinRobot darwin("Darwin",robot_device,1000000,0x02);
 
     num_servos=darwin.mm_get_num_servos();
+    present_servos=darwin.mm_get_present_servos();
     std::cout << "Found " << num_servos << " servos " << std::endl;
+    std::cout << "Present servos: " << std::hex << "0x" << present_servos << std::dec << std::endl;
     // enable all servos and assign them to the action module
     darwin.mm_enable_power();
-    for(i=1;i<=num_servos;i++)
+    sleep(1);
+    for(i=0;i<MAX_NUM_SERVOS;i++)
     {
       darwin.mm_enable_servo(i);
       darwin.mm_assign_module(i,DARWIN_MM_ACTION);
@@ -28,7 +32,10 @@ int main(int argc, char *argv[])
     darwin.action_load_page(WALK_READY);
     darwin.action_start();
     while(darwin.action_is_page_running())
+    {
+      std::cout << "action running ... " << std::endl;
       usleep(100000);
+    }
     darwin.mm_stop();
     darwin.mm_disable_power();
   }catch(CException &e){