diff --git a/Transceiver52M/Makefile.am b/Transceiver52M/Makefile.am
index 0e2276f..21b6e2e 100644
--- a/Transceiver52M/Makefile.am
+++ b/Transceiver52M/Makefile.am
@@ -21,7 +21,7 @@
 
 include $(top_srcdir)/Makefile.common
 
-AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) -I./common
+AM_CPPFLAGS = -Wall $(STD_DEFINES_AND_INCLUDES) -I./common
 AM_CXXFLAGS = -ldl -lpthread
 
 SUBDIRS = arm x86
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index e5f62bb..7aec64c 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -654,7 +654,7 @@
   }
   else if (!strcmp(command,"SETTSC")) {
     // set TSC
-    int TSC;
+    unsigned TSC;
     sscanf(buffer, "%3s %s %d", cmdcheck, command, &TSC);
     if (mOn)
       sprintf(response, "RSP SETTSC 1 %d", TSC);
diff --git a/Transceiver52M/UHDDevice.cpp b/Transceiver52M/UHDDevice.cpp
index 915cf32..56d48cc 100644
--- a/Transceiver52M/UHDDevice.cpp
+++ b/Transceiver52M/UHDDevice.cpp
@@ -352,6 +352,8 @@
 		dev->recv_async_msg();
 		pthread_testcancel();
 	}
+
+	return NULL;
 }
 
 /* 
diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp
index ece92b9..81a56a9 100644
--- a/Transceiver52M/radioInterface.cpp
+++ b/Transceiver52M/radioInterface.cpp
@@ -149,7 +149,7 @@
     return -1;
   }
 
-  for (int i = 0; i < newVector.size(); i++) {
+  for (size_t i = 0; i < newVector.size(); i++) {
     *itr++ = Complex<float>(floatVector[2 * i + 0],
 			    floatVector[2 * i + 1]);
   }
diff --git a/Transceiver52M/radioVector.cpp b/Transceiver52M/radioVector.cpp
index ee78407..2e3af9d 100644
--- a/Transceiver52M/radioVector.cpp
+++ b/Transceiver52M/radioVector.cpp
@@ -83,7 +83,7 @@
 {
 	float val = 0.0;
 
-	for (int i = 0; i < size(); i++)
+	for (size_t i = 0; i < size(); i++)
 		val += (*this)[i];
 
 	return val / (float) size();
diff --git a/Transceiver52M/sigProcLib.cpp b/Transceiver52M/sigProcLib.cpp
index 61bfe5b..54dd8fc 100644
--- a/Transceiver52M/sigProcLib.cpp
+++ b/Transceiver52M/sigProcLib.cpp
@@ -366,10 +366,11 @@
 signalVector *convolve(const signalVector *x,
                         const signalVector *h,
                         signalVector *y,
-                        ConvType spanType, int start,
-                        unsigned len, unsigned step, int offset)
+                        ConvType spanType, size_t start,
+                        size_t len, size_t step, int offset)
 {
-  int rc, head = 0, tail = 0;
+  int rc;
+  size_t head = 0, tail = 0;
   bool alloc = false, append = false;
   const signalVector *_x = NULL;
 
@@ -1000,7 +1001,7 @@
   complex amp;
   int _index = -1;
 
-  for (int i = 0; i < rxBurst.size(); i++) {
+  for (size_t i = 0; i < rxBurst.size(); i++) {
     val = rxBurst[i].norm2();
     if (val > max) {
       max = val;
@@ -1563,7 +1564,7 @@
 
   signalVector *L[Nf];
   signalVector::iterator Lptr;
-  float d;
+  float d = 1.0;
   for(int i = 0; i < Nf; i++) {
     d = G0.begin()->norm2() + G1.begin()->norm2();
     L[i] = new signalVector(Nf+nu);
diff --git a/Transceiver52M/sigProcLib.h b/Transceiver52M/sigProcLib.h
index 7dedee4..147c14c 100644
--- a/Transceiver52M/sigProcLib.h
+++ b/Transceiver52M/sigProcLib.h
@@ -53,13 +53,10 @@
 	@param spanType The type/span of the convolution.
 	@return The convolution result or NULL on error.
 */
-signalVector *convolve(const signalVector *a,
-                       const signalVector *b,
-                       signalVector *c,
-                       ConvType spanType,
-                       int start = 0,
-                       unsigned len = 0,
-                       unsigned step = 1, int offset = 0);
+signalVector *convolve(const signalVector *a, const signalVector *b,
+                       signalVector *c, ConvType spanType,
+                       size_t start = 0, size_t len = 0,
+                       size_t step = 1, int offset = 0);
 
 /** 
         Frequency shift a vector.
diff --git a/Transceiver52M/signalVector.h b/Transceiver52M/signalVector.h
index 2f65e28..c9cb105 100644
--- a/Transceiver52M/signalVector.h
+++ b/Transceiver52M/signalVector.h
@@ -43,9 +43,9 @@
 	void setAligned(bool aligned);
 
 private:
-	Symmetry symmetry;
 	bool real;
 	bool aligned;
+	Symmetry symmetry;
 };
 
 #endif /* _SIGNALVECTOR_H_ */
