I would contribute with some advances. This is not a final result, just a WIP on my intent to fix the problem. Note: I am not a expert, if you try this, it is under your own risk. This could break your operating system installation or make it unstable. This is how I solve the issue for my particular machine, this couldn't be the same for your machine or kernel. 1) First download the source and uncompress sudo apt-get source blcr-dkms=0.8.4-2ubuntu1 cd blcr-* 2) As minor warning, from Perl to 5.13.5 or beyond Debian bug #650522 suggests surrounding each use of qw(…) with rounded parenthesis: (qw(…)). There are a couple on using on acinclude.m4. So I fixed that for avoid the warning. Ubuntu shipped on Quantal 5.14.2, so it triggers the warning too: perl -v | grep "(v" This is perl 5, version 14, subversion 2 (v5.14.2) built for i686-linux-gnu-thread-multi-64int 3) I discover that the configure has a problem finding the kernel version path. /usr/src/linux-headers-3.5.0-3-generic/include/linux/version.h But in only search on other diferent paths with "cr_linux_dir" on acinclude.m4 without "linux-headers", so I add: For the first for: /usr/src/linux-headers-[$1] \ And for the second: /usr/src/linux-headers-${cr_tmp_ver} \ That enable the searching on 3.x kernels on ubuntu. 4) Next problem is the instruction: m4_define([cr_kern_maj_min_patt],[[2\.[46]\.]])[]dnl No SUBLEVEL or following As pointed on upstream debian bug, it make fails the build (cause of this bug) I changed to: m4_define([cr_kern_maj_min_patt],[[3\.[0-9]\.]])[]dnl No SUBLEVEL or following This enable only for 3.X kernels, it could be improved for allow 2.X and 3.X kernels, but cafeful because the var cr_kern_maj_min_patt is concatenated for the third version number. That enable the part of: if ((my $uts) = /=${stamp}->"(3\.[0-9]\.[0-9].*)"<-/o) { For detect the UTS_RELEASE constant. This constant is defined on $ cat /usr/src/linux-headers-3.5.0-3-generic/include/generated/utsrelease.h #define UTS_RELEASE "3.5.0-3-generic" sudo nano acinclude.m4 sudo ./autogen.sh 5) With this, you can progress configuring the package, but I don't know if it is a special configuration on my machine (SMP) or others, but it ends with: ====================================================================== Please review the following configuration information: Kernel source directory = /usr/src/linux-headers-3.5.0-3-generic Kernel build directory = /usr/src/linux-headers-3.5.0-3-generic Kernel symbol table = /boot/System.map-3.5.0-3-generic Kernel version probed from kernel build = 3.5.0-3-generic Kernel running currently = 3.5.0-3-generic ====================================================================== configure: error: Kernel source is configured uni-processor but the kernel symbol table is SMP. Consider specifying a symbol table with --with-system-map or --with-vmlinux. Or, if using kernel sources that are configured by /boot/kernel.h, you may try --with-kernel-type=SMP to force an SMP interpretation of the sources. $ sudo ./configure --with-system-map configure: error: Kernel source is configured uni-processor but the kernel symbol table is SMP. Consider specifying a symbol table with --with-system-map or --with-vmlinux. Or, if using kernel sources that are configured by /boot/kernel.h, you may try --with-kernel-type=SMP to force an SMP interpretation of the sources. If I use all the options and even install linux-source I cannot get to pass. sudo apt-get install linux-source I discover that the acinclude.m4 is searching on /boot/kernel.h file, but the file doesn't exist. So I change a little the script for read on the right location: /usr/src/linux-headers-3.5.0-3-generic/include/linux/kernel.h This is a tricky command like: locate kernel.h | grep `uname -r` | grep linux/kernel.h This can be improved, but I modify the acinclude.m4 like this: cr_kernel_type=`echo $1 | tr 'a-z' 'A-Z'` cr_kernel_version_string = `uname -r` cr_header=`locate kernel.h | grep $cr_kernel_version_string | grep linux/kernel.h` sudo ./configure --with-kernel-type=SMP But It still fails, so I comment that part, for continue al least seeing other possible errors. For example, on kernel 3.X some checks are dirrent: This: CR_CHECK_KERNEL_MEMBER([fdtable.next_fd],[ #include #include #if HAVE_LINUX_FDTABLE_H #include #endif ],[struct fdtable],[int],[next_fd]) Change for: CR_CHECK_KERNEL_MEMBER([fdtable.next],[ #include #include #if HAVE_LINUX_FDTABLE_H #include #endif ],[struct fdtable],[struct fdtable],[next]) But it still fails, so probably I still doing something wrong. 6) Another bug fail is the failure with autoconf.h. The required kernel header file autoconf.h no longer lives at include/linux/autoconf.h; for quite some time, it's been at include/generated/autoconf.h, and the relocation of that generated autoconf.h file appears to go back to december of 2009, according to the git commit: commit 5a865c0606eb44d5d12cabb429751c83712183de Merge: 331d9d5 46e75f6 Author: Linus Torvalds