How I got Bodhi Linux to work on Asus T101MT
This document outlines my experiences with getting Bodhi Linux working on a new ASUS T101MT netbook
What are you on about now Silly Rabbit?
If you are anything like me, you have been looking at tablets and coming to the conclusion that they just don't meet your needs. The big sticking point that I keep running into is the limited options for operating systems. You can get an iPad, an Android tablet, or a Windows based tablet: plenty of options, right?
Well, here's the thing... I dislike all of the above options. I have been using Linux based operating systems for too long now to change my behavior. I tried Windows 8 and found it to be a nightmare. I'm just plain not a Mac Fan (before you get angry and decide to track me down to throw your double creamed latte frappucino at me, may I remind you that this is my website - if you have a different opinion then write about it on your own site). And as to Android, sure it makes a decent smart phone OS but for mobile computing I need more.
Wait, isn't Android a version of Linux?
Well, that varies in opinion, and my own opinion is that it isn't. Yes.. the kernel is based off of the Linux kernel (with all sorts of custom drivers!). The rest however is most definitely not linux! If it were, then I have to ask: where is my beloved vim (yes.. this article is written in vim)? Why can't I load up Firefox and Firebug? In my opinion an operating system is more than just a kernel!
So after looking at the various tablets available and brain-storming on what I might use it for, I came to a specific set of criteria that I wanted:
- The device must be more portable than my full sized HD screen laptop
- The device must have a keyboard available - either addon or integrated
- The device must have a responsive touchscreen
- The device must support a 'pen' / 'stylus' method of input
- The device must have a chipset and hardware that I can make work under Linux
- The device must have a long battery life
What is the ASUS T101MT Netbook?
With these criteria in mind, I started my hunt... and came across an interesting device from Asus - the EEE PC T101MT. I'm not going to go into a sale pitch here, but if you want to know more about it, then visit the product site at: http://ca.asus.com/en/Eee/Eee_PC/Eee_PC_T101MT.
I was intrigued. At heart this device is a netbook (I have had previous good experiences with the EEE netbook line). However, it seemed to double as a convertible tablet!
I found it met pretty much all requirements - except for being a Windows 7 device. Was it Linux Compatible? I didn't know... but I decided that for the low price tag (at time of purchase I scooped it up for about $300 ) I would give it a shot.
What is Bodhi Linux?
Upon receipt of my new netbook/tablet, I of course wanted to get started immediately with removing the pre-shipped Windows 7 and get this thing working with Linux. To the credit of Asus (and Microsoft) the default installation and look / feel was decent - but not up to what I wanted to use this thing for.
I gave some thought to the specific distribution of Linux I wished to install. The criteria for this was simple:
- Needs to be Linux
- Needs to be fast fast fast
- Needs to use the APT packaging system for software (that's a personal preference)
- Needs to be Touch Screen friendly
So.. I started hunting around and I came upon a project called Bodhi Linux. To my amazement this distribution was using Enlightenment as the primary interface / window manager - a system that I had looked at some time back and always felt had merit - though at the time was too bug ridden for me to consider for serious use.
Even more to my amazement, I found after some reading that the developers of Enlightenment were also directly involved in this project - giving me hope that there would be enough personal interest to ensure the previous bugginess I had seen would be a thing of the past.
And finally, the mission statement of the distribution seemed to be right in line with what I was looking for: Lightweight / Minimalistic, and upon review there was a specific mode that was designed to work with touch screens / tablets right out of the gate! Now mind you, most of what I was reading was right from Jeff Hoogland's Blog - and being the author of Bodhi Linux he would of course be biased - but it was worth a shot!
Installing Bodhi
Installing Bodhi was surprisingly simple. I downloaded the 64 bit ISO (version 3.0 at original install date), then converted it to a bootable USB stick (I won't go into the details of that process - see usb-creator-gtk). I then booted the T101MT off of this (Press escape during initial boot to get a prompt for what to boot from).
What surprised me was that despite lack of documentation on how to install, it became apparent to me that no documentation was required. Booting off the USB landed me in a live environment, where I could immediately start playing around - and of course with a very clear 'install to disk' link that left no questions in my mind.
The test drive looked good, and most everything seemed to work, so I then clicked the 'Install' link (Yes, I'm glossing over a bunch of stuff here... if you are interested in more, visit the Bodhi Linux site and try it for yourself).
How I made the screen bright
Upon boot of my shiny new OS, I found the screen brightness to be oddly dull. I did some searching and found that there was a workaround to this. I simply added the following to the file "/etc/rc.local"
setpci -s 00:02.0 f4.b=ff
What does it mean? In order to figure out the PCI id I needed to touch, I ran 'lspci'. This gave me the PCI listings - and I recorded the bus ID for the VGA controller. In this case '00:02.0'.The command then breaks down as follows:
- setpci - The command that is part of the standard pciutils package
- -s 00:02.0 - select the PCI device at bus 00:02.0
- f4.b=ff - this is a specific hex code for the 'backlight' register (f4.b) and the =ff part assigns the maximum value to it
Adding this to /etc/rc.local ensures that the command will be run as part of the standard boot process (eg: on start).
Essential Applications
After setting up my theme preferences to my liking, I started searching for some essential applications that I wanted. I found the following to be very handy and in line with my needs:
- Geary Email Client - a lightweight email client that is TouchScreen friendly
- Xournal - a 'writing' application that I found to be handy for on the fly notes
- xinput-calibrator - a must to ensure the touch screen is calibrated!
- Chromium extension: Adblock - meh, who needs advertising while surfing!
- Chromium extension: chromeTouch - a finger scroll add on to more easily surf when in tablet mode
- VLC Media Player - this bad boy can play pretty much anything and the performance is great!
As a personal observation, I find it interesting that even as much as I am in a 'tech' guy, I still keep looking for ways to make technology mimic real life - for example, I have made this thing act like a piece of paper with a pen with the use of Xournal!
How I Fixed the Battery Life
Out of the gate once I started playing, I noted that the battery was being drained at a much higher level than expected. What gives thought I? So I started searching and found some articles that the newer Asus laptops and Netbooks were using a new method called 'Super Hybrid Engine' for proper throttling of battery drainage. Linux by default does not support this engine.
Thankfully, the same articles mentioned that the 'Jupiter' applet was able to talk to SHE properly and would offer a much better approach to power throttling. Knowing that Bodhi Linux is compatible with Ubuntu 12.04 sources, I used the same instructions provided for Ubuntu to install the program:
sudo add-apt-repository ppa:webupd8team/jupiter sudo apt-get update sudo apt-get install jupiter jupiter-support-eee
Bingo! Battery life and throttling was restored. If you are interested, I can get about 8 hours life on this device now for casual use (eg: surfing). About 6 hours for 'mid level' use (eg: surfing, coding, compiling), and about 5 hours life for more heavy work load (powering external USB drive while watching video streams).
How I got the TouchScreen working to my liking
While the touchscreen appeared to work properly out of the gate, I found that the multi touch options were not working. I unfortunately ran into issues when researching this as I found that this particular model (T101MT) had 2 generations of hardware. While (from all reports) the 1st generation of hardware had received special drivers that made things work (eGalax) I found that I had the second generation which had a rebranded AsusTEK Multitouch (TT) device. The reports of getting this thing were extremely sparse and scattered.
However.. I was able to get a working system cobbled together. It turns out that this device works with the hid_multitouch driver. If you are reading other forums, ignore the articles about having to install a specific version of the driver... this has been patched an included as part of standard Bodhi (and Ubuntu) now.
As per several articles, I downloaded, built, and installed the 'twofing' daemon (available at http://plippo.de/p/twofing.htm). This is a TSR daemon that loads in userspace and reads the data from the xinput devices (/dev/input/eventX). I then added this to my auto start programs (for more details please refer to Bodhi Linux documentation).
The next challenge I faced was ensuring that the input device would be the proper mode for the regular user to access it via the twofing daemon. I stepped through a few articles, found several bad ones, and finally came up with the proper udev config override to make this happen. I created a file: /etc/udev/rules.d/70-touchscreen.rules with content:
SUBSYSTEM=="input",ATTRS{idVendor}=="0486",ATTRS{idProduct}=="0186",MODE="666"
The codes themselves can be found using lsusb (yes folks.. I am prompting you to read your man pages...)
This daemon added two finger scrolling, two finger tap right click, as well as some pinch / zoom gestures for some applications. The source code itself is fairly simple to update to add gestures if you have some C savvy.
The code also had the benefit of resolving some touch screen focus issues I ran into when accessing specific widgets in the Bodhi top tool bar.
How I worked around 'suspend' issues
I found several issues with devices not working after placing the device into 'suspend' mode. (Don't ask about hibernation.. I have not played with it .. and suspect there are several issues there too...).
In order to resolve, I created a file: /etc/pm/config.d/10_unload_drivers with content:
SUSPEND_MODULES="hid_multitouch ath9k ath9k_hw ath9k_common"
This seemed to do the trick (NOTE: you may need to specify different drivers dependent on if Asus changes primary hardware vendors again...)
Conclusion
There are several other items I am still working on. The largest item being screen rotation. I have successfully gotten screen 'flip' to work using a custom script that utilizes the X coordination matrix as part of the settings (long topic there...). I can't get 90 degree rotation to work yet.
However, at this time with the above notes, the majority of the items I needed to make work are now working. Did it meet my criteria? Well.. not quite.
The complaints list
As with most new (ish) hardware and linux, there are still things I'm not satisfied with, and some of these I'm going to muck into the list are related strictly to the hardware I selected as opposed to Linux or Bodhi.
The touch screen is clunky - requires a rather hard press to register what's happening
Enlightenment in Bodhi as of version 2.1 broke the ability to have a system tray (E17... stop introducing bugs damn it!)
native / built in network manager plugin doesn't work due to the above - I have to use WiCD instead (which is ok but not that sexy)
The touch screen has a 'palm rest' dead section at the bottom that can get in the way. I have adapted to it but it is annoying...
Jupiter and the native E17 CPU policies seem to conflict
In the Bodhi interface 'Alt-Tab' application switching is not supported (I suspect I can program a keyboard shortcut..)
Bodhi 'tablet' interface indicates multiple desktops (similar to android) but as of version 2.1 they broke that too...
All in all - it works and it is usable. Is it as polished as the competitors? I would say it is between iPad and Windows 8 at that level (Lord knows Win8 had more than its shares of bugs when it first release). If you are a Linux enthusiast like me, then you will appreciate being able to continue using Linux on your mobile device. The interface look / feel is quite impressive and has plenty of candy. The Asus EEE T101MT itself is a decent enough device.
NOTE: I did make some upgrades to my device to help meet the 'tablet' level of performance.
- I replaced the SATA drive with a SSD
- I intend on upgrading the RAM to a 2 GB set