diff --git a/recipes-isdn/lcr/files/0001-Fixed-compiler-warnings.patch b/recipes-isdn/lcr/files/0001-Fixed-compiler-warnings.patch
new file mode 100644
index 0000000..dcb99ae
--- /dev/null
+++ b/recipes-isdn/lcr/files/0001-Fixed-compiler-warnings.patch
@@ -0,0 +1,167 @@
+From 2aac6a668be131c610b6705a99817e6baf10599f Mon Sep 17 00:00:00 2001
+From: Andreas Eversberg <jolly@eversberg.eu>
+Date: Tue, 15 Dec 2015 20:49:18 +0100
+Subject: [PATCH] Fixed compiler warnings
+
+---
+ alawulaw.c | 18 +++++++++---------
+ gentones.c |  8 ++++----
+ genwave.c  | 10 +++++-----
+ 3 files changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/alawulaw.c b/alawulaw.c
+index cafe1af..f38fa46 100644
+--- a/alawulaw.c
++++ b/alawulaw.c
+@@ -13,7 +13,7 @@ signed int *audio_law_to_s32;
+ unsigned char silence;
+ 
+ /* ulaw -> signed 16-bit */
+-static signed int audio_ulaw_to_s32[] =
++static unsigned int audio_ulaw_to_s32[] =
+ {
+ 	0xffff8284, 0xffff8684, 0xffff8a84, 0xffff8e84,
+ 	0xffff9284, 0xffff9684, 0xffff9a84, 0xffff9e84,
+@@ -82,7 +82,7 @@ static signed int audio_ulaw_to_s32[] =
+ };
+ 
+ /* alaw -> signed 16-bit */
+-static signed int audio_alaw_to_s32[] =
++static unsigned int audio_alaw_to_s32[] =
+ {
+ 	0x000013fc, 0xffffec04, 0x00000144, 0xfffffebc,
+ 	0x0000517c, 0xffffae84, 0x0000051c, 0xfffffae4,
+@@ -155,7 +155,7 @@ unsigned char audio_s16_to_law[65536];
+ 
+ 
+ /* table is used to generate s16_to_alaw */
+-static short audio_alaw_relations[] =
++static unsigned short audio_alaw_relations[] =
+ {
+ 	0x8684, 0x55, 0x8a84, 0xd5, 0x8e84, 0x15, 0x9284, 0x95,
+ 	0x9684, 0x75, 0x9a84, 0xf5, 0x9e84, 0x35, 0xa284, 0xb5,
+@@ -231,32 +231,32 @@ void generate_tables(char law)
+ 
+ 	if (law == 'a') {
+ 		silence = 0x2a;
+-		audio_law_to_s32=audio_alaw_to_s32;
++		audio_law_to_s32 = (signed int *)audio_alaw_to_s32;
+ 		/* generating alaw-table */
+ 		i = j = 0;
+ 		while(i < 65536) {
+-			if (i-32768 > audio_alaw_relations[j<<1])
++			if (i-32768 > (signed short)audio_alaw_relations[j<<1])
+ 				j++;
+ 			if (j>255)
+ 				j=255;
+ 			audio_s16_to_law[(i-32768) & 0xffff]
+-				 = audio_alaw_relations[(j<<1)|1];
++				 = (signed short)audio_alaw_relations[(j<<1)|1];
+ 			i++;
+ 		}
+ 	} else {
+ 		silence = 0xff;
+-		audio_law_to_s32=audio_ulaw_to_s32;
++		audio_law_to_s32 = (signed int *)audio_ulaw_to_s32;
+ 		/* generating ulaw-table */
+ 		i = j = 0;
+ 		while(i < 32768) {
+-			if (i-32768 > audio_ulaw_to_s32[j])
++			if (i-32768 >  (signed int)audio_ulaw_to_s32[j])
+ 				j++;
+ 			audio_s16_to_law[(i-32768) & 0xffff] = j;
+ 			i++;
+ 		}
+ 		j = 255;
+ 		while(i < 65536) {
+-			if (i-0x32768 > audio_ulaw_to_s32[j])
++			if (i-0x32768 >  (signed int)audio_ulaw_to_s32[j])
+ 				j--;
+ 			audio_s16_to_law[(i-32768) & 0xffff] = j;
+ 			i++;
+diff --git a/gentones.c b/gentones.c
+index aaac659..a712f1a 100644
+--- a/gentones.c
++++ b/gentones.c
+@@ -10,7 +10,7 @@
+ 
+ 
+ /* ulaw -> signed 16-bit */
+-static short isdn_audio_ulaw_to_s16[] =
++static unsigned short isdn_audio_ulaw_to_s16[] =
+ {
+ 	0x8284, 0x8684, 0x8a84, 0x8e84, 0x9284, 0x9684, 0x9a84, 0x9e84,
+ 	0xa284, 0xa684, 0xaa84, 0xae84, 0xb284, 0xb684, 0xba84, 0xbe84,
+@@ -47,7 +47,7 @@ static short isdn_audio_ulaw_to_s16[] =
+ };
+ 
+ /* alaw -> signed 16-bit */
+-static short isdn_audio_alaw_to_s16[] =
++static unsigned short isdn_audio_alaw_to_s16[] =
+ {
+ 	0x13fc, 0xec04, 0x0144, 0xfebc, 0x517c, 0xae84, 0x051c, 0xfae4,
+ 	0x0a3c, 0xf5c4, 0x0048, 0xffb8, 0x287c, 0xd784, 0x028c, 0xfd74,
+@@ -92,7 +92,7 @@ unsigned char encode_isdn(short sample, char law)
+ 
+ 	i=0;
+ 	while(i<256) {
+-		diff = (law=='u')?isdn_audio_ulaw_to_s16[i]:isdn_audio_alaw_to_s16[i]-sample;
++		diff = (law=='u')?((signed short)isdn_audio_ulaw_to_s16[i]):((signed short)isdn_audio_alaw_to_s16[i])-sample;
+ //printf("s16=%d sample%d diff=%d\n",isdn_audio_to_s16[i],sample,diff);
+ 		if (diff<0)
+ 			diff=0-diff;
+@@ -150,7 +150,7 @@ void write_wav(FILE *fp, char *wav, char law)
+ 	short sample, sample2;
+ 	signed int size, chunk;
+ 	int gotfmt = 0, gotdata = 0;
+-	int ret;
++	int __attribute__((__unused__)) ret;
+ 
+ 	if ((wfp=fopen(wav,"r"))) {
+ 		ret=fread(buffer,8,1,wfp);
+diff --git a/genwave.c b/genwave.c
+index 685b5fa..fe74658 100644
+--- a/genwave.c
++++ b/genwave.c
+@@ -9,7 +9,7 @@
+ 
+ 
+ /* ulaw -> signed 16-bit */
+-static short isdn_audio_ulaw_to_s16[] =
++static unsigned short isdn_audio_ulaw_to_s16[] =
+ {
+ 	0x8284, 0x8684, 0x8a84, 0x8e84, 0x9284, 0x9684, 0x9a84, 0x9e84,
+ 	0xa284, 0xa684, 0xaa84, 0xae84, 0xb284, 0xb684, 0xba84, 0xbe84,
+@@ -46,7 +46,7 @@ static short isdn_audio_ulaw_to_s16[] =
+ };
+ 
+ /* alaw -> signed 16-bit */
+-static short isdn_audio_alaw_to_s16[] =
++static unsigned short isdn_audio_alaw_to_s16[] =
+ {
+ 	0x13fc, 0xec04, 0x0144, 0xfebc, 0x517c, 0xae84, 0x051c, 0xfae4,
+ 	0x0a3c, 0xf5c4, 0x0048, 0xffb8, 0x287c, 0xd784, 0x028c, 0xfd74,
+@@ -100,7 +100,7 @@ void write_law(FILE *fp, char *name, char law)
+ 	unsigned int i;
+ 	short sample;
+ 	unsigned int size, wsize;
+-	int ret;
++	int __attribute__((__unused__)) ret;
+ 
+ 	if ((lfp=fopen(name,"r"))) {
+ 		/* get size */
+@@ -134,9 +134,9 @@ void write_law(FILE *fp, char *name, char law)
+ 		while(i < size) {
+ 			ret = fread(buffer, 1, 1, lfp);
+ 			if (law == 'a')
+-				sample = isdn_audio_alaw_to_s16[*buffer];
++				sample = (signed short)isdn_audio_alaw_to_s16[*buffer];
+ 			else
+-				sample = isdn_audio_ulaw_to_s16[*buffer];
++				sample = (signed short)isdn_audio_ulaw_to_s16[*buffer];
+ 			ret = fwrite(&sample, 2, 1, fp);
+ 			i+=2;
+ 		}
+-- 
+1.9.1
+
diff --git a/recipes-isdn/lcr/lcr_git.bb b/recipes-isdn/lcr/lcr_git.bb
index d08dbf1..5858c89 100644
--- a/recipes-isdn/lcr/lcr_git.bb
+++ b/recipes-isdn/lcr/lcr_git.bb
@@ -10,6 +10,7 @@
 SRCREV = "38fce218f8897d120aeba56e811ef7dada898c2c"
 SRC_URI = "git://git.misdn.eu/lcr.git \
 	   file://lcr-disable-gsmfr.diff \
+	   file://0001-Fixed-compiler-warnings.patch \
            file://lcr.init             "
 S = "${WORKDIR}/git"
 
