diff --git a/tools/bin/komodo-modems-update b/tools/bin/komodo-modems-update
new file mode 100755
index 0000000..fa46b3a
--- /dev/null
+++ b/tools/bin/komodo-modems-update
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+set -x 
+
+tmp_dir=$(mktemp -d -t komodo-modems-update-XXXXXXXXXX)
+
+cd $tmp_dir
+git clone http://gitlab.kodesumber.com/komodo/komodo-modem-sms.git modem
+cd $tmp_dir/modem
+npm ci;
+
+for i in ACM USB; do
+    seq 0 55| xargs -n1 -P 5 -I{} /home/komodo/bin/komodo-modems-update-helper $i{} $tmp_dir/modem/node_modules
+    #seq 0 55| xargs -n1 -P 5 -I{} /home/komodo/bin/komodo-modems-update-helper $i{}
+done
+
+rm -rf $tmp_dir
diff --git a/tools/bin/komodo-modems-update-helper b/tools/bin/komodo-modems-update-helper
new file mode 100755
index 0000000..a7f02f6
--- /dev/null
+++ b/tools/bin/komodo-modems-update-helper
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -x
+
+#if [ -z "$2" ]; then
+#   echo Invalid arguments
+#   exit 1
+#fi
+
+[ -d /home/komodo/modems/$1 ] || { echo /home/komodo/modems/$1 does not exits; exit 1; }
+
+# [ -d $2 ] || { echo $2 does not exits; exit 1; }
+
+echo Processing $1
+cd /home/komodo/modems/$1 
+pwd
+echo Pulling for $1
+git pull
+
+[ -n "$2" ] && [ -d $2 ] && { 
+    rm -rf /home/komodo/modems/$1/node_modules/;
+    cp -r $2 /home/komodo/modems/$1
+}
+
+[ -f /home/komodo/modems/$1/pid.txt ] && kill `cat /home/komodo/modems/$1/pid.txt`
+echo $1 finished