diff -ru original/core/rtw_mp.c new/core/rtw_mp.c
--- original/core/rtw_mp.c  2012-07-30 13:51:05.000000000 +0100
+++ new/core/rtw_mp.c	2013-04-27 01:03:54.803246633 +0100
@@ -1140,8 +1140,7 @@
 	_rtw_memset(ptr, payload, pkt_end - ptr);
 
 	//3 6. start thread
-	pmp_priv->tx.PktTxThread = kernel_thread(mp_xmit_packet_thread, pmp_priv, CLONE_FS|CLONE_FILES);
-	if(pmp_priv->tx.PktTxThread < 0)
+	if(!start_kthread(&pmp_priv->tx.PktTxThread, mp_xmit_packet_thread, pmp_priv, "8192cu-mp-xmit"))
 		DBG_871X("Create PktTx Thread Fail !!!!!\n");
 
 }
Only in original/core: .rtw_wlan_util.o.d
diff -ru original/include/osdep_service.h new/include/osdep_service.h
--- original/include/osdep_service.h	2012-07-30 13:51:05.000000000 +0100
+++ new/include/osdep_service.h	2013-04-27 01:03:54.811246677 +0100
@@ -100,6 +100,9 @@
 	#include <linux/pci.h>
 #endif
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
+	#include <linux/kthread.h>
+#endif
 	
 #ifdef CONFIG_USB_HCI
 	typedef struct urb *  PURB;
@@ -133,8 +136,12 @@
 	//typedef u32	_irqL;
 	typedef unsigned long _irqL;
 	typedef	struct	net_device * _nic_hdl;
-	
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
 	typedef pid_t		_thread_hdl_;
+#else
+	typedef struct task_struct * _thread_hdl_;
+#endif
 	typedef int		thread_return;
 	typedef void*	thread_context;
 
@@ -571,8 +578,8 @@
 {
 #ifdef PLATFORM_LINUX
 	//struct net_device *pnetdev = (struct net_device *)context;
-	//daemonize("%s", pnetdev->name);
-	daemonize("%s", "RTKTHREAD");
+	////daemonize("%s", pnetdev->name);
+	//daemonize("%s", "RTKTHREAD");
 	allow_signal(SIGTERM);
 #endif
 }
@@ -827,4 +834,8 @@
 
 #endif
 
+#ifdef PLATFORM_LINUX
+extern int start_kthread(_thread_hdl_ *t_hdl, int (*threadfn)(void *data),
+			 void *data, const char *name);
+#endif
 
diff -ru original/os_dep/linux/os_intfs.c new/os_dep/linux/os_intfs.c
--- original/os_dep/linux/os_intfs.c	2012-11-05 07:42:45.000000000 +0000
+++ new/os_dep/linux/os_intfs.c	2013-04-27 01:03:54.811246677 +0100
@@ -797,27 +797,22 @@
 	RT_TRACE(_module_os_intfs_c_,_drv_info_,("+rtw_start_drv_threads\n"));
 
 #ifdef CONFIG_SDIO_HCI
-	padapter->xmitThread = kernel_thread(rtw_xmit_thread, padapter, CLONE_FS|CLONE_FILES);
-	if(padapter->xmitThread < 0)
+	if(!start_kthread(&padapter->xmitThread, rtw_xmit_thread, padapter, "8192cu-xmit"))
 		_status = _FAIL;
 #endif
 
 #ifdef CONFIG_RECV_THREAD_MODE
-	padapter->recvThread = kernel_thread(recv_thread, padapter, CLONE_FS|CLONE_FILES);
-	if(padapter->recvThread < 0)
+	if(!start_kthread(&padapter->recvThread, recv_thread, padapter, "8192cu-recv"))
 		_status = _FAIL;	
 #endif
 
-	padapter->cmdThread = kernel_thread(rtw_cmd_thread, padapter, CLONE_FS|CLONE_FILES);
-	if(padapter->cmdThread < 0)
+	if(!start_kthread(&padapter->cmdThread, rtw_cmd_thread, padapter, "8192cu-cmd"))
 		_status = _FAIL;
 	else
 		_rtw_down_sema(&padapter->cmdpriv.terminate_cmdthread_sema); //wait for cmd_thread to run
-		
 
 #ifdef CONFIG_EVENT_THREAD_MODE
-	padapter->evtThread = kernel_thread(event_thread, padapter, CLONE_FS|CLONE_FILES);
-	if(padapter->evtThread < 0)
+	if(!start_kthread(&padapter->evtThread, event_thread, padapter, "8192cu-evt"))
 		_status = _FAIL;		
 #endif
 
diff -ru original/os_dep/osdep_service.c new/os_dep/osdep_service.c
--- original/os_dep/osdep_service.c	2012-07-30 13:51:05.000000000 +0100
+++ new/os_dep/osdep_service.c	2013-04-27 01:03:54.815246692 +0100
@@ -1553,3 +1553,19 @@
 #endif
 }
 
+#ifdef PLATFORM_LINUX
+int start_kthread(_thread_hdl_ *t_hdl, int (*threadfn)(void *data),
+		  void *data, const char *name)
+{
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
+	*t_hdl = kernel_thread(threadfn, data, CLONE_FS|CLONE_FILES);
+	if(*t_hdl < 0)
+#else
+	*t_hdl = kthread_run(threadfn, data, name);
+	if(IS_ERR(*t_hdl))
+#endif
+		return 0;
+	return -1;
+}
+#endif
+

diff -ru original/Makefile new/Makefile
--- original/Makefile	2012-07-30 08:51:05.000000000 -0400
+++ new/Makefile	2013-06-10 12:21:29.190230724 -0400
@@ -36,7 +36,8 @@
 CONFIG_RTL8192CU_REDEFINE_1X1 =n
 CONFIG_WAKE_ON_WLAN				=	n

-CONFIG_PLATFORM_I386_PC = y
+CONFIG_PLATFORM_I386_PC = n
+CONFIG_PLATFORM_BEAGLEBONE = y
 CONFIG_PLATFORM_TI_AM3517 = n
 CONFIG_PLATFORM_ANDROID_X86 = n
 CONFIG_PLATFORM_ARM_S3C2K4 = n
@@ -257,6 +258,16 @@
 MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
 INSTALL_PREFIX :=
 endif
+
+ifeq ($(CONFIG_PLATFORM_BEAGLEBONE), y)
+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
+ARCH=arm
+CROSS_COMPILE := arm-linux-gnueabi-
+KVER  := $(shell uname -r)
+KSRC ?= /lib/modules/$(KVER)/build
+MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
+INSTALL_PREFIX :=
+endif

 ifeq ($(CONFIG_PLATFORM_TI_AM3517), y)
 EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_SHUTTLE