Ubuntu (or other Linux) on the Asus Transformer Book T100


This post is now out of date — see the latest update, here

The T100 is a nice little convertible tablet/netbook.

My aim is to get a “perfect” Ubuntu installation on the T100, such that it can be used successfully as a daily machine in both netbook and tablet modes.

GLXGears in tablet mode

GLXGears in tablet mode

Unfortunately Linux support right now is quite rudimentary, and installing it requires us to jump through a few hoops. The situation is improving rapidly however. So I will keep updating this How-to as new drivers become available and things improve. See the latest update.


Eventually I expect hardware support for the T100 will be excellent, but we are not there yet. In order to get the best support possible, we will be using bleeding-edge builds and the latest Linux kernels. If you’d just prefer an easy life, come back in October and just install Ubuntu 14.10.

That said, this little convertible is a lovely machine, and Ubuntu/unity works very nicely on it — finally Unity has a purpose! The more people get on for the ride now, the quicker we can test and iron out bugs.

*** This post will constantly be updated as in-kernel support improves ***

Current status (updated 23/03/2014)

I’ll update this whenever I manage to get new things working. I will only add items to the How-to below that are confirmed to work well.

  • Graphics: Working with accelerated (3D) graphics 7/10
  • Wifi: Working, but often drops connection [working on improving this] 6/10
  • Touchscreen: Working, with multi-touch out of the box 10/10
  • Sound: Working, with patches 8/10
  • SD card reader: Working, some configuration needed (thanks akira) 9/10
  • Battery monitoring: Working, with patches 8/10
  • Tablet keys (Volume up/down etc): Not yet working 0/10
  • Power management (Suspend/resume): Not yet working 0/10
  • Orientation sensor: Not yet working [currently testing] 0/10
  • Backlight & ambient light sensor: Backlight not adjustable. Light sensor works with custom driver 5/10
  • Touchpad: Working, no multitouch yet 8/10
  • Shutdown / reboot: Working, with patches 9/10

1. First steps: Preparing for the Ubuntu Install

First things first, update using Asus LiveUpdate to the latest “BIOS” available. At the time of writing, that is v304. Do any backing up of Windows / recovery partitions. I’ll leave the details of that up to you.

Before we attempt to boot Linux on the T100, we need to do some preparation, so start in Windows. Download the latest daily AMD64 build of Ubuntu 14.04 from here.

Download the Rufus USB bootable image creator, and “burn” your downloaded ISO to a spare USB stick. In Rufus, for “Partition scheme and target system type”, choose “GPT partition scheme for UEFI computer”. For “File System”, choose “FAT32″, and leave the rest at default. At the bottom, check “Create a bootable disk using: ISO Image” and select your downloaded Ubuntu image, then hit “Start”.

When your USB stick is ready, close Rufus. It should now be browseable in Windows. Browse to the EFI\Boot directory, and place this bootloader (named bootia32.efi) there. This bootloader was compiled from source using the latest Grub2. If you don’t trust random downloaded files from the Internet (and you shouldn’t), you can find the instructions for building it yourself here.

2. Booting the Live Image

Now, insert the USB stick and reboot to the firmware (BIOS). You can do this in Windows by holding shift when pressing “restart”, then touching Troubleshoot → Advanced Options → UEFI Firmware Settings → Restart.

Once there, disable SecureBoot, then visit the boot options, and ensure the USB stick is the first in the list.

Press F10 to save settings, and after a few seconds you will be in the GRUB bootloader. Before the timeout, immediately hit CTRL-ALT-DEL. This will reboot the computer again, but this time you will have the laptop’s native resolution (rather than being stuck at 800×600 from the “bios”).

In the GRUB menu, highlight “Try Ubuntu”, and press “e” to edit it. In the editing screen, scroll down to the command line options, where it says “quiet splash”. Delete “splash” and replace it with:
video=VGA-1:1368x768e reboot=pci,force

Then press F10 to boot. You should get all the way to the Desktop.

3. Installing the distro

Click the “Install Ubuntu” desktop icon to install Ubuntu permanently.

The partitioning scheme you choose is up to you — but you will need to preserve the EFI partition, so don’t just partition the entire disk for Ubuntu.

In addition to the EFI partition, I prefer separate /, /home and /boot mount points; but that is up to you. You could squish down the Windows partition and created the additional partition(s), or just delete the Windows partition altogether if you don’t need it.

When done, reboot, leaving the USB stick in.

4. First boot

Ubuntu won’t boot yet. We’ll need to compile our own bootia32.efi to use with Grub. To do that we really need a wireless connection. So we’ll boot manually, fix up wireless, and fix Grub.

Boot back to the Grub welcome screen on the USB stick. Hit ‘c’ to drop to a Grub command line.

You’ll need to provide Grub with the path to your kernel and initrd to boot. First, the path to the kernel:

linux (hd2,gpt5)/boot/vmlinuz-3.13-xxxx root=/dev/mmcblk0p5 video=VGA-1:1368x768e reboot=pci,force

Here, (hd2, gpt5) refers to the fifth partition on the third disk (Partition numbering begins at 1 and disk numbering begins at 0). This will vary depending on how yo uinstalled and your T100 model. On my 32GB model, Grub assigns the USB stick as hd0, the read-only recovery flash chip as hd1, and the main internal flash as hd2. gpt5 is the fifth partition, but it will depend on how you installed.

Fortunately, grub has good auto-completion features, so you can hit twice as you type, and grub will list possible completions for you — just keep trying until you see the various vmlinuz kernels.

The root=/dev/mmcblk0p5 will also depend on the partition you installed to. It will be your root partition. Unfortunately this can’t be auto-completed, so if you can’t remember your partition setup, you’ll need to try by trial and error.

To complete the line, press Enter.

Then you need to specify the location of your initrd. This is easy, it’s in the same place as the kernel:
initrd (hd2,gpt5)/boot/initrd-3.13-xxxx

Then Enter.

Then boot with:

With luck after hitting Enter, you’ll boot through to Ubuntu. If not, don’t be disheartened — keep trying.

5. Enabling wifi

To get further, we’ll need wifi. However internal wifi on the T100 isn’t terribly reliable under Linux yet. If you have access to another wifi dongle, you might want to try that until you’re fully set up.

The driver is already included, but it needs some firmware and a copy of your system’s wifi nvram:

  • Grab the Wifi firmware here (from the Linux-wireless repository). Copy it to /lib/firmware/brcm/brcmfmac43241b4-sdio.bin
  • The NVRAM is difficult to get right now, as 32-bit EFI runtime services aren’t yet available on 64-bit. But you can use my NVRAM — get it here and copy it to /lib/firmware/brcm/brcmfmac43241b4-sdio.txt

You’ll now need to reboot using the same procedure again, and wifi should be working.

However, I found wifi performance to be very poor — there are some bugs in the driver. This is improved somewhat with the latest kernel, which we will upgrade to in a later step. I managed to improve performance somewhat by using the NVRAMs from other platforms, and splicing in some of the missing variables. You can see my tries here. In all cases, copy them to /lib/firmware/brcm/brcmfmac43241b4-sdio.txt , and reboot or unload/reload the wifi driver:

sudo modprobe -r brcmfmac
sudo modprobe brcmfmac

If you find a firmware/nvram combination that works really well, please share.

6. Completing the installation

We can’t keep rebooting like this… so let’s fix Grub. This assumes you now have a working Internet connection.

We’ll need some build tools — install them:

sudo apt-get update && sudo apt-get install git bison libopts25 libselinux1-dev autogen m4 autoconf help2man libopts25-dev flex libfont-freetype-perl automake autotools-dev libfreetype6-dev texinfo ia32_libs build_essential

Then get the Grub source:
git clone git://git.savannah.gnu.org/grub.git

Now build it:

cd grub
./configure --with-platform=efi --target=i386 --program-prefix=""

And install to efi:

cd grub-core
sudo ../grub-install -d . --efi-directory /boot/efi/ --target=i386

This will create a directory, ‘grub’, in your EFI partition.
We want to copy the grubia32.efi from there to the location Ubuntu created during installation:

cd /boot/efi/EFI
sudo cp grub/grubia32.efi ubuntu/grubx64.efi

This should be enough to allow you to boot from the “ubuntu” option in your EFI firmware.

Before you boot, let’s add the default command line options to Grub.

Open /etc/default grub in a text editor:
sudo nano /etc/default/grub

And edit the GRUB_CMDLINE_LINUX_DEFAULT exactly as we did before. When done, hit ctrl-o to save then ctrl-x to exit. Then, to update Grub:
sudo update-grub

Congratulations! you should now be able to boot/reboot directly to the Ubuntu desktop!

7. Upgrading to the bleeding edge to improve hardware support

There are still a lot of things to get working. The best way to improve hardware support further is to use the latest development branches of the kernel.

Unfortunately (as at the time of writing), even the latest development Linux kernel (3.14-rc5) lacks some key hardware support for Baytrail tablets. But we can improve that by pulling in latest patches for sound. We’ll also compile in a new experimental feature for accessing 32-bit EFI services from a 64-bit system, as we need that for tools like efibootmgr to work. Finally, we’ll pull in the latest wireless fixes and the latest power management changes. We need to power management changes for our battery patch.

I recommend you compile this on a fast desktop computer with a decent network connection. You could do this on your tablet, but it would be extremely slow. For the following instructions, I assume you’re using a recent 64-bit Ubuntu on a desktop. If you’re using 32-bit, you’ll have to change the instructions to cross-compile — I’ll leave that up to you (and Google).

On your compiling machine, install the packages you’ll need to build a kernel:

sudo apt-get install git build-essential fakeroot crash kexec-tools makedumpfile kernel-wedge libncurses5 libncurses5-dev
sudo apt-get build-dep linux-image-$(uname -r)

Then create a working directory, step into it, and download the sources you’ll need:

mkdir kernel
cd kernel
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd source
git remote add sound git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
git remote add efi git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi.git
git remote add pmfixes git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
git remote add wifinext git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git
git fetch sound
git fetch efi
git fetch pmfixes
git fetch wifinext

Then merge the updates from sound, efi mixed-mode, power management and wireless onto the mainline kernel:

git merge sound/topic/intel
git merge efi/efi-for-mingo
git merge pmfixes/linux-next
git merge wifinext/master

There are still some patches we need to apply. Step back and create a patch directory, and download some patches into it:

cd ..
mkdir patches
git clone https://github.com/jfwells/linux-asus-t100ta.git

Now apply the patches:

cd ../source
git apply ../patches/linux-asus-t100ta/patches/*

They should all apply without error.

Now we’re almost ready to compile. Before we do, we need a .config file to tell the kernel build system what parts we want to compile. Start by copying over the current one from your T100. You’ll find it at /boot/config-xxxxxx , where xxxxxx is the version of the currently running kernel. Grab it and copy it to the kernel/source directory you’ve just been working in. Rename it to .config .

Now we need to update the config:

make oldconfig

This will prompt you to set configuration for the things that will be newer in this kernel. Select ‘m’ to compile relevant drivers as a module where offered (in particular all the ‘soc’ sound options). Select ‘Y’ to enable EFI mixed mode where offered. Leave the kernel debugging options off.

When done, we’re ready to compile. We can just do it the quick and dirty way:

make clean
make -j8 deb-pkg

The above assumes this is on a quad-core processor with hyperthreading (hence the ‘-j8′, or 8 simultaneous processes). Reduce this number appropriately if you have less cores.

This will take some time (anywhere from 20 minutes to over an hour. If you’re doing it directly on the T100, all bets are off – it could take all day.

When complete, you’ll have a set of .deb packages in the directory above (i.e. in the “kernel” directory). We need “linux-headers-xxxxx.deb” and “linux-image-xxxxx.deb”. Choose the smaller of the linux-image packages, the one without debug symbols. Copy them over to your T100.

On the T100, install the new kernel with:

cd <folder where you saved the .debs>
dpkg -i ./*.deb

Then reboot!

8. Sound

Sound won’t yet be working. First, you’ll need some more firmware. For now, you can grab it from ChromiumOS, here. Unpack the archive and copy the files to /lib/firmware/intel .

The drivers are in a bit of a raw state — they expose about a hundred oddly-named mixer and DSP devices to ALSA. We can set some defaults. Grab the defaults file here, and copy it to /var/lib/alsa/asound.state .

Reboot, and force-load the state file into alsa with :
sudo alsactl -f /var/lib/alsa/asound.state restore

For me, my sound still sounds pretty awful. I need to mute the distorted right channel in alsamixer, then at least it is bearable. I also find the CPU runs a bit hot with sound enabled. Let me know if you have more luck.

* please be careful — my sound is permanently distorted, even in Windows now; keep the volume low when testing the various options *

9. SD card reader

The SD card reader works with newer kernels, but the sdhci module needs some configuration. Create a new file:

sudo nano /etc/modprobe.d/sdhci.conf

Then add the following:

options sdhci debug_quirks=0x8000

ctrl-o then ctrl-x to save and exit, then:

update-initramfs -u -k all

Then reboot and the card reader should be working.

9. Other drivers

So far, the only additional driver I have working is the light sensor. Please download and test my driver here.

9. Other scripts

I have made some additional small scripts to improve usability.

Dock scripts: These enable/disable the Onboard on-screen keyboard when you undock/dock the tablet. Set up the onscreen keyboard first in System Settings → Accessibility, then the scripts will enable/disable they keyboard for text fields.

Rotate script: This will rotate the screen and touchscreen when run. You can place the desktop entry on your desktop. We can connect the orientation sensor to this later, once that is working.

Workable... for now.

Workable… for now.

469 thoughts on “Ubuntu (or other Linux) on the Asus Transformer Book T100

  1. darkside

    I cannot boot anything after the installation.
    I just get:
    mount: can’t read ‘/etc/fstab’: No such file or directory
    mount: mounting /dev on /root/dev failed: No such file or directory
    mount: mounting /sys on /root/sys failed: No such file or directory
    mount: mounting /proc on /root/proc failed: No such file or directory
    The filesystem doesn’t have requested /sbin/init.
    No init found. Try passing init= bootarg.
    and I cannot even access the (initramfs) because of the looping mmcblk0rpmb error.
    Any idea why I get this error?

    Any help will be really appreciated!

  2. Brainwreck

    @ Christopher

    are you running

    hciattach /dev/ttys4 bcm2035 921600 flow


    add that to your /etc/rc.local file before the exit 0

    that will start it on boot


  3. Christopher


    I have tried that yep but the /dev/ttyS4 device file doesn’t even exist for me. Tried it on ttyS0, 1, 2 & 3 too – same thing. :(

    I’m thinking I must be missing something from the kernel but I can’t figure out what.

  4. Christopher


    Try adding the following to your kernel boot params (before pressing F10):


    If that fails, try:


    It looks like you are missing the sysvinit package which could be expected on your distro but if that is the case – you will have to specify which init to use instead.

  5. darkside


    Thank you for you reply.
    I have tried both options, but they don’t work.
    Yes, the problem seems to be:
    target filesystem doesn’t have requested /sbin/init

    Any other ideas?


  6. Christopher


    Looking at the following line:
    mount: can’t read ‘/etc/fstab’: No such file or directory

    It looks like your root filesystem isn’t even being mounted – are there no other errors before that point? Have you tried adding ‘rootwait’ or ‘rootdelay=10′ to your kernel options?

    Failing that – fsck the disk from whatever live environment you’re using (Ubuntu LiveUSB for example), mount and chroot to it and check that those files do exist also. It’s looking like this is disk related.

    Can you possibly provide me what options you are providing to the kernel bootline? (within GRUB)

  7. Adrian

    CHRISTOPHER, this kernel config you have from ubuntu?
    Ja have Gentoo linux on T100 and I still can’t run touchscreen.

  8. Christopher


    No the kernel config I’m rockin’ is custom compiled for Gentoo – I just used the Ubuntu pastebin because it allowed me to dump the entire file there. :)

    For the touchscreen to work you just need the following:


    I’m fairly sure that’s all it took in the end to get the touchscreen working – never actually bothered using it. My question to you is – have you managed to get Bluetooth working? I’m planning on tethering the tablet to my phone using it (in the interests of power saving) but have been unable to get it to work yet.

    Annoyingly – there’s no /dev/ttyS4 for me even existing yet so I need to correct whatever is causing that! :(

    - chrisaw

  9. Christopher

    Woop! I finally figured it out.

    I now have Bluetooth working – needed to add the following option:


    “Selecting this option will enable handling of the extra features present in the Synopsys DesignWare APB UART.”

    Makes sense now that I know that option actually exists! I took a step back and thought well… if the serial device doesn’t exist… it’s likely related to… well… the serial device! :)

    Strangely, though, my device is /dev/ttyS1 so the command, for me, was:

    hciattach /dev/ttyS1 bcm2035 921600 flow

    I still have a few kinks to iron out – it seems to “forget” all associated networks as soon as you reboot (annoyingly!) so I’ll have to find out if I can avoid that somehow but other than that it’s working well!

    As promised, I will post a guide at some point soon – I do have a few other things I want to get working first. I’d like to get the plymouth bootsplash stuff working too but I’m thinking that may be problematic with the video drivers as they are at the minute.

    - chrisaw

  10. Adrian

    CHRISTOPHER, you use GNOME or KDE?
    I try config KDE to work fine with touchscreen but still I can’t fint solution how to config X for multitouch or set some gestures for example rotation screen.

    How work battery status for you? My doesn’t monitoring plug AC, when I started PC with plugin power, He think I chargered battery, but do not see when I plugout.

  11. Christopher

    Hi Adrian,

    I’m alternating between Gnome and Cinnamon (gnome based) at the minute. In order to get X11 working with the multitouch all you have to do is add the following line to your /etc/portage/make.conf:

    INPUT_DEVICES=”evdev keyboard mouse mutouch”

    I don’t think the keyboard + mouse options are even necessary to be honest – just haven’t got around to optimizing my build yet (hence the kernel config being full of crap I don’t need at the minute! :))

    As for configuring the touchscreen gestures and such like – I haven’t tried that yet. I probably never will to tell you the truth – I primarily use the touchscreen to read and as long as I can scroll – that’s good enough for me!

    In terms of the power usage stuff – I have created a GitHub repo with the full patch set that I use:


    I recommend applying those patches and *only* those patches – with those I was able to get all of the following working:

    - Audio
    - Video
    - Wifi
    - Bluetooth
    - Power Management (Suspend / Resume does *NOT* yet work. Need to look in to that further.) I also recommend turning off screen blanking – screensavers are fine, blanking is not – the display doesn’t tend to come back from that annoyingly.

    I will continue to commit to the GitHub repo as I get additional things working. I’ll post my kernel .config up there too. :)

  12. Christopher


    Updated the repo to include all patches / kernel config necessary to get this stuff working.

    Quick heads up too – the battery monitoring seems to be on a refresh cycle. It can take a minute or so for the battery applet to update. I suspect this is due to the polling rate of upower and while it is something I would like to see improved, I’m not overly worried about it at this point.

  13. thanks for this information! It is good to see that people post their experiences with Linux on this type of devices. And it looks like we are getting close to a fully functional device running linux.

  14. Dylan

    Hey Christopher,

    Thank you for putting in the effort to simplify things. I’m attempting to apply those patches, but I’m not entirely sure of what I’m doing. Could you tell me which kernel would be best to apply these patches to? Does it matter? Also, should I just copy the files in your repo into the kernel source I get and then attempt compilation? I will keep looking for docs to help me, but thought I’d reach out and at least thank you for putting them in one place. :)

    Thanks again,

  15. chrisaw


    I was hoping someone had collected all of the patches needed in one place when I started out and couldn’t find one that was kept up-to-date and was complete so I went ahead and created one! :)


    Any kernel sources at v 3.15 will do – which you choose is up to you. If you are on Gentoo – gentoo-sources would be a good place to start. If not, you can checkout the kernel sources from where ever you like really. :)

    As for applying patches – there’s a guide on the github page (look in the README.md file.) :)

    - chrisaw

  16. Mark

    Thanks for your work bringing together the relevant pathes however they seem to be gentoo specific (I seem to remember gentoo-sources contains gentoo patches) since they neither apply cleanly nor even compile using git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

    One thing I’ll be trying next is not applying the blutooth patch, as for me bluetooth works fine using the official repo code but I think it’s the power management code that breaks compilation.

    Or perhaps the order the patches are applied in matters? I know that can sometimes be the case if different patches apply to the same file.

    I’ll try a few things but so far your work isn’t the final solution I was hoping for when I saw your posts. But again, thanks anyway.

  17. chrisaw


    I have compiled kernels using this patch set from both the vanilla linux sources, debian sources and gentoo sources (which are indeed patched for the gentoo distro with a few tweaks.)

    Not all of the patches apply completely cleanly because some of the code in the patches was already added but if you follow the README they build fine.

    One thing I would mention, however, is make SURE you are checking out the 3.15 branch of the Linus repo if that’s where you’re pulling from since his master branch is now at 3.15+ (which is basically 3.16 code awaiting a RC release.) None of these patches appeared to be needed for the latest master branch of the Linus repo when I fiddled around with it but there are other problems with that code.

    Hope this helps!

  18. Mark

    Ah, thank you for pointing out my mistake. I was indeed using the master branch and didn’t notice it’s now 3.15+

    I was in the process of manaully applying the patches and noticed much of the code is already upstream. Now I know why… doh

    Thank you!

  19. Drew

    Any progress on getting suspend/resume working? If this were working I could use Ubuntu all the time on my T100. As it is, I’m stuck with Windows 8… can’t stand the UI.

  20. Christopher


    No worries! I was fiddling with the 3.15+ branch myself and found the same thing when I tried to apply the patches! :)


    I haven’t personally made any yet – here’s hoping someone has!

    I’ve been busy trying to get Debian/sid working on the T100 but it was an awful experience – especially with the intel video drivers and cinnamon… ended up settling on ArchLinux so I’ll be repurposing the repo to be more Arch focused. Having said that – all of the patches / configs in there will work on any distro.

  21. moisemust

    Hi all! I read through the comments and successfully installed Ubuntu on my brand new T100. However, I only get static when I’m trying to boot it after installing it, After a very long series of error messages, whether on 14.04 or 14.10. I even tried booting it using rEFInd which I’m using on my Mac mini to triple boot Mavericks, Win 7 and Ubuntu 14.04. Also I was wondering if I could simply install and configure Ubuntu from my Mac, ideally from a dedicated 32 GB SD card I just bought (I installed to the T100′s 500 GB Hard drive for now). Thanks in advance.

  22. Christopher


    I don’t see any reason why not – as long as your mac is x86. You could simply boot the Ubuntu LiveCD and install the OS directly to the SD card.

    I would, however, be VERY VERY careful if you do this since you could break the bootloader on your mac if you select the wrong partition so be extremely careful. :)

  23. moisemust

    Thanks for the tip, I knew this was possible for OS X but I wasn’t sure for Linux, but since they share the same bases. Don’t worry about me breaking my bootloader, as a geek, i’m used to triple booting my Macs. However my T100 is the first PC I bought in years because I couldn’t afford a MacBook Air. I’m very happy with it so far, even though I hate Windows 8 on a desktop, I think it’s awesome on a touch device. I’m writing this from a live session while I’m attempting to install Ubuntu 14.04 natively for the last time.

  24. chrisaw

    A thought occurs though – you will have to boot the T100 from a LiveUSB or something to get the EFI bootloader added.

  25. Mark

    Just to report. I used 3.15 final from https://github.com/torvalds/linux/archive/v3.15.tar.gz

    Applied all patches (from https://github.com/cawilliamson/linux-asus-t100ta) except the battery info one and the kernel boots. Once I apply the battery patch, the kernel “hangs” within 5 ‘seconds and gives a black screen (backlight on) on further boots. Which is the same result I got with the patchset from the OP.

    I don’t know how you’re doing it Christopher, but I can’t reproduce a working kernel with battery status using your patchset.

  26. Dylan

    Hey guys,

    Still working on compiling my kernel; I’m learning a lot, but I can’t get past a “permission denied” error that fakeroot gives me when running ‘fakeroot debian/rules clean’. I’ve tried to change the permissions of that file, but it refuses to change no matter what I try. It currently is only rw accessible to root and not executable for anyone. Any ideas?

  27. Dylan

    Got it working. Ubuntu was mounting it as nonexec I guess. I just manually mounted and all is well. :) I’m off to compile my first kernel! Thanks for all the help!

  28. moisemust

    So I couldn’t get past the (many) error messages on boot, even with an install from my Mac mini. I think I’ll hold off on Ubuntu until the final release of Ubuntu 14.10, I might try with another distro but I like Ubuntu best. Or maybe bring my T100 to an Ubuntu install party. Plus, is that a limitation of the T100 that I can’t boot from a micro SD card?

  29. Erik

    Thanks very much Mr. Wells and anyone else participating for the tutorial!
    Allowed me to create and flawlessly use liveUSB with Ubuntu Studio 14.04.
    Even wifi had worked as I followed exactly Part 5… till one day. Now I am not able to get wifi working again even by recreating the liveUSB from scratch.
    (In Win8 it runs as well as in live 14.10)

    ubuntu-studio@ubuntu-studio:~/Desktop$ lsmod | grep brcmfmac
    brcmfmac 227061 0
    brcmutil 15618 1 brcmfmac
    cfg80211 502765 1 brcmfmac

    ubuntu-studio@ubuntu-studio:~/Desktop$ iwconfig
    lo no wireless extensions

    rfkill list all

    Any thoughts? Thank you.

  30. jesmon

    Hi all,
    I am trying to compile the kernel but I am running into errors when applying the patches:
    error: patch failed: drivers/pwm/Kconfig:119
    error: drivers/pwm/Kconfig: patch does not apply
    error: patch failed: drivers/pwm/Makefile:9
    error: drivers/pwm/Makefile: patch does not apply
    error: drivers/pwm/pwm-lpss.c: already exists in working directory

    Is this because I am trying to apply the patches to a newer version of the kernel that it is meant for? I have my T100 dual booting Ubuntu and Win8 with wifi working but am stuck at the kernel upgrade, any advice??

  31. Ivana

    Great!! xD ..I just bought one of these and I was really worried, I hate Windows but I need it to work perfectly because I’ll be using it for work! I’ll try to follow your tutorial as soon as possible!

  32. lucky

    Thanks for your valuable hints. I got it working now on Debian Jessy with kernel 3.15 including the patches for mmcblk0rpm and wifi/wpa2. Grub2 and root partition installed to the mmc. After twiddling with sound a bit I got a working sound setting, for speakers and headphones. Speakers are still a bit low volume, headphones setting is quite good already. Will check for micro sd and power management now. Thanks for the great work so far.

  33. lucky

    About the installation: the problem is basically that T100 uses a 32Bit UEFi, but no 32 Bit installation CD provides UEFI. I found it painful to try to get it run 64Bit with 32Bit UEFI, so my approach was to add UEFI to a 32Bit installation boot stick (using Debian Testing). That’s pretty easy, and the installation works flawless. Only problem are the annoying timeouts of mmcblk0rpm with a standard kernel. Almost impossible to install directly to the mmc. So I installed it to the dock HD instead, installed a patched kernel, and copied the whole thing to the mmc. No elegant solution, so I hope the mmcblk0rpm problem will be fixed asap in main stream kernel. My T100 is running 32bit currently, which gives no noticalbe difference in general performance, and as it only has 2GB RAM no problem for memory as well, I disabled bigmem support in the kernel.

  34. moisemust

    Tried again last night, but still no luck. I think I enter the right /dev/sdx, but I’m not 100% sure. Plus I’m now getting just a black screen after a bunch of errors text, then a second of a distorted image then nothing!
    Thanks for the tutorial and your dedication, and thanks in advance for your help.

  35. moisemust

    Phew! Got it working almost perfectly on my t100. I just installed to a flash drive from my Mac mini, rebooted on the flash drive, followed the tutorial, but I can’t seem to get wifi working nor does it keep my keyboard map. Now I’ll have to copy it to the HD and copy the efi boot file to the tablet’s efi and then fix these problems. Thanks everyone!

  36. Matt

    Thanks for the great tutorial.
    I’ve made it as far as step 4. When I try to boot for the first time after installation I get a looping I/O error telling me “timed out sending r/w command, card status 0×400900″ on mmcblk0rpmb

    I installed via the ubuntu-14.04-desktop x64 bit image as the 32bit image wasn’t accepted as a valid UEFI iso in Rufus.

    So I can’t actually get into ubuntu to continue on with the next steps. In reading the above comments this error seems to be related to an incompatibility in the stock kernel and recompiling might be necessary. How can I do this if I can’t get into the OS?

    Thanks a lot for any help in advance!

  37. KenBW2


    I’ve made it as far as step 4. When I try to boot for the first time after installation I get a looping I/O error telling me “timed out sending r/w command, card status 0×400900″ on mmcblk0rpmb

    You’re not alone. There’s a patchfor this.

    Here’s how I got mine set up recently

  38. Dylan


    Hey, thank you for your post. Could you explain how you resolved the git conflicts? I’m having trouble confidently deciding how to deal with the issue.

  39. Christopher


    The documentation listed there is WAY old – most of those patches are now already merged in. The simplest way to setup a 3.15 kernel (to my knowledge) at this time is simply to apply the patches listed at:


    Using those patches on any 3.15 kernel sources (I used the vanilla sources from Linus himself) and they all apply (some not entirely cleanly but they fail silently.)

    Please make ABSOLUTELY sure that you are checking out the 3.15 tag and *NOT* master since master is now at 3.16 which will result in a lot of patch failures.

    Let me know how it goes. :)

  40. moisemust

    Hi guys. I finally managed to setup and get Ubuntu working on my T100TA. Except wifi patches provided in the blog entry do nothing and as advised I tried to compile the kernel on my Mac mini but I’m getting an “error2″ after a few minutes every time I try. Can anyone help me?

    Thanks in advance.

  41. john

    i have yet to be able to get things going good. when i try to install the bleeding edge section, my wifi sucks so bad it usually slows to a creep before it stalls. then when it comes to the part “cd source” or is says there is no directory or it doesn’t exist. so i open up nautilus and look manually and i don’t see it.

  42. Christopher


    To be honest – if you don’t have in-depth Linux knowledge you’re likely not going to enjoy running Linux on the T100 just yet anyway – you’re not missing much! :)

    I’d wait until kernel 3.16 is stable and try again then – I suspect things will be MUCH simpler at that point.

  43. KenBW2


    I’ve seen a few people say that 3.16 should be much simpler on the T100 – I very much look forward to its release!

    But I don’t understand why it would be so, since (Correct me if I’m wrong) 3.15 is the development version of 3.16, and 3.15 rc is what more or less will become 3.16.

    Why would 3.15 as it stands today be much different from 3.16 when released?

  44. john

    If we are all using the same hardware, why are we all compiling the same stuff, can’t we just have it in a central download place already compiled to save time?

    That said, @Christopher, if people would explain how to do things then maybe I could grow as a user and become more advance. Not everyone starts in the same place and sometimes coaching works wonders.

  45. darkside

    I still haven’t made it work :(
    Apparently, I have a new version of the computer, so I really need to compile a kernel even for reading the hard drive where the system is.
    I agree with @John, can we just simple have a working version of the compiled kernel somewhere?
    I am having the same problem as @MOISEMUST, the kernel does not compile for me, I got Error 2 while compiling the net directory.
    I really appreciate all the comments in this blog, but this is very annoying, why they don’t simply provide linux modules?
    Anyway, if anyone can put a .deb version of a working kernel I would appreciated that.

  46. john

    There is no guarantee that the next release of Ubuntu will be fully ready for this computer. If we builda kernel and patches that can just be downloaded and installed at least it makes things easier. Kinda like a custom rom. As we solve something patch it instead us all struggling and wasting time to do the same thing. I’m not that advanced, but i do know the less time you spend fixing what has been solved gives you more time for other things.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>