diff --git a/include/darwin_registers.h b/include/darwin_registers.h
index 8815856bf1d7862dddd99bf8d791207ed46e438d..b89b2630e8fbea42d060436f20505d1b3bba3e0c 100644
--- a/include/darwin_registers.h
+++ b/include/darwin_registers.h
@@ -539,7 +539,50 @@ typedef enum {
   DARWIN_HEAD_MIN_TILT_L           = 0x0243, // angle in fixed point format 9|7
   DARWIN_HEAD_MIN_TILT_H           = 0x0244,
   DARWIN_HEAD_TILT_TARGET_L        = 0x0245, // angle in fixed point format 9|7
-  DARWIN_HEAD_TILT_TARGET_H        = 0x0246
+  DARWIN_HEAD_TILT_TARGET_H        = 0x0246,
+  DARWIN_BATT_CHARGER_STATUS       = 0x0247,
+  DARWIN_BATT_INPUT_CURRENT_L      = 0x0248,
+  DARWIN_BATT_INPUT_CURRENT_H      = 0x0249,
+  DARWIN_BATT_CHARGE_CURRENT_L     = 0x024A,
+  DARWIN_BATT_CHARGE_CURRENT_H     = 0x024B,
+  DARWIN_BATT_CHARGE_VOLTAGE_L     = 0x024C,
+  DARWIN_BATT_CHARGE_VOLTAGE_H     = 0x024D,
+  DARWIN_BATT_LIMIT_CURRENT_L      = 0x024E,
+  DARWIN_BATT_LIMIT_CURRENT_H      = 0x024F,
+  DARWIN_BATT_TEMPERATURE_L        = 0x0250,
+  DARWIN_BATT_TEMPERATURE_H        = 0x0251,
+  DARWIN_BATT_VOLTAGE_L            = 0x0252,
+  DARWIN_BATT_VOLTAGE_H            = 0x0253,
+  DARWIN_BATT_CURRENT_L            = 0x0254,
+  DARWIN_BATT_CURRENT_H            = 0x0255,
+  DARWIN_BATT_AVG_CURRENT_L        = 0x0256,
+  DARWIN_BATT_AVG_CURRENT_H        = 0x0257,
+  DARWIN_BATT_RELATIVE_SOC         = 0x0258,
+  DARWIN_BATT_ABSOLUTE_SOC         = 0x0259,
+  DARWIN_BATT_REMAINING_CAP_L      = 0x025A,
+  DARWIN_BATT_REMAINING_CAP_H      = 0x025B,
+  DARWIN_BATT_FULL_CHARGE_CAP_L    = 0x025C,
+  DARWIN_BATT_FULL_CHARGE_CAP_H    = 0x025D,
+  DARWIN_BATT_RUN_TIME_EMPTY_L     = 0x025E,
+  DARWIN_BATT_RUN_TIME_EMPTY_H     = 0x025F,
+  DARWIN_BATT_AVG_TIME_EMPTY_L     = 0x0260,
+  DARWIN_BATT_AVG_TIME_EMPTY_H     = 0x0261,
+  DARWIN_BATT_AVG_TIME_FULL_L      = 0x0262,
+  DARWIN_BATT_AVG_TIME_FULL_H      = 0x0263,
+  DARWIN_BATT_STATUS_L             = 0x0264,
+  DARWIN_BATT_STATUS_H             = 0x0265,
+  DARWIN_BATT_DESIGN_CAP_L         = 0x0266,
+  DARWIN_BATT_DESIGN_CAP_H         = 0x0267,
+  DARWIN_BATT_DESIGN_VOLTAGE_L     = 0x0268,
+  DARWIN_BATT_DESIGN_VOLTAGE_H     = 0x0269,
+  DARWIN_BATT_CELL1_VOLTAGE_L      = 0x026A,
+  DARWIN_BATT_CELL1_VOLTAGE_H      = 0x026B,
+  DARWIN_BATT_CELL2_VOLTAGE_L      = 0x026C,
+  DARWIN_BATT_CELL2_VOLTAGE_H      = 0x026D,
+  DARWIN_BATT_CELL3_VOLTAGE_L      = 0x026E,
+  DARWIN_BATT_CELL3_VOLTAGE_H      = 0x026F,
+  DARWIN_BATT_CELL4_VOLTAGE_L      = 0x0270,
+  DARWIN_BATT_CELL4_VOLTAGE_H      = 0x0271
 } darwin_registers;
 
 #define      GPIO_BASE_ADDRESS       0x0100
diff --git a/src/motion_manager.c b/src/motion_manager.c
index 8e2ff6e255a9a1f0d264a45e61d75ea2944839e9..227517f904007c2ab8484c765c5e33ba1d7878f0 100755
--- a/src/motion_manager.c
+++ b/src/motion_manager.c
@@ -1,4 +1,5 @@
 #include "darwin_dyn_master.h"
+#include "darwin_dyn_master_v2.h"
 #include "motion_manager.h"
 #include "dyn_servos.h"
 #include "ram.h"
@@ -179,12 +180,13 @@ void manager_init(uint16_t period_us)
 
   /* initialize the dynamixel master module for the servos */
   darwin_dyn_master_init();
+  darwin_dyn_master_v2_init();
 
   ram_data[DARWIN_MM_CNTRL]|=MANAGER_SCANNING;
   // enable power to the servos
   darwin_dyn_master_enable_power();
   HAL_Delay(1000);
-  // detect the servos connected 
+  // detect the servos connected on the v1 bus
   dyn_master_scan(&darwin_dyn_master,&num,servo_ids); 
   ram_data[DARWIN_MM_NUM_SERVOS]=num;
   manager_num_servos=0;
@@ -299,6 +301,10 @@ void manager_init(uint16_t period_us)
   ram_data[DARWIN_MM_PRESENT_SERVOS3]=((present_servos&0x00FF0000)>>16);
   ram_data[DARWIN_MM_PRESENT_SERVOS4]=((present_servos&0xFF000000)>>24);
   darwin_dyn_master_disable_power();
+
+  // detect the servos connected on the v2 bus
+  dyn_master_scan(&darwin_dyn_master_v2,&num,servo_ids); 
+
   ram_data[DARWIN_MM_CNTRL]&=(~MANAGER_SCANNING);
 
   /* configure timer */