diff --git a/src/rcv/ublox.c b/src/rcv/ublox.c
index 345c66ce80000c97cf5ddfdb2cbaff468c669297..1fe6734180985e4680a79ee3685ad5b1f9f6188c 100644
--- a/src/rcv/ublox.c
+++ b/src/rcv/ublox.c
@@ -108,11 +108,11 @@ typedef enum { false, true } bool;
 /* get fields (little-endian) ------------------------------------------------*/
 #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 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;}
+static unsigned short U2(unsigned char *p) {unsigned short u=0; memcpy(&u,p,2); return u;}
+static unsigned long  U4(unsigned char *p) {unsigned long  u=0; memcpy(&u,p,4); return u;}
+static int            I4(unsigned char *p) {signed long    u=0; memcpy(&u,p,4); return u;}
+static float          R4(unsigned char *p) {float          r=0; memcpy(&r,p,4); return r;}
+static double         R8(unsigned char *p) {double         r=0; memcpy(&r,p,8); return r;}
 
 static double         I8(unsigned char *p) {return I4(p+4)*4294967296.0+U4(p);}
 
@@ -262,6 +262,7 @@ static int decode_rxmraw(raw_t *raw)
     char *q;
     
     trace(4,"decode_rxmraw: len=%d\n",raw->len);
+    //printf("decode_rxmraw: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX RXM-RAW   (%4d): nsat=%d",raw->len,U1(p+6));
@@ -339,6 +340,7 @@ static int decode_rxmrawx(raw_t *raw)
     int week,nmeas,ver,gnss,svid,sigid,frqid,lockt,cn0,cpstd,prstd,tstat;
 
     trace(4,"decode_rxmrawx: len=%d\n",raw->len);
+    //printf("decode_rxmrawx: len=%d\n",raw->len);
     
     if (raw->len<24) {
         trace(2,"ubx rxmrawx length error: len=%d\n",raw->len);
@@ -559,8 +561,9 @@ static int decode_rxmsfrb(raw_t *raw)
     unsigned int words[10];
     int i,prn,sat,sys,id;
     unsigned char *p=raw->buff+6;
-    
+
     trace(4,"decode_rxmsfrb: len=%d\n",raw->len);
+    //printf("decode_rxmsfrb: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX RXM-SFRB  (%4d): prn=%2d",raw->len,U1(p+1));
@@ -594,8 +597,9 @@ static int decode_navsol(raw_t *raw)
 {
     int itow,ftow,week;
     unsigned char *p=raw->buff+6;
-    
+
     trace(4,"decode_navsol: len=%d\n",raw->len);
+    //printf("decode_navsol: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX NAV-SOL   (%4d):",raw->len);
@@ -613,8 +617,9 @@ static int decode_navtime(raw_t *raw)
 {
     int itow,ftow,week;
     unsigned char *p=raw->buff+6;
-    
+
     trace(4,"decode_navtime: len=%d\n",raw->len);
+    //printf("decode_navtime: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX NAV-TIME  (%4d):",raw->len);
@@ -640,8 +645,9 @@ static int decode_trkmeas(raw_t *raw)
        values based on difference between TRK_MEAS values and  RXM-RAWX values */
     const char P_adj_fw2[]={ 0, 0, 0, 0, 1, 3, 2, 0,-4,-3,-9,-8,-7,-4, 0};  /* fw 2.30 */
     const char P_adj_fw3[]={11,13,13,14,14,13,12,10, 8, 6, 5, 5, 5, 7, 0};  /* fw 3.01 */
-    
+
     trace(4,"decode_trkmeas: len=%d\n",raw->len);
+    //printf("decode_trkmeas: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX TRK-MEAS  (%4d):",raw->len);
@@ -772,8 +778,9 @@ static int decode_trkd5(raw_t *raw)
     double ts,tr=-1.0,t,tau,adr,dop,snr,utc_gpst;
     int i,j,n=0,type,off,len,sys,prn,sat,qi,frq,flag,week;
     unsigned char *p=raw->buff+6;
-    
+
     trace(4,"decode_trkd5: len=%d\n",raw->len);
+    //printf("decode_trkd5: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX TRK-D5    (%4d):",raw->len);
@@ -883,22 +890,45 @@ static int decode_nav(raw_t *raw, int sat, int off)
     unsigned int words[10];
     int i,id;
     unsigned char *p=raw->buff+6+off;
+
     
     if (raw->len<48+off) {
         trace(2,"ubx rawsfrbx length error: sat=%d len=%d\n",sat,raw->len);
+        //printf("ubx rawsfrbx length error: sat=%d len=%d\n",sat,raw->len);
         return -1;
     }
+    //printf("decode_nav: p   = %hhx\n", *p);
+    //printf("decode_nav: p+1 = %hhx\n", *(p+1));
+    //printf("decode_nav: p+2 = %hhx\n", *(p+2));
+    //printf("decode_nav: p+3 = %hhx\n", *(p+3));
+    //printf("decode_nav: U4(p)      = %lu\n",U4(p));
+    //printf("decode_nav: U4(p)>>24  = %lu\n",U4(p)>>24);
+//    printf("decode_nav: U4(p+4)      = %lu\n",U4(p+4));
+//    printf("decode_nav: U4(p+4)>>24  = %lu\n",U4(p+4)>>24);
+//    printf("decode_nav: U4(p+8)      = %lu\n",U4(p+8));
+//    printf("decode_nav: U4(p+8)>>24  = %lu\n",U4(p+8)>>24);
+//    printf("decode_nav: U4(p+12)     = %lu\n",U4(p+12));
+//    printf("decode_nav: U4(p+12)>>24 = %lu\n",U4(p+12)>>24);
+//    printf("decode_nav: U4(p+16)     = %lu\n",U4(p+16));
+//    printf("decode_nav: U4(p+16)>>24 = %lu\n",U4(p+16)>>24);
+//    printf("decode_nav: U4(p+20)     = %lu\n",U4(p+20));
+//    printf("decode_nav: U4(p+20)>>24 = %lu\n",U4(p+20)>>24);
+//    printf("decode_nav: U4(p+24)     = %lu\n",U4(p+24));
+//    printf("decode_nav: U4(p+24)>>24 = %lu\n",U4(p+24)>>24);
     if ((U4(p)>>24)==PREAMB_CNAV) {
         trace(3,"ubx rawsfrbx cnav not supported sat=%d prn=%d\n",sat,
               (U4(p)>>18)&0x3F);
+        //printf("ubx rawsfrbx cnav not supported sat=%d prn=%d\n",sat,(U4(p)>>18)&0x3F);
         return 0;
     }
     for (i=0;i<10;i++,p+=4) words[i]=U4(p)>>6; /* 24 bits without parity */
     
     id=(words[1]>>2)&7;
+    //printf("decode_nav: sat=%2d id=%d len=%d\n",sat,id,raw->len);
     if (id<1||5<id) {
         trace(2,"ubx rawsfrbx subfrm id error: sat=%2d id=%d len=%d\n",sat,id,
               raw->len);
+        //printf("ubx rawsfrbx subfrm id error: sat=%2d id=%d len=%d\n",sat,id,raw->len);
         return -1;
     }
     for (i=0;i<10;i++) {
@@ -912,12 +942,14 @@ static int decode_nav(raw_t *raw, int sat, int off)
 /* decode galileo navigation data --------------------------------------------*/
 static int decode_enav(raw_t *raw, int sat, int off)
 {
+    //printf("decode_enav\n");
     eph_t eph={0};
     unsigned char *p=raw->buff+6+off,buff[32],crc_buff[26]={0};
     int i,j,k,part1,page1,part2,page2,type;
     
     if (raw->len<44+off) {
         trace(2,"ubx rawsfrbx length error: sat=%d len=%d\n",sat,raw->len);
+        //printf("ubx rawsfrbx length error: sat=%d len=%d\n",sat,raw->len);
         return -1;
     }
     for (i=k=0;i<8;i++,p+=4) for (j=0;j<4;j++) {
@@ -934,6 +966,7 @@ static int decode_enav(raw_t *raw, int sat, int off)
     /* test even-odd parts */
     if (part1!=0||part2!=1) {
         trace(2,"ubx rawsfrbx gal page even/odd error: sat=%2d\n",sat);
+        //printf("ubx rawsfrbx gal page even/odd error: sat=%2d\n",sat);
         return -1;
     }
     /* test crc (4(pad) + 114 + 82 bits) */
@@ -941,6 +974,7 @@ static int decode_enav(raw_t *raw, int sat, int off)
     for (i=0,j=118;i<11;i++,j+=8) setbitu(crc_buff,j,8,getbitu(buff+16,i*8,8));
     if (rtk_crc24q(crc_buff,25)!=getbitu(buff+16,82,24)) {
         trace(2,"ubx rawsfrbx gal page crc error: sat=%2d\n",sat);
+        //printf("ubx rawsfrbx gal page crc error: sat=%2d\n",sat);
         return -1;
     }
     type=getbitu(buff,2,6); /* word type */
@@ -970,6 +1004,7 @@ static int decode_enav(raw_t *raw, int sat, int off)
     /* test svid consistency */
     if (eph.sat!=sat) {
         trace(2,"ubx rawsfrbx gal svid error: sat=%2d %2d\n",sat,eph.sat);
+        //printf("ubx rawsfrbx gal svid error: sat=%2d %2d\n",sat,eph.sat);
         return -1;
     }
     if (!strstr(raw->opt,"-EPHALL")) {
@@ -985,6 +1020,7 @@ static int decode_enav(raw_t *raw, int sat, int off)
 /* decode beidou navigation data ---------------------------------------------*/
 static int decode_cnav(raw_t *raw, int sat, int off)
 {
+    //printf("decode_cnav\n");
     eph_t eph={0};
     unsigned int words[10];
     int i,id,pgn,prn;
@@ -992,6 +1028,7 @@ static int decode_cnav(raw_t *raw, int sat, int off)
     
     if (raw->len<48+off) {
         trace(2,"ubx rawsfrbx length error: sat=%d len=%d\n",sat,raw->len);
+        //printf("ubx rawsfrbx length error: sat=%d len=%d\n",sat,raw->len);
         return -1;
     }
     for (i=0;i<10;i++,p+=4) words[i]=U4(p)&0x3FFFFFFF; /* 30 bits */
@@ -1000,6 +1037,7 @@ static int decode_cnav(raw_t *raw, int sat, int off)
     id=(words[0]>>12)&0x07; /* subframe id (3bit) */
     if (id<1||5<id) {
         trace(2,"ubx rawsfrbx subfrm id error: sat=%2d\n",sat);
+        //printf("ubx rawsfrbx subfrm id error: sat=%2d\n",sat);
         return -1;
     }
     if (prn>5&&prn<59) { /* IGSO/MEO */
@@ -1019,6 +1057,7 @@ static int decode_cnav(raw_t *raw, int sat, int off)
         pgn=(words[1]>>14)&0x0F; /* page number (4bit) */
         if (pgn<1||10<pgn) {
             trace(2,"ubx rawsfrbx page number error: sat=%2d\n",sat);
+            //printf("ubx rawsfrbx page number error: sat=%2d\n",sat);
             return -1;
         }
         for (i=0;i<10;i++) {
@@ -1042,6 +1081,7 @@ static int decode_cnav(raw_t *raw, int sat, int off)
 /* decode glonass navigation data --------------------------------------------*/
 static int decode_gnav(raw_t *raw, int sat, int off, int frq)
 {
+    //printf("decode_gnav\n");
     geph_t geph={0};
     int i,j,k,m,prn;
     unsigned char *p=raw->buff+6+off,buff[64],*fid;
@@ -1050,6 +1090,7 @@ static int decode_gnav(raw_t *raw, int sat, int off, int frq)
     
     if (raw->len<24+off) {
         trace(2,"ubx rawsfrbx gnav length error: len=%d\n",raw->len);
+        //printf("ubx rawsfrbx gnav length error: len=%d\n",raw->len);
         return -1;
     }
     for (i=k=0;i<4;i++,p+=4) for (j=0;j<4;j++) {
@@ -1058,11 +1099,13 @@ static int decode_gnav(raw_t *raw, int sat, int off, int frq)
     /* test hamming of glonass string */
     if (!test_glostr(buff)) {
         trace(2,"ubx rawsfrbx glo string hamming error: sat=%2d\n",sat);
+        //printf("ubx rawsfrbx glo string hamming error: sat=%2d\n",sat);
         return -1;
     }
     m=getbitu(buff,1,4);
     if (m<1||15<m) {
         trace(2,"ubx rawsfrbx glo string no error: sat=%2d\n",sat);
+        //printf("ubx rawsfrbx glo string no error: sat=%2d\n",sat);
         return -1;
     }
     /* flush frame buffer if frame-id changed */
@@ -1090,11 +1133,13 @@ static int decode_gnav(raw_t *raw, int sat, int off, int frq)
 /* decode sbas navigation data -----------------------------------------------*/
 static int decode_snav(raw_t *raw, int sat, int off)
 {
+    //printf("decode_snav\n");
     int i,j,k,prn,tow,week;
     unsigned char *p=raw->buff+6+off,buff[64];
     
     if (raw->len<40+off) {
         trace(2,"ubx rawsfrbx snav length error: len=%d\n",raw->len);
+        //printf("ubx rawsfrbx snav length error: len=%d\n",raw->len);
         return -1;
     }
     tow=(int)time2gpst(timeadd(raw->time,-1.0),&week);
@@ -1114,8 +1159,9 @@ static int decode_rxmsfrbx(raw_t *raw)
 {
     int prn,sat,sys;
     unsigned char *p=raw->buff+6;
-    
+
     trace(4,"decode_rxmsfrbx: len=%d\n",raw->len);
+    //printf("decode_rxmsfrbx: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX RXM-SFRBX (%4d): sys=%d prn=%3d",raw->len,
@@ -1123,14 +1169,17 @@ static int decode_rxmsfrbx(raw_t *raw)
     }
     if (!(sys=ubx_sys(U1(p)))) {
         trace(2,"ubx rxmsfrbx sys id error: sys=%d\n",U1(p));
+        //printf("ubx rxmsfrbx sys id error: sys=%d\n",U1(p));
         return -1;
     }
     prn=U1(p+1)+(sys==SYS_QZS?192:0);
     if (!(sat=satno(sys,prn))) {
         if (sys==SYS_GLO&&prn==255) {
+            //printf("decode_rxmsfrbx: GLO and prn 255\n",sys,prn);
             return 0; /* suppress error for unknown glo satellite */
         }
         trace(2,"ubx rxmsfrbx sat number error: sys=%d prn=%d\n",sys,prn);
+        //printf("ubx rxmsfrbx sat number error: sys=%d prn=%d\n",sys,prn);
         return -1;
     }
     switch (sys) {
@@ -1148,8 +1197,9 @@ static int decode_trksfrbx(raw_t *raw)
 {
     int prn,sat,sys;
     unsigned char *p=raw->buff+6;
-    
+
     trace(4,"decode_trksfrbx: len=%d\n",raw->len);
+    //printf("decode_trksfrbx: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX TRK-SFRBX (%4d): sys=%d prn=%3d",raw->len,
@@ -1186,6 +1236,7 @@ static int decode_timtm2(raw_t *raw)
     double tr[6],tf[6];
 
     trace(4, "decode_timtm2: len=%d\n", raw->len);
+    //printf("decode_timtm2: len=%d\n", raw->len);
 
     if (raw->outtype) {
         sprintf(raw->msgtype, "UBX TIM-TM2 (%4d)", raw->len);
@@ -1235,6 +1286,7 @@ static int decode_ubx(raw_t *raw)
     /* checksum */
     if (!checksum(raw->buff,raw->len)) {
         trace(2,"ubx checksum error: type=%04x len=%d\n",type,raw->len);
+        //printf("ubx checksum error: type=%04x len=%d\n",type,raw->len);
         return -1;
     }
     switch (type) {
@@ -1306,6 +1358,7 @@ extern int input_ubx(raw_t *raw, unsigned char data)
     if (raw->nbyte==6) {
         if ((raw->len=U2(raw->buff+4)+8)>MAXRAWLEN) {
             trace(2,"ubx length error: len=%d\n",raw->len);
+            //printf("ubx length error: len=%d\n",raw->len);
             raw->nbyte=0;
             return -1;
         }