diff --git a/packages/multimedia/crystalhd/build b/packages/multimedia/crystalhd/build
index e826cc3b6d..3c214a7b71 100755
--- a/packages/multimedia/crystalhd/build
+++ b/packages/multimedia/crystalhd/build
@@ -3,6 +3,15 @@
. config/options $1
$SCRIPTS/build toolchain
+$SCRIPTS/build linux
+
+cd $PKG_BUILD/driver/linux
+./configure --host=$TARGET_NAME \
+ --build=$HOST_NAME \
+ --prefix=/usr \
+ --with-kernel-path=$(kernel_path) \
+
+make V=1
cd $PKG_BUILD/linux_lib/libcrystalhd
diff --git a/packages/multimedia/crystalhd/patches/crystalhd-linux-2.6.36_ioctrl.diff b/packages/multimedia/crystalhd/patches/crystalhd-linux-2.6.36_ioctrl.diff
new file mode 100644
index 0000000000..f85dbb83d0
--- /dev/null
+++ b/packages/multimedia/crystalhd/patches/crystalhd-linux-2.6.36_ioctrl.diff
@@ -0,0 +1,40 @@
+diff -Naur crystalhd-3.8.0/driver/linux/crystalhd_flea_ddr.c crystalhd-3.8.0.patch/driver/linux/crystalhd_flea_ddr.c
+--- crystalhd-3.8.0/driver/linux/crystalhd_flea_ddr.c 2010-10-06 00:07:16.000000000 +0200
++++ crystalhd-3.8.0.patch/driver/linux/crystalhd_flea_ddr.c 2010-10-06 01:04:11.844215460 +0200
+@@ -24,6 +24,7 @@
+ * along with this driver. If not, see .
+ **********************************************************************/
+
++#include
+ #include "crystalhd_hw.h"
+ #include "crystalhd_flea_ddr.h"
+
+diff -Naur crystalhd-3.8.0/driver/linux/crystalhd_lnx.c crystalhd-3.8.0.patch/driver/linux/crystalhd_lnx.c
+--- crystalhd-3.8.0/driver/linux/crystalhd_lnx.c 2010-10-06 00:07:16.000000000 +0200
++++ crystalhd-3.8.0.patch/driver/linux/crystalhd_lnx.c 2010-10-06 01:04:31.543484731 +0200
+@@ -279,8 +279,13 @@
+ }
+
+ /* API interfaces */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35)
+ static int chd_dec_ioctl(struct inode *in, struct file *fd,
+ unsigned int cmd, unsigned long ua)
++#else
++static long irctl_ioctl(struct file *file,
++ unsigned int cmd, unsigned long ua)
++#endif
+ {
+ struct crystalhd_adp *adp = chd_get_adp();
+ crystalhd_cmd_proc cproc;
+@@ -365,7 +370,11 @@
+
+ static const struct file_operations chd_dec_fops = {
+ .owner = THIS_MODULE,
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35)
+ .ioctl = chd_dec_ioctl,
++#else
++ .unlocked_ioctl = chd_dec_ioctl,
++#endif
+ .open = chd_dec_open,
+ .release = chd_dec_close,
+ };
diff --git a/packages/multimedia/crystalhd/url b/packages/multimedia/crystalhd/url
index 66c8afa368..97aaa32795 100644
--- a/packages/multimedia/crystalhd/url
+++ b/packages/multimedia/crystalhd/url
@@ -1 +1 @@
-http://sources.openelec.tv/svn/crystalhd-137.tar.bz2
\ No newline at end of file
+http://sources.openelec.tv/svn/crystalhd-3.8.0.tar.bz2
\ No newline at end of file