[KERNEL/MOD] [LINUX] [Rootbind] [Native EMMC/all TF101&TF101G/fast/tested] [2-Jul-13]

Search This thread

pbecchi

Member
Aug 28, 2014
18
3
How to add driver/modules to modules-3.1.10-15-gabaf62d

I have followed this guide hhtps://wiki.ubuntu.com/KernelTeam/KernelGitBuild exept were marqued inBold.

Prerequisites
There are a few tools that are necessary in order to build your own kernel(s). The 'git' (or 'git-core' for 10.04 or before) package provides the git revision control system which will be used to clone the mainline git repository. The 'kernel-package' provides the make-kpkg utility which automatically build your kernel and generate the linux-image and linux-header .deb files which can be installed. You will need to install the following packages:

sudo apt-get install git build-essential kernel-package fakeroot libncurses5-dev

Kernel Build and Installation
Change to the directory where you want to clone the git tree. In this example we will use $HOME:

cd $HOME
Clone the mainline kernel git tree:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
I have downloaded the git:https://github.com/jmrohwer/TF101-GNU-kernel end extrated the zip

I have not checked the commits.
Change to directory linux:
cd linux
Info (!) If you only want to test all commits up to and including a specific one, instead of every commit you just downloaded, one may execute:
git checkout COMMIT
where COMMIT is the specific commit number (ex. 9587190107d0c0cbaccbf7bf6b0245d29095a9ae).

You want now to clean up from previous build(not necessary first time), with
sudo make mrproper


Copy the kernel config file from your existing system to the kernel tree:
cp /boot/config-`uname -r` .config
Since /boot/config-.. not exist, I have followed SteeveJ guide:
extracted /proc/config.gz to .config
or extracted the .config from the git with:
make tf101-linux_defconfig
verify:that CONFIG_LOCALVERSION=-15 (in my case) is correct!

Bring the config file up to date. Answer any questions that get prompted. Unless you know you are interested in a particular feature, accepting the default option by pressing Enter should be a safe choice:
make oldconfig
In cases where your kernel source is significantly newer than the existing config file, you'll be presented with all of the new config options for which there is no existing config file setting. You can either sit there and keep hitting Enter to take the default (generally safe), or you can just run:
yes '' | make oldconfig
which emulates exactly the same thing and saves you all that time.
(optional) If you need to make any kernel config changes, do the following and save your changes when prompted:

make menuconfig

Selecting the driver I want to add -(>Drivers ->Usb ->.Usbserial->fdti_sio in my case)


From now on the Guide is not relevant anymore I had to continue using other suggestions.Thanks to SteeveJ and TomTcom

Build the modules files using a thread per core + 2. This process may take time:
make -j2 modules

Finally I try to install the new module:
insdep driverFileName.ko

THANKS TO:
JROHWER
STEEVEJ
TOMTCOM
 
Last edited:
  • Like
Reactions: TomTcom

jrohwer

Senior Member
Mar 4, 2011
424
286
The vanilla Linux source code has been extensively modified to make it work on our TF101. Rather than cloning the mainline tree, clone my tree:
https://github.com/jmrohwer/TF101-GNU-kernel

The localversion has to do with the latest commit in the kernel tree. Of course this won't be present in the mainline tree as the changes I (and others) have made are not pushed back to mainline. They are only for our TF101. So if you clone my tree, you should just be able to do:
Code:
make tf101-linux_defconfig
make menuconfig         (then select all the changes you want to make, e.g. new modules to build)
make -j2 modules

I have followed this guide hhtps://wiki.ubuntu.com/KernelTeam/KernelGitBuild exept were marqued inBold.

Prerequisites
There are a few tools that are necessary in order to build your own kernel(s). The 'git' (or 'git-core' for 10.04 or before) package provides the git revision control system which will be used to clone the mainline git repository. The 'kernel-package' provides the make-kpkg utility which automatically build your kernel and generate the linux-image and linux-header .deb files which can be installed. You will need to install the following packages:

sudo apt-get install git build-essential kernel-package fakeroot libncurses5-dev

Kernel Build and Installation
Change to the directory where you want to clone the git tree. In this example we will use $HOME:

cd $HOME
Clone the mainline kernel git tree:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
I have downloaded end extrated the zip

I have not checked the commits. It that necessary?
Change to directory linux:
cd linux
Info (!) If you only want to test all commits up to and including a specific one, instead of every commit you just downloaded, one may execute:
git checkout COMMIT
where COMMIT is the specific commit number (ex. 9587190107d0c0cbaccbf7bf6b0245d29095a9ae).

Copy the kernel config file from your existing system to the kernel tree:
cp /boot/config-`uname -r` .config
Since /boot/config-.. not exist, I have followed SteeveJ guide: extracted /proc/config.gz to .config

Bring the config file up to date. Answer any questions that get prompted. Unless you know you are interested in a particular feature, accepting the default option by pressing Enter should be a safe choice:
make oldconfig
In cases where your kernel source is significantly newer than the existing config file, you'll be presented with all of the new config options for which there is no existing config file setting. You can either sit there and keep hitting Enter to take the default (generally safe), or you can just run:
yes '' | make oldconfig
which emulates exactly the same thing and saves you all that time.
(optional) If you need to make any kernel config changes, do the following and save your changes when prompted:

make menuconfig
Selecting the driver I want to add ->Drivers ->Usb ->.......

Clean the kernel source directory:
make clean
This removed my previous post errors

From now on the Guide is not relevant anymore I had to continue using other suggestions.Thanks to SteeveJ and TomTom

Build the modules files using a thread per core + 2. This process may take time:
make -j2 modules

Finally I try to install the new module:
insdep driverFileName.ko

At this point I get an "wrong format" error I understand due to different kernel versions:
I can I fix this? I have to recompile using "LOCALVERSION=-15-gabaf62d" ?
 
  • Like
Reactions: TomTcom

pbecchi

Member
Aug 28, 2014
18
3
JROHWER
THANKS A LOT!!
I have seen now your previous post!
Since I have cloned your Git and spent a couple of day on finding a way out ,I will try anyhow to compile the module by the suggested code.
THanks
 

pbecchi

Member
Aug 28, 2014
18
3
The vanilla Linux source code has been extensively modified to make it work on our TF101. Rather than cloning the mainline tree, clone my tree:
https://github.com/jmrohwer/TF101-GNU-kernel

The localversion has to do with the latest commit in the kernel tree. Of course this won't be present in the mainline tree as the changes I (and others) have made are not pushed back to mainline. They are only for our TF101. So if you clone my tree, you should just be able to do:
Code:
make tf101-linux_defconfig
make menuconfig         (then select all the changes you want to make, e.g. new modules to build)
make -j2 modules
Thank you Jrohwer: the new modules library of your previous post work like a charm!!
Now I am trying to compile and add the module myself, but I have some other questions:
- make tf101-linux_defconfig create the file .config but how does he know what kernel I am using -10 , -12 or -15?
-I have run :
make tf101-linux_defconfig
make menuconfig
make clean
make -j2 modules
but I get the error:
make[2]: *** [silentoldconfig] Error 1
make[1]: *** [silentoldconfig] Error 2
make: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop
??????:confused:
 

jrohwer

Senior Member
Mar 4, 2011
424
286
Thank you Jrohwer: the new modules library of your previous post work like a charm!!
Now I am trying to compile and add the module myself, but I have some other questions:
- make tf101-linux_defconfig create the file .config but how does he know what kernel I am using -10 , -12 or -15?
-I have run :
make tf101-linux_defconfig
make menuconfig
make clean
make -j2 modules
but I get the error:
make[2]: *** [silentoldconfig] Error 1
make[1]: *** [silentoldconfig] Error 2
make: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop
??????:confused:

There is a key CONFIG_LOCALVERSION in the .config which specifies the local version (in this case -15). If you have the latest git source, then this should be set at -15. You can of course change it yourself if you want.

I am not sure about the error you are getting. Maybe try once to compile the kernel itself (just using make -j2). It may be that this creates some files during the build process that are then needed for building the modules. After you've done it once you should be able to just compile the modules.
 

TomTcom

Senior Member
Mar 27, 2011
1,192
535
Pbecchi - don't mix the guide from me with commands or instructions from this thread. I believe jrohwer said the git can be cloned in this thread which means the config and source and code isn't the same.
 

pbecchi

Member
Aug 28, 2014
18
3
There is a key CONFIG_LOCALVERSION in the .config which specifies the local version (in this case -15). If you have the latest git source, then this should be set at -15. You can of course change it yourself if you want.

I am not sure about the error you are getting. Maybe try once to compile the kernel itself (just using make -j2). It may be that this creates some files during the build process that are then needed for building the modules. After you've done it once you should be able to just compile the modules.

Thank's again.
CONFIG_LOCALVERSION=-15 is already set!

I tried to understand the reason for the other error:
it was related to the previous "make modules" I did..... it was not necessary any recompile since modules where alredy there!
Then I run:
sudo make mrproper ->to clean up everything

and then again:

make tf101-linux_defconfig
make menuconfig
make -j2 modules

and ... this time .....WORKED!!:)
I than have substituted ftdi_sio.ko in the /lib/modules/...../ and....
THE DRIVER WORKS!!!:)
I will edit my previous post to include these commands!!
Thanks to everybody
 
  • Like
Reactions: zachf714

smokesignals

Member
Feb 23, 2008
14
7
I don't recall having any issues with the GPU drivers, but that was over a year ago. I eventually gave up on trying to run real Linux on my tablet and flashed it back to stock anyway (and sold it to Gazelle), since it was never going to be a particularly great experience in terms of performance.
 

ramoncio

Member
Feb 10, 2006
41
1
Denia
Hi guys, great work bringing linux to TF101!!
I have been trying to run ubuntu on my tf101 with no success, tried all different kernels and images, but none of them boots.
I have been been using linux for years, even compiled a couple of android and linux kernels for my rk3188 device, and made a bash script to crosscompile kernels and create minimal systems with fakeroot, so I'm not afraid of linux console.
I have TWRP and latest 4.4 katkiss.
I installed bigwheelie memory modification script (bash version), so now I have 25Gb of internal storage available, maybe this is the problem?
I get errors like: cant find /lib/modules/3.XXXXX/modules.dep but if I boot from android i can see the file is there in /data/linuxroot/lib/modules/3.XXXXX/modules.dep.
Any pointers?

Thanks in advance!
 
Last edited:

Kingzak34

Senior Member
Jan 5, 2011
3,097
1,543
South
Google Nexus 4
OnePlus One
Hi guys, great work bringing linux to TF101!!
I have been trying to run ubuntu on my tf101 with no success, tried all different kernels and images, but none of them boots.
I have been been using linux for years, even compiled a couple of android and linux kernels for my rk3188 device, and made a bash script to crosscompile kernels and create minimal systems with fakeroot, so I'm not afraid of linux console.
I have TWRP and latest 4.4 katkiss.
I installed bigwheelie memory modification script (bash version), so now I have 25Gb of internal storage available, maybe this is the problem?
I get errors like: cant find /lib/modules/3.XXXXX/modules.dep but if I boot from android i can see the file is there in /data/linuxroot/lib/modules/3.XXXXX/modules.dep.
Any pointers?
This error is OK.

What did you do exactly, and what happened ?
 

ramoncio

Member
Feb 10, 2006
41
1
Denia
This error is OK.

What did you do exactly, and what happened ?

Oh great! I wasn't expecting such a fast answer :)

Did a small script to run it on the tablet on a ssh shell, and have been modifying it for different images and kernels:

# run this as root
busybox mount -o remount,rw /
rm -rf /data/linuxroot
mkdir -p /data/linuxroot
chmod 755 /data/linuxroot
cd /data/linuxroot
#tar -pxvjf /storage/emulated/0/Download/kubuntu-14.04.tar.bz2
tar -pxvzf /storage/emulated/0/Download/tf101-14.04-Lubuntu-Tegra-armaf.tar.gz
cp -R /storage/emulated/0/Download/3.1* /data/linuxroot/lib/modules/
busybox mount -o remount,ro /
reboot recovery

I think with 1.2 kernel screen was black, and with one of the combinations I can't recall now I even got an ubuntu logo appeared, and some error wanting me to ignore or continue, but just for once.
 

Kingzak34

Senior Member
Jan 5, 2011
3,097
1,543
South
Google Nexus 4
OnePlus One
Oh great! I wasn't expecting such a fast answer :)

Did a small script to run it on the tablet on a ssh shell, and have been modifying it for different images and kernels:

# run this as root
busybox mount -o remount,rw /
rm -rf /data/linuxroot
mkdir -p /data/linuxroot
chmod 755 /data/linuxroot
cd /data/linuxroot
#tar -pxvjf /storage/emulated/0/Download/kubuntu-14.04.tar.bz2
tar -pxvzf /storage/emulated/0/Download/tf101-14.04-Lubuntu-Tegra-armaf.tar.gz
cp -R /storage/emulated/0/Download/3.1* /data/linuxroot/lib/modules/
busybox mount -o remount,ro /
reboot recovery

I think with 1.2 kernel screen was black, and with one of the combinations I can't recall now I even got an ubuntu logo appeared, and some error wanting me to ignore or continue, but just for once.
For now kernel that should be used is the 15 one. ( The last one too )

You may have to fix error on your android partition, check in this thread to correct filesystem errors method is somewhere not far.
 

ramoncio

Member
Feb 10, 2006
41
1
Denia
After the script, it boots into recovery, and I flash kernel. I usually get some errors about files in /dev/ when flashing kernel, but it reboots with penguins most of the times.

---------- Post added at 09:05 PM ---------- Previous post was at 09:01 PM ----------

For now kernel that should be used is the 15 one. ( The last one too )

You may have to fix error on your android partition, check in this thread to correct filesystem errors method is somewhere not far.

Ok thanks!! I'll look into checking filesystem, stick with 1,5 and report back, maybe with screenshots.
Any recommended image? I'd like to try that ubuntu base with tegra drivers included, and I'll try different desktops.

---------- Post added at 09:12 PM ---------- Previous post was at 09:05 PM ----------

One more thing, when I got this device, it had no serial number, so I don't know for sure if this is a SBK1 or SBK2 device.
When running bigwheelie script, I got asked for device type and selected SBK1, it all worked well without errors, and all android apps seem to run just fine, but I'm not fully confident everything is fine, and more since I don't seem to be able to run linux.
 

Kingzak34

Senior Member
Jan 5, 2011
3,097
1,543
South
Google Nexus 4
OnePlus One
I don't know for skb version. But at least if it worked it think it's good.

You can use the image you want there is no problem about that. The one you chose is good.

Tapatalké depuis mon OnePlus One MIUI !
 

ramoncio

Member
Feb 10, 2006
41
1
Denia
I can't find how to fix internal filesystem.
From Terminal? ADB? TWRP?
In TWRP i can fix all partitions but internal memory.

Tried again the script with 14.04-base.tar.gz and 3.1.10-15-gabaf62d kernel.
Attached you can find the first and second boot captures.
First boot freezes there.
I restart and second boot ends on a loop with second capture.

Will keep searching to see if I can fix filesystem. I can reformat it if needed.
But after installing bigwheelie I haven't done much, it shouldn't be broken.
Just played a couple of games, installed a few apps and played with ubuntu images and kernels.
 

Attachments

  • first_20150109_112214.jpg
    first_20150109_112214.jpg
    306.1 KB · Views: 116
  • second_20150109_112438.jpg
    second_20150109_112438.jpg
    292.6 KB · Views: 124

Kingzak34

Senior Member
Jan 5, 2011
3,097
1,543
South
Google Nexus 4
OnePlus One
Don't connect dock until you get to login screen. It avoid errors and lags from 2nd screen.

For first screen I don't know.

To fix files stem I don't remember check on image thread too. I remember seeing it but I don't remember where. I'm sure it's in this thread or image thread.

Tapatalké depuis mon OnePlus One MIUI !
 

Top Liked Posts

  • There are no posts matching your filters.
  • 21
    [KERNEL/MOD] [LINUX] [Rootbind] [Native EMMC/all TF101&TF101G/fast/tested] [2-Jul-13]

    UPDATE 2013/11/08: New kernel released with USB and framebuffer fixed. See post #3.
    UPDATE 2014/05/16: New Ubuntu 14.04 filesystem. See point #2 below under Installation.
    UPDATE 2014/06/03: New kernel released with USB and framebuffer fixed, OC to 1.5 GHz. See post #3 and #326.
    UPDATE 2014/07/09: New kernel released with OC to 1.5 GHz fully working, boots every time. See post #3 and #334.

    This is a kernel/initrd mod that allows you to run Linux (Ubuntu, Debian, Arch,...) on your TF101 from the internal EMMC (/data partition in Android) without repartitioning your tab.

    Disclaimer:
    This works on my tablet and I use it daily. However, I am not responsible for any bricks or if you damage your beloved TF. YOU ARE DOING THIS AT YOUR OWN RISK!


    Features and advantages:
    1. Fast (and I mean about as fast as it's gonna get on this device). See post #2 for benchmarks.
    2. No need to repartition to get this. Previously TF101 users could run Linux on EMMC but they had to repartition with wheelie/nvflash, but it wasn't available to TF101G users (of which I'm one).
    3. Any free space on your /data partition is available to both Linux and Android. When you delete stuff on either operating system, the free space is available for both again, as they are running off the same partition. Previously, when you re-partitioned e.g. with OLiFE you had to allocate a certain space (8GB by default) for Linux, then this was not available for Android even if you're not using all of it in Linux.
    4. Way faster than loopmount, especially for disk writes.
    5. Way faster than running Linux off a MicroSD card ext4 partition (even with class 10).
    6. Dualboot is achieved just by flashing either the Android or the Linux kernel.

    So how does this work?
    The kernel/initrd is modded to take an extra parameter "bind=/path/to/linux/rootfs" on the command line. This will then bind-mound that path to the Linux root mount. It works pretty similar to the way a loop-mounted linux image is loaded and set up during boot, except that now bind-mount is used, not a loop-mount. This is possible because both Android and Linux use the ext4 filesystem, so they can actually share the same partition.

    N.B. This thread is not a guide on how to get Ubuntu running on your TF101. There are plenty of guides for that, e.g.
    Make sure to read those threads to get an idea of how this works.

    READ THESE INSTRUCTIONS CAREFULLY!

    Installation:

    1. Take a Nandroid backup, just in case something goes wrong.
    2. Get a Linux root filesystem if you don't already have one.
      See this thread for a discussion of various filesystems available for rootbind.

      Alternatively roll your own using debootstrap as described by shaola:
      http://xdaforums.com/showthread.php?t=1476835

      NEW! For a fully working Kubuntu 14.04 image (with graphics acceleration using the Nvidia drivers) see this post: http://xdaforums.com/showpost.php?p=52697775&postcount=303
      This is already an image in a tar file so it doesn't need to be mounted, so instead of the code below you can merely do the following:
      Code:
      mkdir -p /data/linuxroot
      busybox chmod 755 /data/linuxroot
      cd /data/linuxroot
      tar -xpjf /path/to/my/saved/kubuntu-14.04.tar.bz2

    3. Running Android, copy the root filesystem to a directory on your /data partition, preserving the permissions. The easiest is with the "tar" command (see below). The default install assumes that Linux lives in /data/linuxroot under Android.

      For a Linux image in a file that is used for loop-mount (assume it is in /sdcard/ubuntu.img, or edit accordingly), run the following in a terminal when running Android (make sure you are root):
      Code:
      busybox mount -o remount,rw /
      mkdir -p /data/linuxroot
      busybox chmod 755 /data/linuxroot
      mkdir -p /mnt/ubuntu
      busybox mount -o loop /sdcard/ubuntu.img /mnt/ubuntu
      cd /mnt/ubuntu
      tar -cvp * | tar -C /data/linuxroot -xp
      cd /
      busybox umount /mnt/ubuntu
      rmdir /mnt/ubuntu
      busybox mount -o remount,ro /
      (note in tar command first -c is lowercase, second -C is uppercase)

      For a Linux rootfs that lives on a separate partition (e.g. 2nd part. on MicroSD), run the following (assumes linux is in /dev/block/mmcblk1p2, otherwise edit accordingly):
      Code:
      busybox mount -o remount,rw /
      mkdir -p /data/linuxroot
      busybox chmod 755 /data/linuxroot
      mkdir -p /mnt/ubuntu
      busybox mount -t ext4 /dev/block/mmcblk1p2 /mnt/ubuntu
      cd /mnt/ubuntu
      tar -cvp * | tar -C /data/linuxroot -xp
      cd /
      busybox umount /mnt/ubuntu
      rmdir /mnt/ubuntu
      busybox mount -o remount,ro /
    4. Copy kernel modules to your rootfs. Download modules-3.1.10-9.tar.gz to your /sdcard. then:
      Code:
      cd /data/linuxroot/lib/modules
      tar -xzf /sdcard/modules-3.1.10-9.tar.gz
    5. Flash the Linux kernel. Either flash the zip from recovery or copy the kernelblob directly to the staging partition with dd (if you don't know what I'm talking about here, then use the recovery method).
    6. Reboot 'n enjoy! Remember to run "sudo depmod -a" after the first Linux boot, and reboot. Otherwise your modules won't load and wifi, etc., won't work.
    7. To re-boot into Android, simply flash the boot image/kernelblob from your Android ROM.

    Notes:
    • The kernel is compiled from Jhinta's source with a few modifications to the config - http://xdaforums.com/showthread.php?t=1683145
    • Make sure not to have a /host directory in your Linux rootfs - this interferes with the bind mount!
    • The Linux rootfs can live anywhere on your Android /data partition (the default is /data/linuxroot). If you want to change this, then you'll have to blobunpack the kernelblob-rootbind, unpack the boot image (kernelblob-rootbind.LNX) with abootimg, change the command line as desired, re-pack the boot image with abootimg, and re-pack the blob for flashing.
      The "bind" cmdline argument is the location of your Linux rootfs without the initial "/data". So if your Linux rootfs lives on /data/my/linux/path under Android, then you'd have to change the cmdline parameter to "bind=/my/linux/path".
      Make sure, however, not to put the Linux rootfs to the "internal storage" (/data/media) or any subdirectories thereof. This plays havoc with the Android media scanner when re-booting into Android and your tablet may slow down to a crawl.
    • Under Android your EMMC partitions are /dev/block/mmcblk0p1,2,3,....
      Under Linux, this is /dev/mmcblk0p1,2,3....

    Thanks to:
    lilstevie - for bringing Ubuntu to our tablet
    Jhinta - for his 3.1.10 kernel
    shaola - for his debootstrap guide
    x3maniac - for his Tubuntu installer
    transformador - for his mountloop instructions
    TomTcom - for all his Ubuntu-related guides on xda
    Kingzak34 - for his dualboot guide and general help/discussion
    DjDill - for putting together the collection of rootbind filesystem images
    (if your name should be here and I have forgotten you, please PM me...)
    14
    New Ubuntu 14.04 image for rootbind with graphics acceleration

    Hi all

    I present to you you a fully working image of Ubuntu 14.04 with working Nvidia drivers.
    This is KDE (kde-plasma-desktop) as this is what I am using. It is a minimal installation with only the basic stuff to get a working desktop - the rest you will have to install yourself. You should be able to install other desktops (lubuntu, etc.) and I see no reason why they would not work.

    Default user: tf101 (has sudo privileges)
    Password: ubuntu

    Features:
    1. Created from scratch using debootstrap (not via upgrade!). No more kernel panics!
    2. Nvidia graphics drivers working. This took quite a bit of work and requires the raring, saucy and trusty releases to be enabled in your sources.list. I attach my /etc/apt/preferences.d/xserver.pref file with the pinning details, in case anyone wants to try for themselves. This is using the X-ABI 13 drivers (from 13.04) which work well as mentioned previously.
    3. KDE graphics accelleration and desktop effects with kwin_gles. es2gears gives 300-320 fps.
    4. Zram enabled (configure in /etc/init/zramswap.conf)
    5. Touchegg (multi-touch screen gestures) installed and set up.
    6. Kernel modules for all my rootbind kernels pre-installed and set up. Works (tested) with 3.1.10-9 and 3.1.10-12 kernels. Should work with 3.1.10-10 also. Take your pick :)
    7. Time zone and locale set to South Africa (change in KDE systemsettings or with sudo dpkg-reconfigure tzdata).
    8. Convenience scripts (in /usr/local/bin):
      • wifitoggle
      • bluetoothtoggle (disconnect all BT devices before switching off, otherwise system freezes)
      • touchpadtoggle
      • touchscreentoggle
      • fixlidclose.py (loaded automatically on KDE start, switches screen and touchpad off properly when lid is closed, and reactivates when lid is opened)
    9. Key bindings (using the "Home" key next to the left Fn key in the bottom row of the dock, referring to Android shortcut keys in top row):
      • Home-F1 - wifitoggle
      • Home-F2 - bluetoothtoggle
      • Home-F3 - touchpadtoggle
      • Home-F4 - screen brightness down
      • Home-F5 - screen brightness up
      • Home-F6 - touchscreentoggle
      • Home-F9 - systemsettings
      • Lock (top row right) - multi_key (Unix compose key for making accented characters)
      • Right-Alt - Insert
      • Menu (next to Right-Alt) - Delete

    Bugs:
    Some KDE plasma widgets do not respond to mouse input. Amongst these is the KDE Network Management widget, unfortunately. Either configure your wifi from the command line using nmcli or use another network manager such as Wicd (not tested). Once your network is set up, the wifi should reconnect automatically though.

    Downloads:
    Image - https://drive.google.com/file/d/0B2pBZMfc8dgHSFdLVC1ocElUclE/edit?usp=sharing
    MD5:
    2a4d63cd4cf7f714e191e832d15abe7d kubuntu-14.04.tar.bz2

    Enjoy :)

    Screenie attached below.
    7
    New kernel

    New kernel for Linux rootbind:
    • based on kernel source from @Sni
      See here: http://xdaforums.com/showpost.php?p=43203818&postcount=569
      N.B. If you use this kernel you will have to copy new firmware for the wifi driver into /lib/firmware. Get it from Sni's post (link above).
    • USB hotplug fixed and fully working!
    • framebuffer fixed (Ctrl-Alt-F1 to F6 for console access)
    • hardware graphics acceleration now fully working with the latest Nvidia Linux-4-tegra drivers. es2gears no longer throws errors.

    Two versions: one clocked to standard 1.0 GHz, the other one overclocked to 1.2GHz. Remember to extract the relevant modules to your linux root filesystem. For installation, I have provided a CWM or TWRP flashable zip, or a blob that you can flash directly with dd to the staging partition (if you don't know how to do this, use the recovery method).

    I have tried at great length to overclock to higher frequencies but could not succeed. For some reason the TF just froze with a black screen after booting. I tried many combinations of voltages and frequencies. At least it's oc'ed to 1.2 and stable (in my hands), but if you are experiencing problems you can revert to the 1.0GHz or keep using the previous kernel which is oc'ed to 1.6 but USB is broken.

    If anyone wants to take a stab at this you are more than welcome :)
    My sources: https://github.com/jmrohwer/TF101-GNU-kernel

    EDIT: New kernel 3.1.10-15 overclocked to 1.5GHz. Boots every time! Needs configuration of your overlock speeds with cpufrequtils. Read this post:
    http://xdaforums.com/showpost.php?p=54031885&postcount=334
    MD5SUM:
    3aee8cacf9037dfc3c8ef0363780254f Ubuntu-3.1.10-15-rootbind-oc1.5.zip
    6
    Benchmarks

    Using "fio" (available from Ubuntu repos). All speeds in kB/s.

    In the below, loopmount refers to a loopmounted image on internal storage, MicroSD refers to running linux from an ext4 partition off a class-10 MicroSD card, and rootbind refers to the method described in this thread.

    Test: sequential read (64 MB)
    rootbind 31906
    loopmount 29088
    MicroSD 15312

    Test: random read (64 MB)
    rootbind 5605
    loopmount 11340
    MicroSD 1620

    Test: sequential write (8 MB)
    rootbind 9694
    loopmount 1373
    MicroSD 3040

    Test: random write (8 MB)
    rootbind 4659
    loopmount 1102
    MicroSD 722
    5
    New kernel OC 1.5 GHz - STABLE!

    I have managed to compile a stable kernel overclocked to 1.5GHz, which boots every time!
    Thanks to @MiniBlu for pointing me in the right direction. The kernel boots up at max frequency and performance cpu profile and the cpu scaling settings only kick in later during boot. This has caused the instability. The workaround has been to add a "dummy" 1.6GHz frequency which is actually scaled to 1.0GHz and thus stable and boots every time.

    N.B. You'll need new modules as well, extract to /lib/modules in your root file system.

    The only thing you will have to do is to set your maximum cpu frequency manually to 1504 MHz (or lower) using cpufrequtils. As the "maximum" setting of 1.6 GHz is actually not overclocked and won't give you increased performance :)

    Once it's booted up I have never had instabilities with 1.5 GHz.

    Downloads from post #3. The correct kernel is 3.1.10-15.

    If you want to compile your own, changes have been merged into my github:
    https://github.com/jmrohwer/TF101-GNU-kernel