diff --git a/index.js b/index.js
index 768d0e7..ebaf1aa 100644
--- a/index.js
+++ b/index.js
@@ -2,6 +2,7 @@
 
 var net     = require('net');
 var fs      = require('fs');
+var exec    = require('child_process').exec;
 var async   = require('async');
 var uitl    = require('util');
 var events  = require('events');
@@ -24,6 +25,27 @@ var connectedDevice=[];
 
 function updateValidDevice(callback){
   log("updateValidDevice");
+
+  fs.readdir('/dev', function (err, files) {
+    if (err) {
+      return;
+    }
+
+    //get only serial port  names
+    for (var i = files.length - 1;i>=0;i--){
+      if ((files[i].indexOf('ttyS') === -1 && files[i].indexOf('ttyACM') === -1 && files[i].indexOf('ttyUSB') === -1 && files[i].indexOf('ttyAMA') === -1) || !fs.statSync(path.join('/dev',files[i])).isCharacterDevice()){
+        files.splice(i,1);
+      }
+    }
+
+    async.map(files, function (file, callback) {
+      var fileName = path.join('/dev', file);
+      exec('/sbin/udevadm test $(/sbin/udevadm info -n '+fileName+ ' -q path)', function (err, stdout) {
+        callback();
+      });
+    });
+  });
+
   usbDev.listUsbDevice(function(devList){
       if(devList === undefined){
         console.log("devList undefined");
diff --git a/inst-driver/afg.js b/inst-driver/afg.js
index ea8cd36..0ef02f5 100644
--- a/inst-driver/afg.js
+++ b/inst-driver/afg.js
@@ -321,7 +321,7 @@ var _AfgCtrl = function(afgObj) {
             var pmID = ["pm1","pm2"];
             var sweepID = ["sweep1","sweep2"];
 
-            console.log("afg getSetup");
+            log("afg getSetup");
             for(i=0; i<self.dev.maxChNum; i++){
                 cmd.push({id:chID[i], prop:'FuncType', arg:"", cb:null, method:'get'});
                 cmd.push({id:chID[i], prop:'Freq', arg:"", cb:null, method:'get'});
@@ -379,6 +379,8 @@ var _AfgCtrl = function(afgObj) {
         return new Promise(function(resolve, reject) {
             function setDone(e){
                 if (e) {
+                    log("afg.setSetup error");
+                    log(e);
                     reject(e);
                 }else {
                     resolve();
@@ -392,79 +394,82 @@ var _AfgCtrl = function(afgObj) {
             var pmID = ["pm1","pm2"];
             var sweepID = ["sweep1","sweep2"];
 
-            console.log("afg setSetup");
+            log("afg setSetup");
+            log(setup);
+
             cmd.push({id:"sys", prop: 'RST', arg : "", cb:null, method:'set'});
-            cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+            cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
             for(i=0; i<self.dev.maxChNum; i++){
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:chID[i], prop:'FuncType', arg: setup.chProps[chID[i]].type.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:chID[i], prop:'Freq', arg: setup.chProps[chID[i]].freq.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:chID[i], prop:'Ampl',  arg: setup.chProps[chID[i]].ampl.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:chID[i], prop:'DCOffset', arg: setup.chProps[chID[i]].offset.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:chID[i], prop:'RampSym', arg: setup.chProps[chID[i]].sym.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 if(setup.chProps[chID[i]].state.slice(0,-1) === '0'){
                     cmd.push({id:chID[i], prop:'OutputState', arg: "OFF" , cb:null, method:'set'});
                 }
                 else{
                     cmd.push({id:chID[i], prop:'OutputState', arg: "ON", cb:null, method:'set'});
                 }
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 // cmd.push({id:chID[i], prop:'OutputLoad',arg:"", cb:null,method:'set'});
                 cmd.push({id:chID[i], prop:'SquDuty',arg: setup.chProps[chID[i]].duty.slice(0,-1), cb:null,method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:chID[i], prop:'VoltageUnit',arg: setup.chProps[chID[i]].amplUnit.slice(0,-1), cb:null,method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:amID[i],prop:'AMInteFunc',arg: setup.chProps[chID[i]].modulation.am.shape.slice(0,-1), cb:null,method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:amID[i],prop:'AMInteFreq',arg: setup.chProps[chID[i]].modulation.am.freq.slice(0,-1), cb:null,method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:amID[i], prop:'AMSource', arg: setup.chProps[chID[i]].modulation.am.source.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 if(setup.chProps[chID[i]].modulation.am.state.slice(0,-1) === '0'){
                     cmd.push({id:amID[i], prop:'AMState', arg: "OFF", cb:null, method:'set'});
                 }
                 else{
                     cmd.push({id:amID[i], prop:'AMState', arg: "ON", cb:null, method:'set'});
                 }
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
 
                 cmd.push({id:amID[i], prop:'AMDepth', arg: setup.chProps[chID[i]].modulation.am.depth.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:fmID[i],prop:'FMInteFunc',arg: setup.chProps[chID[i]].modulation.fm.shape.slice(0,-1), cb:null,method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:fmID[i],prop:'FMInteFreq',arg: setup.chProps[chID[i]].modulation.fm.freq.slice(0,-1), cb:null,method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:fmID[i], prop:'FMSource', arg: setup.chProps[chID[i]].modulation.fm.source.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 if(setup.chProps[chID[i]].modulation.fm.state.slice(0,-1) === '0'){
                     cmd.push({id:fmID[i], prop:'FMState', arg: "OFF", cb:null, method:'set'});
                 }
                 else{
                     cmd.push({id:fmID[i], prop:'FMState', arg: "ON", cb:null, method:'set'});
                 }
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:fmID[i], prop:'FMDeviation', arg: setup.chProps[chID[i]].modulation.fm.deviation.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
 
                 cmd.push({id:pmID[i],prop:'PMInteFunc',arg: setup.chProps[chID[i]].modulation.pm.shape.slice(0,-1), cb:null,method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:pmID[i],prop:'PMInteFreq',arg: setup.chProps[chID[i]].modulation.pm.freq.slice(0,-1), cb:null,method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:pmID[i], prop:'PMSource', arg: setup.chProps[chID[i]].modulation.pm.source.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 if(setup.chProps[chID[i]].modulation.pm.state.slice(0,-1) === '0'){
                     cmd.push({id:pmID[i], prop:'PMState', arg: "OFF", cb:null, method:'set'});
                 }
                 else{
                     cmd.push({id:pmID[i], prop:'PMState', arg: "ON", cb:null, method:'set'});
                 }
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:pmID[i], prop:'PMDeviation', arg: setup.chProps[chID[i]].modulation.pm.deviation.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
 
                 if(setup.chProps[chID[i]].sweep.state.slice(0,-1) === '0'){
                     cmd.push({id:sweepID[i], prop:'SweepState', arg: "OFF", cb:null, method:'set'});
@@ -472,28 +477,28 @@ var _AfgCtrl = function(afgObj) {
                 else{
                     cmd.push({id:sweepID[i], prop:'SweepState', arg: "ON", cb:null, method:'set'});
                 }
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:sweepID[i], prop:'SweepFrqStart', arg: setup.chProps[chID[i]].sweep.startfreq.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:sweepID[i], prop:'SweepFrqStop',  arg: setup.chProps[chID[i]].sweep.stopfreq.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:sweepID[i], prop:'SweepFrqCenter', arg: setup.chProps[chID[i]].sweep.centerfreq.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:sweepID[i], prop:'SweepFrqSpan', arg: setup.chProps[chID[i]].sweep.span.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:sweepID[i], prop:'SweepSpacing', arg: setup.chProps[chID[i]].sweep.type.slice(0,-1), cb:null, method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:sweepID[i], prop:'SweepTime',arg: setup.chProps[chID[i]].sweep.swptime.slice(0,-1), cb:null,method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:sweepID[i], prop:'SweepSource',arg: setup.chProps[chID[i]].sweep.source.slice(0,-1), cb:null,method:'set'});
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 if(setup.chProps[chID[i]].sweep.marker.slice(0,-1) === '0'){
                     cmd.push({id:sweepID[i], prop:'SweepMarker',arg: "OFF", cb:null,method:'set'});
                 }
                 else{
                     cmd.push({id:sweepID[i], prop:'SweepMarker',arg: "ON", cb:null,method:'set'});
                 }
-                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 300, cb:null, method:'set'});
+                cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 400, cb:null, method:'set'});
                 cmd.push({id:sweepID[i], prop:'SweepMarkerFreq',arg: setup.chProps[chID[i]].sweep.markerfreq.slice(0,-1), cb:null,method:'set'});
 
             }
diff --git a/inst-driver/dmm.js b/inst-driver/dmm.js
index 5ecf540..8d2f474 100644
--- a/inst-driver/dmm.js
+++ b/inst-driver/dmm.js
@@ -187,7 +187,7 @@ var _DmmCtrl = function(dmmObj) {
             };
             var cmd=[];
 
-            console.log("dmm getSetup");
+            log("dmm getSetup");
             cmd.push({id:"sys", prop:'Function', arg:"", cb:null, method:'get'});
             cmd.push({id:"sys", prop:'AutoRange', arg:"", cb:null, method:'get'});
             cmd.push({id:"conf", prop:'QueryRange',  arg:"", cb:getDone, method:'get'});
@@ -204,6 +204,8 @@ var _DmmCtrl = function(dmmObj) {
         return new Promise(function(resolve, reject) {
             function setDone(e){
                 if (e) {
+                    log("dmm.setSetup error");
+                    log(e);
                     reject(e);
                 }else {
                     resolve();
@@ -213,7 +215,9 @@ var _DmmCtrl = function(dmmObj) {
             var func;
             var range;
 
-            console.log("dmm setSetup");
+            log("dmm setSetup");
+            log(setup);
+
             if(setup.func.slice(0,-2) === "VOLT"){
                 func="\"VOLT\"";
                 range='RangeVoltDC';
diff --git a/inst-driver/dso.js b/inst-driver/dso.js
index 071950e..147449a 100644
--- a/inst-driver/dso.js
+++ b/inst-driver/dso.js
@@ -622,7 +622,9 @@ var _DsoCtrl = function(dsoObj) {
                         },
                         horProps : {
                             pos : self.hor.position,
-                            scale : self.hor.scale
+                            mode : self.hor.mode,
+                            scale : self.hor.scale,
+                            zscale : self.hor.zscale,
                         },
                         acqProps : {
                             mode : self.acq.mode,
@@ -649,6 +651,8 @@ var _DsoCtrl = function(dsoObj) {
             }
             cmd.push({id:'hor',prop:'HorScale',arg:"", cb:null,method:'get'});
             cmd.push({id:'hor',prop:'HorPosition',arg:"", cb:null,method:'get'});
+            cmd.push({id:'hor',prop:'HorMode',arg: "", cb:null,method:'get'});
+            cmd.push({id:'hor',prop:'HorZoomScale',arg: "", cb:null,method:'get'});
             cmd.push({id:'acq', prop:'AcqMode', arg:"", cb:null, method:'get'});
             cmd.push({id:'acq', prop:'AcqAverage', arg:"", cb:null, method:'get'});
             cmd.push({id:'acq', prop:'AcqRecLength', arg:"", cb:null, method:'get'});
@@ -675,6 +679,8 @@ var _DsoCtrl = function(dsoObj) {
         return new Promise(function(resolve, reject) {
             function setDone(e){
                 if (e) {
+                    log("dso.setSetup error");
+                    log(e);
                     reject(e);
                 }else {
                     resolve();
@@ -683,7 +689,8 @@ var _DsoCtrl = function(dsoObj) {
             var cmd=[];
             var i;
             var chID=["ch1","ch2","ch3","ch4"];
-            console.log("setSetup");
+            log("dso setSetup");
+            log(setup);
 
             cmd.push({id:'sys',prop:'RST',arg:'',cb:null,method:'set'});
             for(i=0; i<self.dev.maxChNum; i++){
@@ -698,6 +705,8 @@ var _DsoCtrl = function(dsoObj) {
             }
             cmd.push({id:'hor',prop:'HorScale',arg: setup.horProps.scale, cb:null,method:'set'});
             cmd.push({id:'hor',prop:'HorPosition',arg: setup.horProps.pos, cb:null,method:'set'});
+            cmd.push({id:'hor',prop:'HorMode',arg: setup.horProps.mode, cb:null,method:'set'});
+            cmd.push({id:'hor',prop:'HorZoomScale',arg: setup.horProps.zscale, cb:null,method:'set'});
             cmd.push({id:'acq', prop:'AcqMode', arg: setup.acqProps.mode, cb:null, method:'set'});
             cmd.push({id:'acq', prop:'AcqAverage', arg: setup.acqProps.average, cb:null, method:'set'});
             cmd.push({id:'acq', prop:'AcqRecLength', arg: setup.acqProps.length, cb:null, method:'set'});
diff --git a/inst-driver/pwr.js b/inst-driver/pwr.js
index 9bac9aa..e0d3688 100644
--- a/inst-driver/pwr.js
+++ b/inst-driver/pwr.js
@@ -225,7 +225,7 @@ var _PwrCtrl = function(pwrObj) {
             var i;
             var chID=["ch1","ch2","ch3","ch4"];
 
-            console.log("pwr getSetup");
+            log("pwr getSetup");
             cmd.push({id:'sys', prop:'SysRemote', arg:"1", cb:null, method:'set'});
             cmd.push({id:"sys", prop: 'delay_for_a_while', arg : 200, cb:null, method:'set'});
             for(i=0; i<self.dev.maxChNum; i++){
@@ -249,6 +249,8 @@ var _PwrCtrl = function(pwrObj) {
         return new Promise(function(resolve, reject) {
             function setDone(e){
                 if (e) {
+                    log("pwr.setSetup error");
+                    log(e);
                     reject(e);
                 }else {
                     resolve();
@@ -259,8 +261,8 @@ var _PwrCtrl = function(pwrObj) {
             var chID=["ch1","ch2","ch3","ch4"];
             var track;
 
-            console.log("pwr setSetup");
-            console.log(setup);
+            log("pwr setSetup");
+            log(setup);
 
             cmd.push({id:'sys', prop:'SysRemote', arg:"1", cb:null, method:'set'});
             cmd.push({id:'sys', prop:'OUT', arg:"0", cb:null, method:'set'});
