Ubuntu on the $59 WinBook TW700 Windows 8.1 Tablet – Step 2

PLEASE NOTE: This is an attempt to explore the feasibility of running Ubuntu on a Bay Trail tablet. It will not be uncommon to experience kernel panics and unexpected behavior at this point in time with Linux and Intel’s Bay Trail hardware. The tablet can run a little hot during the initial parts of the installation, so if you hit a barrier, turn it off, take a break, and let it cool down. Please proceed at your own risk, and make sure you have your Windows recovery drive!

In the previous post, http://infosoda.com/ubuntu-tw700-1/ we performed a basic install of Ubuntu 14.10 on the WinBook TW700. In this post, we will update the kernel, enable the built in wireless, and enable the touch screen (goodix support for this screen is built into the new kernel). We will also repair GRUB, so we are not dependent upon the bootia32.efi bootloader on the installation USB when booting. As I mentioned in my previous post, I have borrowed content and direction from John Wells with his post linked at: http://www.jfwhome.com/2014/03/07/perfect-ubuntu-or-other-linux-on-the-asus-transformer-book-t100/ , making changes and corrections as needed for us to proceed on this WinBook.

I prefer to work smart, and prefer to work on the tablet via an ssh session. This will also make it easier to cut and paste the terminal commands in this article. If you do not have a computer with ssh or putty, you can skip this step. Join your tablet to your wireless (using a linux compatible wifi dongle). Open your terminal (the keyboard shortcut is control+alt+t) and type in:

sudo apt-get update
sudo-apt get install openssh-server
ifconfig

Now from your workstation you can ssh into the tablet using the IP address the command provided, with the following format:

ssh username@10.10.10.xx (or whatever your tablet’s IP is)

Now continuing from a terminal session:

sudo apt-get update && sudo apt-get install git bison libopts25 libselinux1-dev autogen m4 help2man libopts25-dev flex libfont-freetype-perl automake autotools-dev libfreetype6-dev texinfo lib32z1 lib32ncurses5 lib32bz2-1.0 autoconf build-essential gnome-common systemd libgudev-1.0-dev

This will install the packages required to build our drivers and GRUB efi file. Now we will update the kernel. In this example, I am downloading the generic 3.19.0 kernel for Ubuntu (which will detect the touchscreen!).

cd /tmp/
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-headers-3.19.0-031900-generic_3.19.0-031900.201502091451_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-headers-3.19.0-031900_3.19.0-031900.201502091451_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-image-3.19.0-031900-generic_3.19.0-031900.201502091451_amd64.deb
sudo dpkg -i linux-headers-3.19.0-*.deb linux-image-3.19.0-*.deb
sudo reboot

Once we reboot, we still need to use GRUB on our installation USB drive. Once you see GRUB, hit the ‘c’ key to enter the command line

linux (hd1,gpt2)/boot/vmlinuz

Then hit “tab” to autocomplete. You should now see a new entry – the packaged kernel (vmlinuz) with the upgraded version. Use this new version. PLEASE note, we will addend “nomodeset” with an additional parameter – “reboot=pci,force”.

Using the kernel from above, you should then have the following in your GRUB commands:

linux (hd1,gpt2)/boot/vmlinuz-3.19.0-031900-generic root=/dev/mmcblk0p2 nomodeset reboot=pci,force
initrd (hd1,gpt2)/boot/initrd.img-3.19.0-031900-generic
boot

The new kernel should recognize your touch interface, and we will address this is more detail at the end of the article. In the meantime, to update your wireless, open your terminal and type:

cd /tmp/
git clone https://github.com/hadess/rtl8723bs.git
cd rtl8723bs/
make
sudo make install
sudo depmod -a
sudo reboot

The wireless will be detected after the reboot. Unfortunately, the wireless at this point is not very reliable. I would recommend to keep utilizing the wireless on your USB dongle, especially through the remainder of this guide! Remember to use the command line at the GRUB menu (we are still using the USB’s GRUB) to point at the correct vmlinuz and initrd paths when re-booting.

 Now we will repair GRUB, and forego pressing “c” at the GRUB menu to load our Ubuntu installation. This process will take a few minutes to compile on this little tablet, so please be patient. Open the terminal and “get” the GRUB source:

cd /tmp/
git clone git://git.savannah.gnu.org/grub.git
cd grub/
./autogen.sh
sudo ./configure --with-platform=efi --target=i386 --program-prefix=""
sudo make
cd grub-core/
sudo ../grub-install -d . --efi-directory /boot/efi/ --target=i386
cd /boot/efi/EFI
sudo cp grub/grubia32.efi ubuntu/grubx64.efi

After replacing the installed 64 bit EFI boot loader with our compiled 32 bit version, we will now update GRUB with your preferred editor:

sudo nano /etc/default/grub

Change the GRUB_CMDLINE_LINUX_DEFAULT line with the parameter “nomodeset reboot=pci,force”

Editing the grub file
Editing the grub file

This is a great opportunity to customize grub to your preferences – you can alter timers, disable the display of the UUID, et cetera.

Save the new setting with Control+O, exit via CONTROL+X.

Now update GRUB at the command line:

sudo update-grub
sudo grub-install /dev/mmcblk0

sudo reboot

The last command will shut down the tablet; you may now remove the installation USB.

Unfortunately, the reboot process is possessed with various errors – you will want to have a USB keyboard connected, and may prefer to boot in recovery mode (advanced options -> Ubuntu 3.19 recovery mode).

I would recommend playing with the Florence virtual keyboard; you can access the built in Ubuntu “onboard” keyboard also.

To install florence:

sudo apt-get -f install
sudo apt-get install florence

For more info on Florence, please take a look at the following link: http://xmodulo.com/onscreen-virtual-keyboard-linux.html

That site can assist in setting up the defaults, auto-launch, etc.

 There are still multiple issues to be addressed, including the audio and bluetooth. I will attempt to create a third post if I am able to dedicate some time to address these issues. I would also like to re-address the wifi instability, and this fix may be directly related to the bluetooth fix (they both use the Realtek rtl8723bs). Most of these issues are works in progress, and I will keep an eye on GitHub and other sources for the development of any Linux drivers that my assist in the usability of this tablet.


Ubuntu on the $59 WinBook TW700 Windows 8.1 Tablet – Step 1: Installing Ubuntu

I recently stopped by Houston’s new MicroCenter (they recently moved into a new store), and walked out of the store with their WinBook TW700 tablet for about $40. This tablet is built around Intel’s Bay Trail Atom architecture, sporting a 1.33GHz quad core Atom processor, Windows 8.1, and a free (1) year subscription to Office 365. This little tablet only has a 7″ screen, 1GB of RAM, and 16GB of internal storage, but the Micro-SD slot and a full sized USB 2.0 port sealed the deal for me.

With the memory and storage specs, I needed to figure out how to get Linux on this little tablet as fast as possible. Windows reserves 7.19 GB for a recovery partition, and anyone with experience with Windows can figure out how far 8.74GB of useable space will go after a few updates. Also, with only a 7″ screen, Microsoft’s crossover interface in Windows 8.1 is a little difficult to use. I naturally gravitated towards Ubuntu, hoping to take advantage of Unity and perhaps one of their touch oriented images.

First, you will need a couple of common items – a USB hub, a USB keyboard and mouse, a linux compatible wifi USB dongle, and a couple of appropriately sized USB drives (8GB or more).

Use the first USB drive to create a recovery disk – unfortunately, we are unable to delete the recovery partition after creating the USB drive, a missed opportunity to almost double the storage space! See the following Microsoft link for instructions: http://windows.microsoft.com/en-us/windows-8/create-usb-recovery-drive

After creating the recovery USB, we need to create an Ubuntu installer on the second USB drive. I recommend using Rufus, a Windows based bootable USB utility. Download the latest 64 bit Ubuntu Desktop image (32bit Ubuntu image does not support EFI booting), and install it on the USB, using “GPT Partition Scheme for UEFI Computer” and keeping the remaining defaults.

Ubuntu USB with Rufus

 

Here comes the caveat – the WinBook uses a 32bit EFI bootloader, but the 64bit Ubuntu image will install a 64bit bootloader. I referred to John Wells’ guide at the following link to steer me in the right direction: http://www.jfwhome.com/2014/03/07/perfect-ubuntu-or-other-linux-on-the-asus-transformer-book-t100/ Either grab a copy of his bootia32.efi file (or compile your own) and drop it into the EFI/BOOT folder on your USB drive.

bootia32.efi

 

At this point, we are ready to install Ubuntu on the tablet. Eject the recovery USB, and connect your USB hub to the T700, with the wifi dongle, keyboard/mouse, and bootable USB. Then on your powered on tablet, choose PC Settings->Update and Recovery->Recovery->Restart Now. In the Recovery Window, choose Troubleshoot->Advanced options->UEFI Firmware Settings->Restart. This will populate a traditional “BIOS” menu. Make sure Safe Boot is disabled on the security tab, change the boot order so the bootable USB drive is listed first, and exit, saving changes.

If all goes well, you should be prompted with the GRUB menu. Select “Install Ubuntu” and press “e” to edit the GRUB settings.

I recommend replacing “quiet splash” with “nomodeset”, which is a deviation from John Wells’ blog. This will show the verbose booting (removing quiet) and “nomodeset” instructs the kernel to not load video drivers until X is loaded. Press F10 at this point to boot the Ubuntu installer.

Install Ubuntu as normal – but at the “Installation Type” window, choose “Something else”. Remove all partitions, and create the following:

  • A 100MB primary partition, used as an “EFI boot partition” (100MB is minimum)
  • An EXT4 partition, subtracting your swap space. I simply used “/” as my mount point
  • A swap partition (optional, but I chose 1000MB due to limited RAM)

Take a note of your device partitions for a later step, I had the following:

  • /dev/mmcblk0p1 – efi partition
  • /dev/mmcblk0p2 – ext4 (Ubuntu) partition
  • /dev/mmcblk0p3 – swap partition

Finish the installation, but we still need to boot using the bootable USB upon the initial reboot.

At the reboot, we will face the GRUB menu from the bootable USB. Choose “c” for a command prompt. At the “grub>” prompt, type “ls” and note the visible partitions. The bootable USB should be listed as “hd0”, with the (3) partitions we created listed as (hd1,gpt1), (hd1,gpt2), and (hd1,gpt3). Using the partition notes above, issue the following commands:

linux (hd1,gpt2)/boot/vmlinuz-3.xx.x-xx-generic root=/dev/mmcblk0p2 nomodeset
initrd (hd1,gpt2)/boot/initrd.img-3.xx.x-xx-generic
boot

PLEASE NOTE which kernel package you are using, and more than one may be available. I want you to be aware of this for every command line boot we perform with the bootable USB. Also both commands must have matching version numbers in the above commands! You may need to try different kernel versions also to boot. I was only able to boot consistently with kernel 3.16.0-23-generic.

Your tablet should boot to the login you set up during the installation. Go ahead and log in, and enjoy the first fruits of your labor. In the next blog, we are going to fix GRUB, and compile our missing drivers.

Until then, you must keep our initial bootable installer USB plugged into and use the GRUB command line to boot the tablet.

Proceed to step 2 of Ubuntu on the Winbook TW700:

http://infosoda.com/ubuntu-tw700-2/