diff --git a/src/rcv/ublox.c b/src/rcv/ublox.c
index 16ab5599ac56c9c4f5772fa2f34658d8178af761..67247104250ee2e7dfbef2ede8fdc9388118e620 100644
--- a/src/rcv/ublox.c
+++ b/src/rcv/ublox.c
@@ -88,12 +88,15 @@
 #define FU1         1           /* ubx message field types */
 #define FU2         2
 #define FU4         3
-#define FI1         4
-#define FI2         5
-#define FI4         6
-#define FR4         7
-#define FR8         8
-#define FS32        9
+#define FU8         4
+#define FI1         5
+#define FI2         6
+#define FI4         7
+#define FR4         8
+#define FR8         9
+#define FS32        10
+
+typedef enum { false, true } bool;
 
 #define P2_10       0.0009765625 /* 2^-10 */
 
@@ -105,8 +108,8 @@
 #define U1(p) (*((unsigned char *)(p)))
 #define I1(p) (*((signed char *)(p)))
 static unsigned short U2(unsigned char *p) {unsigned short u; memcpy(&u,p,2); return u;}
-static unsigned int   U4(unsigned char *p) {unsigned int   u; memcpy(&u,p,4); return u;}
-static int            I4(unsigned char *p) {int            u; memcpy(&u,p,4); return u;}
+static unsigned long  U4(unsigned char *p) {unsigned long  u; memcpy(&u,p,4); return u;}
+static int            I4(unsigned char *p) {signed long    u; memcpy(&u,p,4); return u;}
 static float          R4(unsigned char *p) {float          r; memcpy(&r,p,4); return r;}
 static double         R8(unsigned char *p) {double         r; memcpy(&r,p,8); return r;}
 
@@ -115,10 +118,11 @@ static double         I8(unsigned char *p) {return I4(p+4)*4294967296.0+U4(p);}
 /* set fields (little-endian) ------------------------------------------------*/
 static void setU1(unsigned char *p, unsigned char  u) {*p=u;}
 static void setU2(unsigned char *p, unsigned short u) {memcpy(p,&u,2);}
-static void setU4(unsigned char *p, unsigned int   u) {memcpy(p,&u,4);}
+static void setU4(unsigned char *p, unsigned long  u) {memcpy(p,&u,4);}
+/* static void setU8(unsigned char *p, unsigned long long  u) {memcpy(p,&u,8);} */
 static void setI1(unsigned char *p, signed char    i) {*p=(unsigned char)i;}
-static void setI2(unsigned char *p, short          i) {memcpy(p,&i,2);}
-static void setI4(unsigned char *p, int            i) {memcpy(p,&i,4);}
+static void setI2(unsigned char *p, signed short   i) {memcpy(p,&i,2);}
+static void setI4(unsigned char *p, signed long    i) {memcpy(p,&i,4);}
 static void setR4(unsigned char *p, float          r) {memcpy(p,&r,4);}
 static void setR8(unsigned char *p, double         r) {memcpy(p,&r,8);}
 
@@ -1375,6 +1379,7 @@ extern int input_ubxf(raw_t *raw, FILE *fp)
 *            "CFG-TMODE3 ..."
 *            "CFG-TPS   ..."
 *            "CFG-TXSLOT ..."
+*            "CFG-VALSET version layer transaction rsv1 key val"
 *          unsigned char *buff O binary message
 * return : length of binary message (0: error)
 * note   : see reference [1][3] for details.
@@ -1387,13 +1392,13 @@ extern int gen_ubx(const char *msg, unsigned char *buff)
         "PRT","USB","MSG","NMEA","RATE","CFG","TP","NAV2","DAT","INF",
         "RST","RXM","ANT","FXN","SBAS","LIC","TM","TM2","TMODE","EKF",
         "GNSS","ITFM","LOGFILTER","NAV5","NAVX5","ODO","PM2","PWR","RINV","SMGR",
-        "TMODE2","TMODE3","TPS","TXSLOT",""
+        "TMODE2","TMODE3","TPS","TXSLOT","VALSET",""
     };
     const unsigned char id[]={
         0x00,0x1B,0x01,0x17,0x08,0x09,0x07,0x1A,0x06,0x02,
         0x04,0x11,0x13,0x0E,0x16,0x80,0x10,0x19,0x1D,0x12,
         0x3E,0x39,0x47,0x24,0x23,0x1E,0x3B,0x57,0x34,0x62,
-        0x36,0x71,0x31,0x53
+        0x36,0x71,0x31,0x53,0x8A
     };
     const int prm[][32]={
         {FU1,FU1,FU2,FU4,FU4,FU2,FU2,FU2,FU2},    /* PRT */
@@ -1432,11 +1437,13 @@ extern int gen_ubx(const char *msg, unsigned char *buff)
         {FU1,FU1,FU2,FI4,FI4,FI4,FU4,FU4,FU4},    /* TMODE2 */
         {FU1,FU1,FU2,FI4,FI4,FI4,FU4,FU4,FU4},    /* TMODE3 */
         {FU1,FU1,FU1,FU1,FI2,FI2,FU4,FU4,FU4,FU4,FI4,FU4}, /* TPS */
-        {FU1,FU1,FU1,FU1,FU4,FU4,FU4,FU4,FU4}     /* TXSLOT */
+        {FU1,FU1,FU1,FU1,FU4,FU4,FU4,FU4,FU4},     /* TXSLOT */
+        {FU1,FU1,FU1,FU1}                          /* VALSET */ /* Skip configuration for now */
     };
     unsigned char *q=buff;
     char mbuff[1024],*args[32],*p;
     int i,j,n,narg=0;
+    bool isvalset = false;
     
     trace(4,"gen_ubxf: msg=%s\n",msg);
     
@@ -1456,20 +1463,262 @@ extern int gen_ubx(const char *msg, unsigned char *buff)
     *q++=UBXCFG;
     *q++=id[i];
     q+=2;
+
+
+    if (i == 34) isvalset = true;
+
+    /* VALSET sanity check */
+    if (isvalset) {
+        if (narg == 7) narg = narg - 2;     /* Adjusting for key value addition */
+        else return 0;
+    }
     for (j=1;prm[i][j-1]||j<narg;j++) {
         switch (prm[i][j-1]) {
             case FU1 : setU1(q,j<narg?(unsigned char )atoi(args[j]):0); q+=1; break;
             case FU2 : setU2(q,j<narg?(unsigned short)atoi(args[j]):0); q+=2; break;
-            case FU4 : setU4(q,j<narg?(unsigned int  )atoi(args[j]):0); q+=4; break;
+            case FU4 : setU4(q,j<narg?(unsigned long )atoi(args[j]):0); q+=4; break;
+            /* case FU8 : setU8(q,j<narg?(unsigned long long)atoi(args[j]):0); q+=8; break; */
             case FI1 : setI1(q,j<narg?(signed char   )atoi(args[j]):0); q+=1; break;
-            case FI2 : setI2(q,j<narg?(short         )atoi(args[j]):0); q+=2; break;
-            case FI4 : setI4(q,j<narg?(int           )atoi(args[j]):0); q+=4; break;
+            case FI2 : setI2(q,j<narg?(signed short  )atoi(args[j]):0); q+=2; break;
+            case FI4 : setI4(q,j<narg?(signed long   )atoi(args[j]):0); q+=4; break;
             case FR4 : setR4(q,j<narg?(float         )atof(args[j]):0); q+=4; break;
             case FR8 : setR8(q,j<narg?(double)atof(args[j]):0); q+=8; break;
             case FS32: sprintf((char *)q,"%-32.32s",j<narg?args[j]:""); q+=32; break;
             default  : setU1(q,j<narg?(unsigned char )atoi(args[j]):0); q+=1; break;
         }
     }
+    
+    /* Add VALSET cfgData here */
+    if (isvalset) {
+        int k;
+        
+        /* VALSET commands courtesy of gpsd's ubxtool */
+        const char *vcmd[]={
+            "GEOFENCE-CONFLVL", "GEOFENCE-USE_PIO", "GEOFENCE-PINPOL", "GEOFENCE-PIN", "GEOFENCE-USE_FENCE1", "GEOFENCE-FENCE1_LAT", "GEOFENCE-FENCE1_LON", "GEOFENCE-FENCE1_RAD", "GEOFENCE-USE_FENCE2", "GEOFENCE-FENCE2_LAT", 
+            "GEOFENCE-FENCE2_LON", "GEOFENCE-FENCE2_RAD", "GEOFENCE-USE_FENCE3", "GEOFENCE-FENCE3_LAT", "GEOFENCE-FENCE3_LON", "GEOFENCE-FENCE3_RAD", "GEOFENCE-USE_FENCE4", "GEOFENCE-FENCE4_LAT", "GEOFENCE-FENCE4_LON", "GEOFENCE-FENCE4_RAD", 
+            "HW-ANT_CFG_VOLTCTRL", "HW-ANT_CFG_SHORTDET", "HW-ANT_CFG_SHORTDET_POL", "HW-ANT_CFG_OPENDET", "HW-ANT_CFG_OPENDET_POL", "HW-ANT_CFG_PWRDOWN", "HW-ANT_CFG_PWRDOWN_POL", "HW-ANT_CFG_RECOVER", "HW-ANT_SUP_SWITCH_PIN", "HW-ANT_SUP_SHORT_PIN", 
+            "HW-ANT_SUP_OPEN_PIN", "I2C-ADDRESS", "I2C-EXTENDEDTIMEOUT", "I2C-ENABLED", "I2CINPROT-UBX", "I2CINPROT-NMEA", "I2CINPROT-RTCM2X", "I2CINPROT-RTCM3X", "I2COUTPROT-UBX", "I2COUTPROT-NMEA", 
+            "I2COUTPROT-RTCM3X", "INFMSG-UBX_I2C", "INFMSG-UBX_UART1", "INFMSG-UBX_UART2", "INFMSG-UBX_USB", "INFMSG-UBX_SPI", "INFMSG-NMEA_I2C", "INFMSG-NMEA_UART1", "INFMSG-NMEA_UART2", "INFMSG-NMEA_USB", 
+            "INFMSG-NMEA_SPI", "ITFM-BBTHRESHOLD", "ITFM-CWTHRESHOLD", "ITFM-ENABLE", "ITFM-ANTSETTING", "ITFM-ENABLE_AUX", "LOGFILTER-RECORD_ENA", "LOGFILTER-ONCE_PER_WAKE_UP_ENA", "LOGFILTER-APPLY_ALL_FILTERS", "LOGFILTER-MIN_INTERVAL", 
+            "LOGFILTER-TIME_THRS", "LOGFILTER-SPEED_THRS", "LOGFILTER-POSITION_THRS", "MOT-GNSSSPEED_THRS", "MOT-GNSSDIST_THRS", "MSGOUT-NMEA_ID_DTM_I2C", "MSGOUT-NMEA_ID_DTM_SPI", "MSGOUT-NMEA_ID_DTM_UART1", "MSGOUT-NMEA_ID_DTM_UART2", "MSGOUT-NMEA_ID_DTM_USB", 
+            "MSGOUT-NMEA_ID_GBS_I2C", "MSGOUT-NMEA_ID_GBS_SPI", "MSGOUT-NMEA_ID_GBS_UART1", "MSGOUT-NMEA_ID_GBS_UART2", "MSGOUT-NMEA_ID_GBS_USB", "MSGOUT-NMEA_ID_GGA_I2C", "MSGOUT-NMEA_ID_GGA_SPI", "MSGOUT-NMEA_ID_GGA_UART1", "MSGOUT-NMEA_ID_GGA_UART2", "MSGOUT-NMEA_ID_GGA_USB", 
+            "MSGOUT-NMEA_ID_GLL_I2C", "MSGOUT-NMEA_ID_GLL_SPI", "MSGOUT-NMEA_ID_GLL_UART1", "MSGOUT-NMEA_ID_GLL_UART2", "MSGOUT-NMEA_ID_GLL_USB", "MSGOUT-NMEA_ID_GNS_I2C", "MSGOUT-NMEA_ID_GNS_SPI", "MSGOUT-NMEA_ID_GNS_UART1", "MSGOUT-NMEA_ID_GNS_UART2", "MSGOUT-NMEA_ID_GNS_USB", 
+            "MSGOUT-NMEA_ID_GRS_I2C", "MSGOUT-NMEA_ID_GRS_SPI", "MSGOUT-NMEA_ID_GRS_UART1", "MSGOUT-NMEA_ID_GRS_UART2", "MSGOUT-NMEA_ID_GRS_USB", "MSGOUT-NMEA_ID_GSA_I2C", "MSGOUT-NMEA_ID_GSA_SPI", "MSGOUT-NMEA_ID_GSA_UART1", "MSGOUT-NMEA_ID_GSA_UART2", "MSGOUT-NMEA_ID_GSA_USB", 
+            "MSGOUT-NMEA_ID_GST_I2C", "MSGOUT-NMEA_ID_GST_SPI", "MSGOUT-NMEA_ID_GST_UART1", "MSGOUT-NMEA_ID_GST_UART2", "MSGOUT-NMEA_ID_GST_USB", "MSGOUT-NMEA_ID_GSV_I2C", "MSGOUT-NMEA_ID_GSV_SPI", "MSGOUT-NMEA_ID_GSV_UART1", "MSGOUT-NMEA_ID_GSV_UART2", "MSGOUT-NMEA_ID_GSV_USB", 
+            "MSGOUT-NMEA_ID_RMC_I2C", "MSGOUT-NMEA_ID_RMC_SPI", "MSGOUT-NMEA_ID_RMC_UART1", "MSGOUT-NMEA_ID_RMC_UART2", "MSGOUT-NMEA_ID_RMC_USB", "MSGOUT-NMEA_ID_VLW_I2C", "MSGOUT-NMEA_ID_VLW_SPI", "MSGOUT-NMEA_ID_VLW_UART1", "MSGOUT-NMEA_ID_VLW_UART2", "MSGOUT-NMEA_ID_VLW_USB", 
+            "MSGOUT-NMEA_ID_VTG_I2C", "MSGOUT-NMEA_ID_VTG_SPI", "MSGOUT-NMEA_ID_VTG_UART1", "MSGOUT-NMEA_ID_VTG_UART2", "MSGOUT-NMEA_ID_VTG_USB", "MSGOUT-NMEA_ID_ZDA_I2C", "MSGOUT-NMEA_ID_ZDA_SPI", "MSGOUT-NMEA_ID_ZDA_UART1", "MSGOUT-NMEA_ID_ZDA_UART2", "MSGOUT-NMEA_ID_ZDA_USB", 
+            "MSGOUT-PUBX_ID_POLYP_I2C", "MSGOUT-PUBX_ID_POLYP_SPI", "MSGOUT-PUBX_ID_POLYP_UART1", "MSGOUT-PUBX_ID_POLYP_UART2", "MSGOUT-PUBX_ID_POLYP_USB", "MSGOUT-PUBX_ID_POLYS_I2C", "MSGOUT-PUBX_ID_POLYS_SPI", "MSGOUT-PUBX_ID_POLYS_UART1", "MSGOUT-PUBX_ID_POLYS_UART2", "MSGOUT-PUBX_ID_POLYS_USB", 
+            "MSGOUT-PUBX_ID_POLYT_I2C", "MSGOUT-PUBX_ID_POLYT_SPI", "MSGOUT-PUBX_ID_POLYT_UART1", "MSGOUT-PUBX_ID_POLYT_UART2", "MSGOUT-PUBX_ID_POLYT_USB", "MSGOUT-RTCM_3X_TYPE1005_I2C", "MSGOUT-RTCM_3X_TYPE1005_SPI", "MSGOUT-RTCM_3X_TYPE1005_UART1", "MSGOUT-RTCM_3X_TYPE1005_UART2", "MSGOUT-RTCM_3X_TYPE1005_USB", 
+            "MSGOUT-RTCM_3X_TYPE1074_I2C", "MSGOUT-RTCM_3X_TYPE1074_SPI", "MSGOUT-RTCM_3X_TYPE1074_UART1", "MSGOUT-RTCM_3X_TYPE1074_UART2", "MSGOUT-RTCM_3X_TYPE1074_USB", "MSGOUT-RTCM_3X_TYPE1077_I2C", "MSGOUT-RTCM_3X_TYPE1077_SPI", "MSGOUT-RTCM_3X_TYPE1077_UART1", "MSGOUT-RTCM_3X_TYPE1077_UART2", "MSGOUT-RTCM_3X_TYPE1077_USB", 
+            "MSGOUT-RTCM_3X_TYPE1087_I2C", "MSGOUT-RTCM_3X_TYPE1084_SPI", "MSGOUT-RTCM_3X_TYPE1084_UART1", "MSGOUT-RTCM_3X_TYPE1084_UART2", "MSGOUT-RTCM_3X_TYPE1084_USB", "MSGOUT-RTCM_3X_TYPE1087_SPI", "MSGOUT-RTCM_3X_TYPE1087_UART1", "MSGOUT-RTCM_3X_TYPE1087_UART2", "MSGOUT-RTCM_3X_TYPE1087_USB", "MSGOUT-RTCM_3X_TYPE1094_I2C", 
+            "MSGOUT-RTCM_3X_TYPE1094_SPI", "MSGOUT-RTCM_3X_TYPE1094_UART1", "MSGOUT-RTCM_3X_TYPE1094_UART2", "MSGOUT-RTCM_3X_TYPE1094_USB", "MSGOUT-RTCM_3X_TYPE1097_I2C", "MSGOUT-RTCM_3X_TYPE1097_SPI", "MSGOUT-RTCM_3X_TYPE1097_UART1", "MSGOUT-RTCM_3X_TYPE1097_UART2", "MSGOUT-RTCM_3X_TYPE1097_USB", "MSGOUT-RTCM_3X_TYPE1124_I2C", 
+            "MSGOUT-RTCM_3X_TYPE1124_SPI", "MSGOUT-RTCM_3X_TYPE1124_UART1", "MSGOUT-RTCM_3X_TYPE1124_UART2", "MSGOUT-RTCM_3X_TYPE1124_USB", "MSGOUT-RTCM_3X_TYPE1127_I2C", "MSGOUT-RTCM_3X_TYPE1127_SPI", "MSGOUT-RTCM_3X_TYPE1127_UART1", "MSGOUT-RTCM_3X_TYPE1127_UART2", "MSGOUT-RTCM_3X_TYPE1127_USB", "MSGOUT-RTCM_3X_TYPE1230_I2C", 
+            "MSGOUT-RTCM_3X_TYPE1230_SPI", "MSGOUT-RTCM_3X_TYPE1230_UART1", "MSGOUT-RTCM_3X_TYPE1230_UART2", "MSGOUT-RTCM_3X_TYPE1230_USB", "MSGOUT-RTCM_3X_TYPE4072_0_I2C", "MSGOUT-RTCM_3X_TYPE4072_0_SPI", "MSGOUT-RTCM_3X_TYPE4072_0_UART1", "MSGOUT-RTCM_3X_TYPE4072_0_UART2", "MSGOUT-RTCM_3X_TYPE4072_0_USB", "MSGOUT-RTCM_3X_TYPE4072_1_I2C", 
+            "MSGOUT-RTCM_3X_TYPE4072_1_SPI", "MSGOUT-RTCM_3X_TYPE4072_1_UART1", "MSGOUT-RTCM_3X_TYPE4072_1_UART2", "MSGOUT-RTCM_3X_TYPE4072_1_USB", "MSGOUT-UBX_LOG_INFO_I2C", "MSGOUT-UBX_LOG_INFO_SPI", "MSGOUT-UBX_LOG_INFO_UART1", "MSGOUT-UBX_LOG_INFO_UART2", "MSGOUT-UBX_LOG_INFO_USB", "MSGOUT-UBX_MON_COMMS_I2C", 
+            "MSGOUT-UBX_MON_COMMS_SPI", "MSGOUT-UBX_MON_COMMS_UART1", "MSGOUT-UBX_MON_COMMS_UART2", "MSGOUT-UBX_MON_COMMS_USB", "MSGOUT-UBX_MON_HW2_I2C", "MSGOUT-UBX_MON_HW2_SPI", "MSGOUT-UBX_MON_HW2_UART1", "MSGOUT-UBX_MON_HW2_UART2", "MSGOUT-UBX_MON_HW2_USB", "MSGOUT-UBX_MON_HW3_I2C", 
+            "MSGOUT-UBX_MON_HW3_SPI", "MSGOUT-UBX_MON_HW3_UART1", "MSGOUT-UBX_MON_HW3_UART2", "MSGOUT-UBX_MON_HW3_USB", "MSGOUT-UBX_MON_HW_I2C", "MSGOUT-UBX_MON_HW_SPI", "MSGOUT-UBX_MON_HW_UART1", "MSGOUT-UBX_MON_HW_UART2", "MSGOUT-UBX_MON_HW_USB", "MSGOUT-UBX_MON_IO_I2C", 
+            "MSGOUT-UBX_MON_IO_SPI", "MSGOUT-UBX_MON_IO_UART1", "MSGOUT-UBX_MON_IO_UART2", "MSGOUT-UBX_MON_IO_USB", "MSGOUT-UBX_MON_MSGPP_I2C", "MSGOUT-UBX_MON_MSGPP_SPI", "MSGOUT-UBX_MON_MSGPP_UART1", "MSGOUT-UBX_MON_MSGPP_UART2", "MSGOUT-UBX_MON_MSGPP_USB", "MSGOUT-UBX_MON_RF_I2C", 
+            "MSGOUT-UBX_MON_RF_SPI", "MSGOUT-UBX_MON_RF_UART1", "MSGOUT-UBX_MON_RF_UART2", "MSGOUT-UBX_MON_RF_USB", "MSGOUT-UBX_MON_RXBUF_I2C", "MSGOUT-UBX_MON_RXBUF_SPI", "MSGOUT-UBX_MON_RXBUF_UART1", "MSGOUT-UBX_MON_RXBUF_UART2", "MSGOUT-UBX_MON_RXBUF_USB", "MSGOUT-UBX_MON_RXR_I2C", 
+            "MSGOUT-UBX_MON_RXR_SPI", "MSGOUT-UBX_MON_RXR_UART1", "MSGOUT-UBX_MON_RXR_UART2", "MSGOUT-UBX_MON_RXR_USB", "MSGOUT-UBX_MON_TXBUF_I2C", "MSGOUT-UBX_MON_TXBUF_SPI", "MSGOUT-UBX_MON_TXBUF_UART1", "MSGOUT-UBX_MON_TXBUF_UART2", "MSGOUT-UBX_MON_TXBUF_USB", "MSGOUT-UBX_MON_TXBUF_I2C", 
+            "MSGOUT-UBX_MON_TXBUF_SPI", "MSGOUT-UBX_MON_TXBUF_UART1", "MSGOUT-UBX_MON_TXBUF_UART2", "MSGOUT-UBX_MON_TXBUF_USB", "MSGOUT-UBX_NAV_CLOCK_I2C", "MSGOUT-UBX_NAV_CLOCK_SPI", "MSGOUT-UBX_NAV_CLOCK_UART1", "MSGOUT-UBX_NAV_CLOCK_UART2", "MSGOUT-UBX_NAV_CLOCK_USB", "MSGOUT-UBX_NAV_DOP_I2C", 
+            "MSGOUT-UBX_NAV_DOP_SPI", "MSGOUT-UBX_NAV_DOP_UART1", "MSGOUT-UBX_NAV_DOP_UART2", "MSGOUT-UBX_NAV_DOP_USB", "MSGOUT-UBX_NAV_EOE_I2C", "MSGOUT-UBX_NAV_EOE_SPI", "MSGOUT-UBX_NAV_EOE_UART1", "MSGOUT-UBX_NAV_EOE_UART2", "MSGOUT-UBX_NAV_EOE_USB", "MSGOUT-UBX_NAV_GEOFENCE_I2C", 
+            "MSGOUT-UBX_NAV_GEOFENCE_SPI", "MSGOUT-UBX_NAV_GEOFENCE_UART1", "MSGOUT-UBX_NAV_GEOFENCE_UART2", "MSGOUT-UBX_NAV_GEOFENCE_USB", "MSGOUT-UBX_NAV_HPPOSECEF_I2C", "MSGOUT-UBX_NAV_HPPOSECEF_SPI", "MSGOUT-UBX_NAV_HPPOSECEF_UART1", "MSGOUT-UBX_NAV_HPPOSECEF_UART2", "MSGOUT-UBX_NAV_HPPOSECEF_USB", "MSGOUT-UBX_NAV_HPPOSLLH_I2C", 
+            "MSGOUT-UBX_NAV_HPPOSLLH_SPI", "MSGOUT-UBX_NAV_HPPOSLLH_UART1", "MSGOUT-UBX_NAV_HPPOSLLH_UART2", "MSGOUT-UBX_NAV_HPPOSLLH_USB", "MSGOUT-UBX_NAV_ODO_I2C", "MSGOUT-UBX_NAV_ODO_SPI", "MSGOUT-UBX_NAV_ODO_UART1", "MSGOUT-UBX_NAV_ODO_UART2", "MSGOUT-UBX_NAV_ODO_USB", "MSGOUT-UBX_NAV_ORB_I2C", 
+            "MSGOUT-UBX_NAV_ORB_SPI", "MSGOUT-UBX_NAV_ORB_UART1", "MSGOUT-UBX_NAV_ORB_UART2", "MSGOUT-UBX_NAV_ORB_USB", "MSGOUT-UBX_NAV_POSECEF_I2C", "MSGOUT-UBX_NAV_POSECEF_SPI", "MSGOUT-UBX_NAV_POSECEF_UART1", "MSGOUT-UBX_NAV_POSECEF_UART2", "MSGOUT-UBX_NAV_POSECEF_USB", "MSGOUT-UBX_NAV_POSLLH_I2C", 
+            "MSGOUT-UBX_NAV_POSLLH_SPI", "MSGOUT-UBX_NAV_POSLLH_UART1", "MSGOUT-UBX_NAV_POSLLH_UART2", "MSGOUT-UBX_NAV_POSLLH_USB", "MSGOUT-UBX_NAV_PVT_I2C", "MSGOUT-UBX_NAV_PVT_SPI", "MSGOUT-UBX_NAV_PVT_UART1", "MSGOUT-UBX_NAV_PVT_UART2", "MSGOUT-UBX_NAV_PVT_USB", "MSGOUT-UBX_NAV_RELPOSNED_I2C", 
+            "MSGOUT-UBX_NAV_RELPOSNED_SPI", "MSGOUT-UBX_NAV_RELPOSNED_UART1", "MSGOUT-UBX_NAV_RELPOSNED_UART2", "MSGOUT-UBX_NAV_RELPOSNED_USB", "MSGOUT-UBX_NAV_SAT_I2C", "MSGOUT-UBX_NAV_SAT_SPI", "MSGOUT-UBX_NAV_SAT_UART1", "MSGOUT-UBX_NAV_SAT_UART2", "MSGOUT-UBX_NAV_SAT_USB", "MSGOUT-UBX_NAV_SBAS_I2C", 
+            "MSGOUT-UBX_NAV_SBAS_SPI", "MSGOUT-UBX_NAV_SBAS_UART1", "MSGOUT-UBX_NAV_SBAS_UART2", "MSGOUT-UBX_NAV_SBAS_USB", "MSGOUT-UBX_NAV_SIG_I2C", "MSGOUT-UBX_NAV_SIG_SPI", "MSGOUT-UBX_NAV_SIG_UART1", "MSGOUT-UBX_NAV_SIG_UART2", "MSGOUT-UBX_NAV_SIG_USB", "MSGOUT-UBX_NAV_STATUS_I2C", 
+            "MSGOUT-UBX_NAV_STATUS_SPI", "MSGOUT-UBX_NAV_STATUS_UART1", "MSGOUT-UBX_NAV_STATUS_UART2", "MSGOUT-UBX_NAV_STATUS_USB", "MSGOUT-UBX_NAV_SVIN_I2C", "MSGOUT-UBX_NAV_SVIN_SPI", "MSGOUT-UBX_NAV_SVIN_UART1", "MSGOUT-UBX_NAV_SVIN_UART2", "MSGOUT-UBX_NAV_SVIN_USB", "MSGOUT-UBX_NAV_TIMEBDS_I2C", 
+            "MSGOUT-UBX_NAV_TIMEBDS_SPI", "MSGOUT-UBX_NAV_TIMEBDS_UART1", "MSGOUT-UBX_NAV_TIMEBDS_UART2", "MSGOUT-UBX_NAV_TIMEBDS_USB", "MSGOUT-UBX_NAV_TIMEGAL_I2C", "MSGOUT-UBX_NAV_TIMEGAL_SPI", "MSGOUT-UBX_NAV_TIMEGAL_UART1", "MSGOUT-UBX_NAV_TIMEGAL_UART2", "MSGOUT-UBX_NAV_TIMEGAL_USB", "MSGOUT-UBX_NAV_TIMEGLO_I2C", 
+            "MSGOUT-UBX_NAV_TIMEGLO_SPI", "MSGOUT-UBX_NAV_TIMEGLO_UART1", "MSGOUT-UBX_NAV_TIMEGLO_UART2", "MSGOUT-UBX_NAV_TIMEGLO_USB", "MSGOUT-UBX_NAV_TIMEGPS_I2C", "MSGOUT-UBX_NAV_TIMEGPS_SPI", "MSGOUT-UBX_NAV_TIMEGPS_UART1", "MSGOUT-UBX_NAV_TIMEGPS_UART2", "MSGOUT-UBX_NAV_TIMEGPS_USB", "MSGOUT-UBX_NAV_TIMELS_I2C", 
+            "MSGOUT-UBX_NAV_TIMELS_SPI", "MSGOUT-UBX_NAV_TIMELS_UART1", "MSGOUT-UBX_NAV_TIMELS_UART2", "MSGOUT-UBX_NAV_TIMELS_USB", "MSGOUT-UBX_NAV_TIMEUTC_I2C", "MSGOUT-UBX_NAV_TIMEUTC_SPI", "MSGOUT-UBX_NAV_TIMEUTC_UART1", "MSGOUT-UBX_NAV_TIMEUTC_UART2", "MSGOUT-UBX_NAV_TIMEUTC_USB", "MSGOUT-UBX_NAV_VELECEF_I2C", 
+            "MSGOUT-UBX_NAV_VELECEF_SPI", "MSGOUT-UBX_NAV_VELECEF_UART1", "MSGOUT-UBX_NAV_VELECEF_UART2", "MSGOUT-UBX_NAV_VELECEF_USB", "MSGOUT-UBX_NAV_VELNED_I2C", "MSGOUT-UBX_NAV_VELNED_SPI", "MSGOUT-UBX_NAV_VELNED_UART1", "MSGOUT-UBX_NAV_VELNED_UART2", "MSGOUT-UBX_NAV_VELNED_USB", "MSGOUT-UBX_RXM_MEASX_I2C", 
+            "MSGOUT-UBX_RXM_MEASX_SPI", "MSGOUT-UBX_RXM_MEASX_UART1", "MSGOUT-UBX_RXM_MEASX_UART2", "MSGOUT-UBX_RXM_MEASX_USB", "MSGOUT-UBX_RXM_RAWX_I2C", "MSGOUT-UBX_RXM_RAWX_SPI", "MSGOUT-UBX_RXM_RAWX_UART1", "MSGOUT-UBX_RXM_RAWX_UART2", "MSGOUT-UBX_RXM_RAWX_USB", "MSGOUT-UBX_RXM_RLM_I2C", 
+            "MSGOUT-UBX_RXM_RLM_SPI", "MSGOUT-UBX_RXM_RLM_UART1", "MSGOUT-UBX_RXM_RLM_UART2", "MSGOUT-UBX_RXM_RLM_USB", "MSGOUT-UBX_RXM_RTCM_I2C", "MSGOUT-UBX_RXM_RTCM_SPI", "MSGOUT-UBX_RXM_RTCM_UART1", "MSGOUT-UBX_RXM_RTCM_UART2", "MSGOUT-UBX_RXM_RTCM_USB", "MSGOUT-UBX_RXM_SFRBX_I2C", 
+            "MSGOUT-UBX_RXM_SFRBX_SPI", "MSGOUT-UBX_RXM_SFRBX_UART1", "MSGOUT-UBX_RXM_SFRBX_UART2", "MSGOUT-UBX_RXM_SFRBX_USB", "MSGOUT-UBX_TIM_SVIN_I2C", "MSGOUT-UBX_TIM_SVIN_SPI", "MSGOUT-UBX_TIM_SVIN_UART1", "MSGOUT-UBX_TIM_SVIN_UART2", "MSGOUT-UBX_TIM_SVIN_USB", "MSGOUT-UBX_TIM_TM2_I2C", 
+            "MSGOUT-UBX_TIM_TM2_SPI", "MSGOUT-UBX_TIM_TM2_UART1", "MSGOUT-UBX_TIM_TM2_UART2", "MSGOUT-UBX_TIM_TM2_USB", "MSGOUT-UBX_TIM_TP_I2C", "MSGOUT-UBX_TIM_TP_SPI", "MSGOUT-UBX_TIM_TP_UART1", "MSGOUT-UBX_TIM_TP_UART2", "MSGOUT-UBX_TIM_TP_USB", "MSGOUT-UBX_TIM_VRFY_I2C", 
+            "MSGOUT-UBX_TIM_VRFY_SPI", "MSGOUT-UBX_TIM_VRFY_UART1", "MSGOUT-UBX_TIM_VRFY_UART2", "MSGOUT-UBX_TIM_VRFY_USB", "NAVHPG-DGNSSMODE", "NAVSPG-FIXMODE", "NAVSPG-INIFIX3D", "NAVSPG-WKNROLLOVER", "NAVSPG-USE_PPP", "NAVSPG-UTCSTANDARD", 
+            "NAVSPG-DYNMODEL", "NAVSPG-ACKAIDING", "NAVSPG-USE_USRDAT", "NAVSPG-USRDAT_MAJA", "NAVSPG-USRDAT_FLAT", "NAVSPG-USRDAT_DX", "NAVSPG-USRDAT_DY", "NAVSPG-USRDAT_DZ", "NAVSPG-USRDAT_ROTX", "NAVSPG-USRDAT_ROTY", 
+            "NAVSPG-USRDAT_ROTZ", "NAVSPG-USRDAT_SCALE", "NAVSPG-INFIL_MINSVS", "NAVSPG-INFIL_MAXSVS", "NAVSPG-INFIL_MINCNO", "NAVSPG-INFIL_MINELEV", "NAVSPG-INFIL_NCNOTHRS", "NAVSPG-INFIL_CNOTHRS", "NAVSPG-OUTFIL_PDOP", "NAVSPG-OUTFIL_TDOP", 
+            "NAVSPG-OUTFIL_PACC", "NAVSPG-OUTFIL_TACC", "NAVSPG-OUTFIL_FACC", "NAVSPG-CONSTR_ALT", "NAVSPG-CONSTR_ALTVAR", "NAVSPG-CONSTR_DGNSSTO", "NMEA-PROTVER", "NMEA-MAXSVS", "NMEA-COMPAT", "NMEA-CONSIDER", 
+            "NMEA-LIMIT82", "NMEA-HIGHPREC", "NMEA-SVNUMBERING", "NMEA-FILT_GPS", "NMEA-FILT_SBAS", "NMEA-FILT_QZSS", "NMEA-FILT_GLO", "NMEA-FILT_BDS", "NMEA-OUT_INVFIX", "NMEA-OUT_MSKFIX", 
+            "NMEA-OUT_INVTIME", "NMEA-OUT_INVDATE", "NMEA-OUT_ONLYGPS", "NMEA-OUT_FROZENCOG", "NMEA-MAINTALKERID", "NMEA-GSVTALKERID", "NMEA-BDSTALKERID", "ODO-USE_ODO", "ODO-USE_COG", "ODO-OUTLPVEL", 
+            "ODO-OUTLPCOG", "ODO-PROFILE", "ODO-COGMAXSPEED", "ODO-COGMAXPOSACC", "ODO-COGLPGAIN", "ODO-VELLPGAIN", "RATE-MEAS", "RATE-NAV", "RATE-TIMEREF", "RINV-DUMP", 
+            "RINV-BINARY", "RINV-DATA_SIZE", "RINV-CHUNK0", "RINV-CHUNK1", "RINV-CHUNK2", "RINV-CHUNK3", "SBAS-USE_TESTMODE", "SBAS-USE_RANGING", "SBAS-USE_DIFFCORR", "SBAS-USE_INTEGRITY", 
+            "SBAS-PRNSCANMASK", "SIGNAL-GPS_ENA", "SIGNAL-GPS_L1CA_ENA", "SIGNAL-GPS_L2C_ENA", "SIGNAL-SBAS_ENA", "SIGNAL-SBAS_L1CA_ENA", "SIGNAL-GAL_ENA", "SIGNAL-GAL_E1_ENA", "SIGNAL-GAL_E5B_ENA", "SIGNAL-BDS_ENA", 
+            "SIGNAL-BDS_B1_ENA", "SIGNAL-BDS_B2_ENA", "SIGNAL-QZSS_ENA", "SIGNAL-QZSS_L1CA_ENA", "SIGNAL-QZSS_L1S_ENA", "SIGNAL-QZSS_L2C_ENA", "SIGNAL-GLO_ENA", "SIGNAL-GLO_L1_ENA", "SIGNAL-GLO_L2_ENA", "SPI-MAXFF", 
+            "SPI-CPOLARITY", "SPI-CPHASE", "SPI-EXTENDEDTIMEOUT", "SPI-ENABLED", "SPIINPROT-UBX", "SPIINPROT-NMEA", "SPIINPROT-RTCM2X", "SPIINPROT-RTCM3X", "SPIOUTPROT-UBX", "SPIOUTPROT-NMEA", 
+            "SPIOUTPROT-RTCM3X", "TMODE-MODE", "TMODE-POS_TYPE", "TMODE-ECEF_X", "TMODE-ECEF_Y", "TMODE-ECEF_Z", "TMODE-ECEF_X_HP", "TMODE-ECEF_Y_HP", "TMODE-ECEF_Z_HP", "TMODE-LAT", 
+            "TMODE-LON", "TMODE-HEIGHT", "TMODE-LAT_HP", "TMODE-LON_HP", "TMODE-HEIGHT_HP", "TMODE-FIXED_POS_ACC", "TMODE-SVIN_MIN_DUR", "TMODE-SVIN_ACC_LIMIT", "TP-PULSE_DEF", "TP-PULSE_LENGTH_DEF", 
+            "TP-ANT_CABLEDELAY", "TP-PERIOD_TP1", "TP-PERIOD_LOCK_TP1", "TP-FREQ_TP1", "TP-FREQ_LOCK_TP1", "TP-LEN_TP1", "TP-LEN_LOCK_TP1", "TP-DUTY_TP1", "TP-DUTY_LOCK_TP1", "TP-USER_DELAY_TP1", 
+            "TP-TP1_ENA", "TP-SYNC_GNSS_TP1", "TP-USE_LOCKED_TP1", "TP-ALIGN_TO_TOW_TP1", "TP-POL_TP1", "TP-TIMEGRID_TP1", "TP-PERIOD_TP2", "TP-PERIOD_LOCK_TP2", "TP-FREQ_TP2", "TP-FREQ_LOCK_TP2", 
+            "TP-LEN_TP2", "TP-LEN_LOCK_TP2", "TP-DUTY_TP2", "TP-DUTY_LOCK_TP2", "TP-USER_DELAY_TP2", "TP-TP2_ENA", "TP-SYNC_GNSS_TP2", "TP-USE_LOCKED_TP2", "TP-ALIGN_TO_TOW_TP2", "TP-POL_TP2", 
+            "TP-TIMEGRID_TP2", "UART1-BAUDRATE", "UART1-STOPBITS", "UART1-DATABITS", "UART1-PARITY", "UART1-ENABLED", "UART1INPROT-UBX", "UART1INPROT-NMEA", "UART1INPROT-RTCM2X", "UART1INPROT-RTCM3X", 
+            "UART1OUTPROT-UBX", "UART1OUTPROT-NMEA", "UART1OUTPROT-RTCM3X", "UART2-BAUDRATE", "UART2-STOPBITS", "UART2-DATABITS", "UART2-PARITY", "UART2-ENABLED", "UART2-REMAP", "UART2INPROT-UBX", 
+            "UART2INPROT-NMEA", "UART2INPROT-RTCM2X", "UART2INPROT-RTCM3X", "UART2OUTPROT-UBX", "UART2OUTPROT-NMEA", "UART2OUTPROT-RTCM3X", "USB-ENABLED", "USB-SELFPOW", "USB-VENDOR_ID", "USB-PRODUCT_ID", 
+            "USB-POWER", "USB-VENDOR_STR0", "USB-VENDOR_STR1", "USB-VENDOR_STR2", "USB-VENDOR_STR3", "USB-PRODUCT_STR0", "USB-PRODUCT_STR1", "USB-PRODUCT_STR2", "USB-PRODUCT_STR3", "USB-SERIAL_NO_STR0", 
+            "USB-SERIAL_NO_STR1", "USB-SERIAL_NO_STR2", "USB-SERIAL_NO_STR3", "USBINPROT-UBX", "USBINPROT-NMEA", "USBINPROT-RTCM2X", "USBINPROT-RTCM3X", "USBOUTPROT-UBX", "USBOUTPROT-NMEA", "USBOUTPROT-RTCM3X",""
+        };
+        const unsigned long vid[]={
+            0x20240011,  0x10240012,  0x20240013,  0x20240014,  0x10240020,  0x40240021,  0x40240022,  0x40240023,  0x10240030,  0x40240031,
+            0x40240032,  0x40240033,  0x10240040,  0x40240041,  0x40240042,  0x40240043,  0x10240050,  0x40240051,  0x40240052,  0x40240053,
+            0x10a3002e,  0x10a3002f,  0x10a30030,  0x10a30031,  0x10a30032,  0x10a30033,  0x10a30034,  0x10a30035,  0x20a30036,  0x20a30037,
+            0x20a30038,  0x20510001,  0x10510002,  0x10510003,  0x10710001,  0x10710002,  0x10710003,  0x10710004,  0x10720001,  0x10720002,
+            0x10720004,  0x20920001,  0x20920002,  0x20920003,  0x20920004,  0x20920005,  0x20920006,  0x20920007,  0x20920008,  0x20920009,
+            0x2092000a,  0x20410001,  0x20410002,  0x1041000d,  0x20410010,  0x10410013,  0x10de0002,  0x10de0003,  0x10de0004,  0x30de0005,
+            0x30de0006,  0x30de0007,  0x40de0008,  0x20250038,  0x3025003b,  0x209100a6,  0x209100aa,  0x209100a7,  0x209100a8,  0x209100a9,
+            0x209100dd,  0x209100e1,  0x209100de,  0x209100df,  0x209100e0,  0x209100ba,  0x209100be,  0x209100bb,  0x209100bc,  0x209100bd,
+            0x209100c9,  0x209100cd,  0x209100ca,  0x209100cb,  0x209100cc,  0x209100b5,  0x209100b9,  0x209100b6,  0x209100b7,  0x209100b8,
+            0x209100ce,  0x209100d2,  0x209100cf,  0x209100d0,  0x209100d1,  0x209100bf,  0x209100c3,  0x209100c0,  0x209100c1,  0x209100c2,
+            0x209100d3,  0x209100d7,  0x209100d4,  0x209100d5,  0x209100d6,  0x209100c4,  0x209100c8,  0x209100c5,  0x209100c6,  0x209100c7,
+            0x209100ab,  0x209100af,  0x209100ac,  0x209100ad,  0x209100ae,  0x209100e7,  0x209100eb,  0x209100e8,  0x209100e9,  0x209100ea,
+            0x209100b0,  0x209100b4,  0x209100b1,  0x209100b2,  0x209100b3,  0x209100d8,  0x209100dc,  0x209100d9,  0x209100da,  0x209100db,
+            0x209100ec,  0x209100f0,  0x209100ed,  0x209100ee,  0x209100ef,  0x209100f1,  0x209100f5,  0x209100f2,  0x209100f3,  0x209100f4,
+            0x209100f6,  0x209100fa,  0x209100f7,  0x209100f8,  0x209100f9,  0x209102bd,  0x209102c1,  0x209102be,  0x209102bf,  0x209102c0,
+            0x2091035e,  0x20910362,  0x2091035f,  0x20910360,  0x20910361,  0x209102cc,  0x209102d0,  0x209102cd,  0x209102ce,  0x209102cf,
+            0x209102d1,  0x20910367,  0x20910364,  0x20910365,  0x20910366,  0x209102d5,  0x209102d2,  0x209102d3,  0x209102d4,  0x20910368,
+            0x2091036c,  0x20910369,  0x2091036a,  0x2091036b,  0x20910318,  0x2091031c,  0x20910319,  0x2091031a,  0x2091031b,  0x2091036d,
+            0x20910371,  0x2091036e,  0x2091036f,  0x20910370,  0x209102d6,  0x209102da,  0x209102d7,  0x209102d8,  0x209102d9,  0x20910303,
+            0x20910307,  0x20910304,  0x20910305,  0x20910306,  0x209102fe,  0x20910302,  0x209102ff,  0x20910300,  0x20910301,  0x20910381,
+            0x20910385,  0x20910382,  0x20910383,  0x20910384,  0x20910259,  0x2091025d,  0x2091025a,  0x2091025b,  0x2091025c,  0x2091034f,
+            0x20910353,  0x20910350,  0x20910351,  0x20910352,  0x209101b9,  0x209101bd,  0x209101ba,  0x209101bb,  0x209101bc,  0x20910354,
+            0x20910358,  0x20910355,  0x20910356,  0x20910357,  0x209101b4,  0x209101b8,  0x209101b5,  0x209101b6,  0x209101b7,  0x209101a5,
+            0x209101a9,  0x209101a6,  0x209101a7,  0x209101a8,  0x20910196,  0x2091019a,  0x20910197,  0x20910198,  0x20910199,  0x20910359,
+            0x2091035d,  0x2091035a,  0x2091035b,  0x2091035c,  0x209101a0,  0x209101a4,  0x209101a1,  0x209101a2,  0x209101a3,  0x20910187,
+            0x2091018b,  0x20910188,  0x20910189,  0x2091018a,  0x2091019b,  0x2091019f,  0x2091019c,  0x2091019d,  0x2091019e,  0x2091019b,
+            0x2091019f,  0x2091019c,  0x2091019d,  0x2091019e,  0x20910065,  0x20910069,  0x20910066,  0x20910067,  0x20910068,  0x20910038,
+            0x2091003c,  0x20910039,  0x2091003a,  0x2091003b,  0x2091015f,  0x20910163,  0x20910160,  0x20910161,  0x20910162,  0x209100a1,
+            0x209100a5,  0x209100a2,  0x209100a3,  0x209100a4,  0x2091002e,  0x20910032,  0x2091002f,  0x20910030,  0x20910031,  0x20910033,
+            0x20910037,  0x20910034,  0x20910035,  0x20910036,  0x2091007e,  0x20910082,  0x2091007f,  0x20910080,  0x20910081,  0x20910010,
+            0x20910014,  0x20910011,  0x20910012,  0x20910013,  0x20910024,  0x20910028,  0x20910025,  0x20910026,  0x20910027,  0x20910029,
+            0x2091002d,  0x2091002a,  0x2091002b,  0x2091002c,  0x20910006,  0x2091000a,  0x20910007,  0x20910008,  0x20910009,  0x2091008d,
+            0x20910091,  0x2091008e,  0x2091008f,  0x20910090,  0x20910015,  0x20910019,  0x20910016,  0x20910017,  0x20910018,  0x2091006a,
+            0x2091006e,  0x2091006b,  0x2091006c,  0x2091006d,  0x20910345,  0x20910349,  0x20910346,  0x20910347,  0x20910348,  0x2091001a,
+            0x2091001e,  0x2091001b,  0x2091001c,  0x2091001d,  0x20910088,  0x2091008c,  0x20910089,  0x2091008a,  0x2091008b,  0x20910051,
+            0x20910055,  0x20910052,  0x20910053,  0x20910054,  0x20910056,  0x2091005a,  0x20910057,  0x20910058,  0x20910059,  0x2091004c,
+            0x20910050,  0x2091004d,  0x2091004e,  0x2091004f,  0x20910047,  0x2091004b,  0x20910048,  0x20910049,  0x2091004a,  0x20910060,
+            0x20910064,  0x20910061,  0x20910062,  0x20910063,  0x2091005b,  0x2091005f,  0x2091005c,  0x2091005d,  0x2091005e,  0x2091003d,
+            0x20910041,  0x2091003e,  0x2091003f,  0x20910040,  0x20910042,  0x20910046,  0x20910043,  0x20910044,  0x20910045,  0x20910204,
+            0x20910208,  0x20910205,  0x20910206,  0x20910207,  0x209102a4,  0x209102a8,  0x209102a5,  0x209102a6,  0x209102a7,  0x2091025e,
+            0x20910262,  0x2091025f,  0x20910260,  0x20910261,  0x20910268,  0x2091026c,  0x20910269,  0x2091026a,  0x2091026b,  0x20910231,
+            0x20910235,  0x20910232,  0x20910233,  0x20910234,  0x20910097,  0x2091009b,  0x20910098,  0x20910099,  0x2091009a,  0x20910178,
+            0x2091017c,  0x20910179,  0x2091017a,  0x2091017b,  0x2091017d,  0x20910181,  0x2091017e,  0x2091017f,  0x20910180,  0x20910092,
+            0x20910096,  0x20910093,  0x20910094,  0x20910095,  0x20140011,  0x20110011,  0x10110013,  0x30110017,  0x10110019,  0x2011001c,
+            0x20110021,  0x10110025,  0x10110061,  0x50110062,  0x50110063,  0x40110064,  0x40110065,  0x40110066,  0x40110067,  0x40110068,
+            0x40110069,  0x4011006a,  0x201100a1,  0x201100a2,  0x201100a3,  0x201100a4,  0x201100aa,  0x201100ab,  0x301100b1,  0x301100b2,
+            0x301100b3,  0x301100b4,  0x301100b5,  0x401100c1,  0x401100c2,  0x201100c4,  0x20930001,  0x20930002,  0x10930003,  0x10930004,
+            0x10930005,  0x10930006,  0x20930007,  0x10930011,  0x10930012,  0x10930015,  0x10930016,  0x10930017,  0x10930021,  0x10930022,
+            0x10930023,  0x10930024,  0x10930025,  0x10930026,  0x20930031,  0x20930032,  0x30930033,  0x10220001,  0x10220002,  0x10220003,
+            0x10220004,  0x20220005,  0x20220021,  0x20220022,  0x20220032,  0x20220031,  0x30210001,  0x30210002,  0x20210003,  0x10c70001,
+            0x10c70002,  0x20c70003,  0x50c70004,  0x50c70005,  0x50c70006,  0x50c70007,  0x10360002,  0x10360003,  0x10360004,  0x10360005,
+            0x50360006,  0x1031001f,  0x10310001,  0x10310003,  0x10310020,  0x10310005,  0x10310021,  0x10310007,  0x1031000a,  0x10310022,
+            0x1031000d,  0x1031000e,  0x10310024,  0x10310012,  0x10310014,  0x10310015,  0x10310025,  0x10310018,  0x1031001a,  0x20640001,
+            0x10640002,  0x10640003,  0x10640005,  0x10640006,  0x10790001,  0x10790002,  0x10790003,  0x10790004,  0x107a0001,  0x107a0002,
+            0x107a0004,  0x20030001,  0x20030002,  0x40030003,  0x40030004,  0x40030005,  0x20030006,  0x20030007,  0x20030008,  0x40030009,
+            0x4003000a,  0x4003000b,  0x2003000c,  0x2003000d,  0x2003000e,  0x4003000f,  0x40030010,  0x40030011,  0x20050023,  0x20050030,
+            0x30050001,  0x40050002,  0x40050003,  0x40050024,  0x40050025,  0x40050004,  0x40050005,  0x5005002a,  0x5005002b,  0x40050006,
+            0x10050007,  0x10050008,  0x10050009,  0x1005000a,  0x1005000b,  0x2005000c,  0x4005000d,  0x4005000e,  0x40050026,  0x40050027,
+            0x4005000f,  0x40050010,  0x5005002c,  0x5005002d,  0x40050011,  0x10050012,  0x10050013,  0x10050014,  0x10050015,  0x10050016,
+            0x20050017,  0x40520001,  0x20520002,  0x20520003,  0x20520004,  0x10520005,  0x10730001,  0x10730002,  0x10730003,  0x10730004,
+            0x10740001,  0x10740002,  0x10740004,  0x40530001,  0x20530002,  0x20530003,  0x20530004,  0x10530005,  0x10530006,  0x10750001,
+            0x10750002,  0x10750003,  0x10750004,  0x10760001,  0x10760002,  0x10760004,  0x10650001,  0x10650002,  0x3065000a,  0x3065000b,
+            0x3065000c,  0x5065000d,  0x5065000e,  0x5065000f,  0x50650010,  0x50650011,  0x50650012,  0x50650013,  0x50650014,  0x50650015,
+            0x50650016,  0x50650017,  0x50650018,  0x10770001,  0x10770002,  0x10770003,  0x10770004,  0x10780001,  0x10780002,  0x10780004
+        };
+        const int vprm[]={
+            FU1, FU1, FU1, FU1, FU1, FI4, FI4, FU4, FU1, FI4,
+            FI4, FU4, FU1, FI4, FI4, FU4, FU1, FI4, FI4, FU4,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU2,
+            FU2, FU2, FU4, FU1, FU2, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU2, FU1, FU1,
+            FU1, FU1, FU1, FR8, FR8, FR4, FR4, FR4, FR4, FR4,
+            FR4, FR4, FU1, FU1, FU1, FI1, FU1, FU1, FU2, FU2,
+            FU2, FU2, FU2, FI4, FU4, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU2, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU2, FU2, FU1, FU1,
+            FU1, FU1, FU8, FU8, FU8, FU8, FU1, FU1, FU1, FU1,
+            FU8, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FI4, FI4, FI4, FI1, FI1, FI1, FI4,
+            FI4, FI4, FI1, FI1, FI1, FU4, FU4, FU4, FU1, FU1,
+            FI2, FU4, FU4, FU4, FU4, FU4, FU4, FR8, FR8, FI4,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU4, FU4, FU4, FU4,
+            FU4, FU4, FR8, FR8, FI4, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU4, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU4, FU1, FU1, FU1, FU1, FU1, FU1,
+            FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU1, FU2, FU2,
+            FU2, FU8, FU8, FU8, FU8, FU8, FU8, FU8, FU8, FU8,
+            FU8, FU8, FU8, FU1, FU1, FU1, FU1, FU1, FU1, FU1
+        };
+
+        if (strncmp(args[j],"CFG-",4)) return 0;
+
+        for (k=0;*vcmd[k];k++) {
+            if (!strcmp(args[j]+4,vcmd[k])) break;
+        }
+
+        if (!*vcmd[k]) return 0;
+
+        setU4(q,(unsigned long) vid[k]);
+	    q+=4;
+
+        /* Set value */
+        switch (vprm[k]) {
+            case FU1 : setU1(q,(unsigned char )atoi(args[j+1])); q+=1; break;
+            case FU2 : setU2(q,(unsigned short)atoi(args[j+1])); q+=2; break;
+            case FU4 : setU4(q,(unsigned long )atoi(args[j+1])); q+=4; break;
+            /* case FU8 : setU8(q,(unsigned long long)atoi(args[j+2])); q+=8; break; */
+            case FI1 : setI1(q,(signed char   )atoi(args[j+1])); q+=1; break;
+            case FI2 : setI2(q,(signed short  )atoi(args[j+1])); q+=2; break;
+            case FI4 : setI4(q,(signed long   )atoi(args[j+1])); q+=4; break;
+            case FR4 : setR4(q,(float         )atof(args[j+1])); q+=4; break;
+            case FR8 : setR8(q,(double        )atof(args[j+1])); q+=8; break;
+            case FS32: sprintf((char *)q,"%-32.32s",args[j+1]); q+=32; break;
+            default  : setU1(q,(unsigned char )atoi(args[j+1])); q+=1; break;
+        }
+
+    }
     n=(int)(q-buff)+2;
     setU2(buff+4,(unsigned short)(n-8));
     setcs(buff,n);