docs: function sendCommand(js,cb){
      if(!js) return stream.log('send command got no command!',js);
      var id = ++stream.inc;
      if(!js.id) js.id = 0;// default input id.
  
      var start = Date.now();
      var timeCallback = function(err,js){
        js.basetime = Date.now()-start;// decorate performance time.
        if(cb) cb(err,js)
      }
  
      if(js.timeout == undefined) js.timeout = 10000;
      else if(js.timeout < 0) {
        js.timeout = 60000;// 60 seconds max timeout
      } else if(js.timeout > 60000){
        js.timeout = 60000; 
      }
      
      var timeout = js.timeout;
      setTimeout(function(){
        if(stream.callbacks[id]) {
          // make reply js
          js.type = "reply";
          js.err = "base timeout in "+timeout+" ms";
          js.timeout = timeout;
          js.timeerror = true;
          js.from = js.to;
          delete js.to;
          timeCallback(true,js);
        }
      },timeout);
  
      stream.callbacks[id] = {id:js.id,cb:timeCallback};
      js.id = id;
  
      if(stream.inc > maxId) stream.inc = 1;
  
      js.type = "command";
      toBoard.write(js);
    
      return js;
    }