diff --git a/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/motor-ctrl b/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/motor-ctrl
index 3f8f2ca..9607453 100755
--- a/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/motor-ctrl
+++ b/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/motor-ctrl
@@ -20,27 +20,6 @@
     return 0
 }
 
-#Get i2c bus number for sledN
-function get_bus_num() {
-    SLED_NUM=$1
-    local bus=0
-
-    if [[ "$SLED_NUM" = [0-5] ]]; then
-        bus="$SLED_NUM"
-    fi
-    echo "$bus"
-}
-
-#Enable sledN Motor VRef
-function open_vref() {
-    i2cset -f -y "${1}" 0x67 0x06 0x95
-}
-
-#Disable sledN Motor VRef
-function close_vref() {
-    i2cset -f -y "${1}" 0x67 0x06 0x55
-}
-
 #######################################
 # Setting step motor control pins to start/stop motor
 # Arguments:
@@ -48,14 +27,17 @@
 #   2. Value of STBY RESET PIN
 #   3. Value of ENABLE PIN
 #   4. Value of DIRECTION PIN
+#   5. Value of Motor Driver VREF PIN
 #######################################
 function set_motor() {
     STBY_PIN="SLED${1}_MD_STBY_RESET"
     EN_PIN="SLED${1}_MD_IOEXP_EN_FAULT"
     DIR_PIN="SLED${1}_MD_DIR"
+    VREF_PIN="SLED${1}_MD_REF_PWM"
     set_gpio "$STBY_PIN" "$2"
     set_gpio "$EN_PIN"   "$3"
     set_gpio "$DIR_PIN"  "$4"
+    set_gpio "$VREF_PIN" "$5"
 }
 
 function show_usage(){
@@ -73,7 +55,6 @@
 if [[ "$1" =~ ^(slot[0-5]{1})$ ]] || [[ "$1" =~ ^(sled[0-5]{1})$ ]]; then
     SLED=$1
     SLED_NUM=${SLED:4}
-    I2C_NUM=$(get_bus_num "$SLED_NUM")
     ACTION=$2
 else
      echo "invalid sled name: $1"
@@ -82,16 +63,13 @@
 
 if [[ "$ACTION" == "s" ]]; then
     echo "stop motor"
-    set_motor "$SLED_NUM" 1 0 0
-    close_vref "$I2C_NUM"
+    set_motor "$SLED_NUM" 1 0 0 1
 elif [[ "$ACTION" == "f" ]];then
     echo "start motor, direction:forward"
-    set_motor  "$SLED_NUM" 1 1 0
-    open_vref "$I2C_NUM"
+    set_motor "$SLED_NUM" 1 1 0 0
 elif [[ "$ACTION" == "r" ]];then
     echo "start motor, direction:reverse"
-    set_motor "$SLED_NUM" 1 1 1
-    open_vref "$I2C_NUM"
+    set_motor "$SLED_NUM" 1 1 1 0
 else
     echo "Error: Unknown action!"
     exit 1
diff --git a/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/motor-init b/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/motor-init
index cecb996..60de76b 100755
--- a/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/motor-init
+++ b/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/motor-init
@@ -7,79 +7,42 @@
 
 export PATH=$PATH:/usr/libexec
 
-PWM_BASE_ADDR="0x1e61"
-DEV_FILE="/dev/mem"
+PWM_CLASS_PATH="/sys/class/pwm/pwmchip0"
+#Sleld 0~5 using bmc pwm8~13 as motor driver stick
+PWM_NUM_OFFSET=8
+PWM_PERIOD=2500000 #400HZ
+PWM_DUTY=250000    #PWM_PERIOD X 10%
 CALIBRATE_TIMEOUT=120
 
-#Get pwm register address for sledN
-function get_pwm_offset() {
-  local offset=0
-  case $1 in
-    0)
-      offset="0080"
-    ;;
-    1)
-      offset="0090"
-    ;;
-    2)
-      offset="00a0"
-    ;;
-    3)
-      offset="00b0"
-    ;;
-    4)
-      offset="00c0"
-    ;;
-    5)
-      offset="00d0"
-    ;;
-  esac
-
-  echo ${PWM_BASE_ADDR}${offset}
-}
-
-#Get pwm duty register address for sledN
-function get_duty_offset() {
-  local offset=0
-  case $1 in
-    0)
-      offset="0084"
-    ;;
-    1)
-      offset="0094"
-    ;;
-    2)
-      offset="00a4"
-    ;;
-    3)
-      offset="00b4"
-    ;;
-    4)
-      offset="00c4"
-    ;;
-    5)
-      offset="00d4"
-    ;;
-  esac
-
-  echo ${PWM_BASE_ADDR}${offset}
-}
-
 #Enable pwm for sledN
 function open_pwm() {
     local SLED_NUM="$1"
     echo "Open pwm of sled$SLED_NUM"
-    #enable BMC PWM
-    if [ ! -c "$DEV_FILE" ]; then
-       mknod /dev/mem c 1 1
+    PWM_NUM=$(( SLED_NUM + PWM_NUM_OFFSET ))
+    PWM_PATH="${PWM_CLASS_PATH}/pwm${PWM_NUM}"
+    if [ ! -d "$PWM_PATH" ];then
+        echo "$PWM_NUM" > "${PWM_CLASS_PATH}/export"
     fi
+    if [ -d "$PWM_PATH" ];then
+        echo "set pwm period to $PWM_PERIOD ns"
+        if ! echo "$PWM_PERIOD" > "${PWM_PATH}/period"; then
+            echo "Error: set pwm period fail"
+            return 1
+        fi
 
-    PWM_OFFSET=$(get_pwm_offset "$SLED_NUM")
-    DUTY_OFFSET=$(get_duty_offset "$SLED_NUM")
-    echo "setting ${PWM_OFFSET} to 0x000113F3"
-    echo "setting ${DUTY_OFFSET} to 0xFF006400"
-    devmem "$PWM_OFFSET"  32 0x000113F3
-    devmem "$DUTY_OFFSET" 32 0xFF006400
+        if ! echo 1 > "${PWM_PATH}/enable"; then
+            echo "Error: set pwm enable fail"
+            return 1
+        fi
+
+        if ! echo "$PWM_DUTY" > "${PWM_PATH}/duty_cycle"; then
+            echo "Error: set pwm duty_cycle fail"
+            return 1
+        fi
+    else
+        echo "Error: ${PWM_PATH} not exist, export pwm${PWM_NUM} fail"
+        return 1
+    fi
 }
 
 function set_gpio()
diff --git a/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl b/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl
index 111ce8b..eebe50c 100755
--- a/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl
+++ b/meta-facebook/meta-bletchley/recipes-bletchley/motor-ctrl/files/power-ctrl
@@ -28,7 +28,7 @@
 
 function trigger_power_button() {
     local sled_num=$1
-    local  delay_time=$2
+    local delay_time=$2
 
     #SLED{N}_MS_DETECT1  (initial position)
     GPIO_DETECT_PIN1="SLED${sled_num}_MS_DETECT1"
@@ -45,7 +45,7 @@
         echo "Press power key for Sled${1} ${delay_time} seconds..."
         sleep "$delay_time"
     else
-        echo "Power key switch not trigger, back motor to initail position"
+        echo "Power key switch not trigger, back motor to initial position"
     fi
 
     motor-ctrl "sled${sled_num}" r >/dev/null
@@ -54,7 +54,7 @@
     if [ "$(get_gpio  "$GPIO_DETECT_PIN1")" -eq 0 ];then
         echo "Motor reverse to initial position successful"
     else
-        echo "Initail position switch not trigger, force stop motor"
+        echo "Initial position switch not trigger, force stop motor"
     fi
 }
 
