diff --git a/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/init_once.sh b/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/init_once.sh
index 2ea02ef..71116fb 100644
--- a/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/init_once.sh
+++ b/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/init_once.sh
@@ -1,60 +1,58 @@
 #!/bin/bash
 
+source /usr/libexec/nvme_powerctrl_library.sh
+
 function set_gpio() {
   #$1 gpio pin
   echo $1 > /sys/class/gpio/export
 }
 
-function set_gpio_direction(){
-    #$1 gpio pin, $2 'in','high','low'
-    echo $2 > /sys/class/gpio/gpio$1/direction
-}
+echo "Read Clock Gen Value is: $CLOCK_GEN_VALUE"
 
-function read_gpio_input(){
-    #$1 read input gpio pin
-    cat /sys/class/gpio/gpio$1/value
-}
-
-function read_present_set_related_power(){
-    #$1 read present gpio, $2 output power gpio,$3 output direction
-    var=$(cat /sys/class/gpio/gpio$1/value)
-    # present 0 is plugged,present 1 is removal
-    if [ "$var" == "0" ];then
-        set_gpio_direction $2 "high"
-    else 
-        set_gpio_direction $2 "low"
-    fi
-}
-
-
-## Initial U2_PRESNET_N
-U2_PRESENT=( 148 149 150 151 152 153 154 155 )
-for i in "${U2_PRESENT[@]}";
-do 
-    set_gpio $i;
-    set_gpio_direction $i 'in';
+## Initial U2_PRESENT_N
+for i in ${!U2_PRESENT[@]};
+do
+    set_gpio ${U2_PRESENT[$i]};
+    set_gpio_direction ${U2_PRESENT[$i]} 'in';
+    echo "Read $i SSD present: $(read_gpio_input ${U2_PRESENT[$i]})"
 done
 
 ## Initial POWER_U2_EN
-POWER_U2=( 195 196 202 199 198 197 127 126 )
-for i in "${POWER_U2[@]}";
+for i in ${!POWER_U2[@]};
 do
-    set_gpio $i;
+    set_gpio ${POWER_U2[$i]};
 done
 
 ## Initial PWRGD_U2
-PWRGD_U2=( 161 162 163 164 165 166 167 168 )
-for i in "${PWRGD_U2[@]}";
-do 
-    set_gpio $i;
-    set_gpio_direction $i 'in';
+for i in ${!PWRGD_U2[@]};
+do
+    set_gpio ${PWRGD_U2[$i]};
+    set_gpio_direction ${PWRGD_U2[$i]} 'in';
+    echo "Read $i SSD Power Good: $(read_gpio_input ${PWRGD_U2[$i]})"
 done
 
-### Initial SSD Power reference U2_PRESNET_N
+## Initial RST_BMC_U2
+for i in ${!RST_BMC_U2[@]};
+do
+    set_gpio ${RST_BMC_U2[$i]};
+done
+
+### Initial related Power by Present
 for i in {0..7};
 do
-    read_present_set_related_power "${U2_PRESENT[$i]}" "${POWER_U2[$i]}";
-done 
+    update_value=$(printf '%x\n' "$((0x01 <<$i))")
+    if [ $(read_gpio_input ${U2_PRESENT[$i]}) == $PLUGGED ];then
+        CLOCK_GEN_VALUE=$(printf '0x%x\n' \
+        "$(($CLOCK_GEN_VALUE | 0x$update_value))")
+    else
+        set_gpio_direction "${RST_BMC_U2[$1]}" "low"
+        set_gpio_direction "${POWER_U2[$1]}" "low"
 
+        CLOCK_GEN_VALUE=$(printf '0x%x\n' \
+        "$(($CLOCK_GEN_VALUE & ~0x$update_value))")
+    fi
+done
+i2cset -y $I2C_BUS $CHIP_ADDR 0 $CLOCK_GEN_VALUE s
+echo "Read Clock Gen Value again is: $CLOCK_GEN_VALUE"
 
-exit 0;
\ No newline at end of file
+exit 0;
diff --git a/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh b/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh
index 91beec5..753c6c4 100644
--- a/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh
+++ b/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powermanager.sh
@@ -1,73 +1,47 @@
 #!/bin/bash
 
+source /usr/libexec/nvme_powerctrl_library.sh
 U2_PRESENT_STATUS=( 1 1 1 1 1 1 1 1 )
-U2_PRESENT=( 148 149 150 151 152 153 154 155 )
-POWER_U2=( 195 196 202 199 198 197 127 126 )
-PWRGD_U2=( 161 162 163 164 165 166 167 168 )
 
-
-function set_gpio_direction(){
-    #$1 gpio pin, $2 'in','high','low'
-    echo $2 > /sys/class/gpio/gpio$1/direction
+function recovery_power()
+{
+    set_gpio_direction "${POWER_U2[$1]}" "low"
+    sleep 0.2
+    set_gpio_direction "${POWER_U2[$1]}" "high"
+    sleep 0.2
+    check_powergood $1
 }
 
-function read_present_set_related_power(){
-    #$1 read present number, $2 output power gpio
-    var="${U2_PRESENT_STATUS[$1]}"
-    # present 0 is plugged,present 1 is removal
-    if [ "$var" == "0" ];then
-        set_gpio_direction $2 "high"
-    else 
-        set_gpio_direction $2 "low"
-    fi
-}
-
-function update_u2_status(){
-  #$1 read present gpio
-  var=$(cat /sys/class/gpio/gpio$2/value)
-  U2_PRESENT_STATUS[$1]="$var"
-}
-
-function check_present_and_powergood(){
-    #$2 present gpio, $3 powergood gpio
-    present=$(cat /sys/class/gpio/gpio$2/value)
-    pwrgd=$(cat /sys/class/gpio/gpio$3/value)
-    path=`expr $1`
-    if [ "$present" -eq 0 ] && [ "$pwrgd" -eq 1 ];then        
-        busctl set-property xyz.openbmc_project.nvme.manager /xyz/openbmc_project/nvme/$path xyz.openbmc_project.Inventory.Item Present b true
-    else        
-        busctl set-property xyz.openbmc_project.nvme.manager /xyz/openbmc_project/nvme/$path xyz.openbmc_project.Inventory.Item Present b false
-            if [ "$present" -eq "$pwrgd" ];then
-                #set fault led
-                busctl set-property xyz.openbmc_project.LED.GroupManager /xyz/openbmc_project/led/groups/led\_u2\_$1\_fault xyz.openbmc_project.Led.Group Asserted b true
-            else
-                busctl set-property xyz.openbmc_project.LED.GroupManager /xyz/openbmc_project/led/groups/led\_u2\_$1\_fault xyz.openbmc_project.Led.Group Asserted b false
-            fi
-        
-    fi
-    
-
-}
 
 ##Initial U2 present status
 for i in {0..7};
-do 
-    update_u2_status $i "${U2_PRESENT[$i]}"
+do
+    U2_PRESENT_STATUS[$i]=$(read_gpio_input ${U2_PRESENT[$i]})
 done
 
-
 ## Loop while
 while :
 do
   for i in {0..7};
   do
-    ## 1 scend scan all loop
+    ## 1 second scan all loop
     sleep 0.125
-    read=$(cat /sys/class/gpio/gpio${U2_PRESENT[$i]}/value)
-    if [ "${U2_PRESENT_STATUS[$1]}" != read ];then
-        update_u2_status $i "${U2_PRESENT[$i]}"
-        read_present_set_related_power $i "${POWER_U2[$i]}"
-        check_present_and_powergood $i "${U2_PRESENT[$i]}" "${POWER_U2[$i]}"
-    fi 
+    read_present=$(read_gpio_input ${U2_PRESENT[$i]})
+    if [ "$read_present" != "${U2_PRESENT_STATUS[$i]}" ];then
+        U2_PRESENT_STATUS[$i]="$read_present"
+        if [ "$read_present" == $PLUGGED ];then
+            echo "NVME $i Enable Power"
+            enable_nvme_power $i
+        else
+            echo "NVME $i Disable Power"
+            disable_nvme_power $i
+        fi
+    else
+        if [ "${U2_PRESENT_STATUS[$i]}" == $PLUGGED ] &&
+           [ $(read_gpio_input ${PWRGD_U2[$i]}) == 0 ];then
+            echo "NVME $i Recovery Power"
+            recovery_power $i
+        fi
+    fi
   done
 done
