Latest update: 6 January 2018

In this guide I will be demonstrating how to install Linux on the Linx 1010B tablet, a low-cost 10-inch Windows 10 tablet. It uses the Bay Trail chipset, which has a history of causing frustration when trying to boot Linux, particularly because although it features a 64-bit processor, it uses an EFI system that only operates in 32-bit. Linux support for the hardware in general is not brilliant, but is improving.

This guide assumes a reasonable level of knowledge with Linux, disk partitioning etc.

What to Use?

Your first decision is the distribution and version of Linux to install. My personal preference is for Ubuntu Linux and the GNOME desktop environment (now the default on Ubuntu as of 18.04). In particular, this combination seems to provide the best tablet support at the current time.

In all versions of Ubuntu from 15.04 (for which I originally wrote the guide) up to the latest (currently 18.10), the following work:

  • Installation
  • Dual-booting with Windows 10
  • Touchscreen with multi-touch and on-screen keyboard

And the following do not appear to work on any tested version:

  • Sound
  • Bluetooth
  • Cameras

Ubuntu 18.10

Ubuntu 18.10 seems to offer the best hardware support at this time. In particular, the “upside-down display”, screen brightness control and “long press to right-click” problems have been fixed. However, I have had some trouble getting the WiFi to connect which I didn’t have in 18.04. Your mileage may vary.

Ubuntu 18.04.1 LTS

Ubuntu 18.04.1 works reasonably well, and as mentioned above I have had the most reliable WiFi with this version. However, the following issues are present over and above the non-functional sound, Bluetooth & camera:

  • Screen rotation accelerometer is inverted
  • Cannot control screen brightness
  • Long-press does not trigger right-click
  • GNOME on-screen keyboard does not work well with some applications e.g. Firefox (“Onboard” recommended as a replacement)

Other Desktop Environments

GNOME seems to be the best set up for tablets at this time, although it can be slow. I have spent some time with XFCE on the tablet which is much faster, but has issues with tapping-to-click in some applications, and screen rotation must be managed manually (example commands below).

Other Distros

If you prefer Fedora you may have more luck with Fedlet, a customised version specifically for Bay Trail computers. However, it’s been out of development since 2016 and may no longer be the best way to install Fedora on this tablet.

Equipment Required

To get started you will need:

  • Linx 1010B tablet and charger
  • Ubuntu Linux ISO image (18.10 64-bit recommended, download from here – download will start automatically!)
  • A USB memory stick with at least 4GB capacity
  • The Linx 1010B keyboard attachment, or other USB keyboard

Preparing for Ubuntu Installation

I recommend dual-booting Ubuntu with Windows for now while the tablet doesn’t have full Linux support. The disadvantage of this will be very limited space on the Ubuntu partition (~8GB), but the ability to fall back to Windows if things go wrong is very useful!

  1. Begin flashing your Ubuntu ISO onto your memory stick using Unetbootin. If you downloaded it on the tablet itself, you may want to delete the ISO from your hard disk afterwards to save space!
  2. The USB stick will currently be bootable on EFI systems in 64-bit mode, but not in 32-bit mode (which is all this tablet supports). To fix this, grab this bootia32.efi file and place it in <usb stick>:\EFI\boot\.
  3. You need to repartition your tablet’s internal storage to make space for Ubuntu. The easiest way to do this is (as of Ubuntu 18.04) is to get Ubuntu to do it during the installation, but you may need to clear out some space from within Windows, then run a disk cleanup, to ensure at least 8GB of space is free.
  4. Turn your tablet off.
  5. Connect your Linx or USB keyboard.
  6. Turn the tablet on while holding the Volume Up button. The screen should say something like “Esc is pressed”, then you will be given a setup menu.
  7. My tablet had Secure Boot disabled by default, so you should be able to press “Boot Manager” and you’ll see your USB device in the list. Press it to continue. (If you don’t see it, play around in the setup menu until you find the option to disable Secure Boot, then press F10 on the keyboard to save, and repeat this step.)
  8. You will boot from the memory stick and get to the GRUB bootloader screen, which doesn’t support touch input. Using your keyboard, go down to “Install Ubuntu” and press Enter. The Ubuntu installer will run.

Installing Ubuntu

In Ubuntu 18.04 or later, this is now very easy as the installer understands about the 32-bit UEFI issue. You can now select all options as you normally would in the installer. Choose “Install Ubuntu alongside Windows Boot Manager” when prompted for where to install, and ensure that at least 8GB of space is allocated.

Once installation is complete, your tablet will prompt you to reboot. It should now start up automatically into the new Ubuntu installation.

Congratulations! At this point, if you’re using Ubuntu 18.04 or above and the default desktop environment, you’re probably done!

Post-Install Usage Notes

  • It’s not that intuitive how to summon the GNOME on-screen keyboard if it doesn’t pop up automatically. You do it by swiping up from the bottom of the screen!
  • If you use Firefox, you may want to install the Grab and Drag add-on which will improve web browsing with a touchscreen.


Additional Fixes for Older Versions etc.

If you’re using an Ubuntu version prior to 18.04, a desktop environment other than GNOME, or a different Linux distribution, the following sections list some fixes and additional steps that may help you out. The majority of users who have followed the instructions above can stop reading here!

Installation of Ubuntu versions earlier than 18.04

These versions do not install alongside Windows properly or set up GRUB properly with the system’s 32-bit UEFI. Follow this procedure to get them installed:

  1. When it comes to step 3 of the installation, you should be offered to “Install Ubuntu alongside Windows Boot Manager”. Don’t choose this, instead choose “Something Else”.
  2. In the free space you cleared, create a single ext3 partition and choose to mount it at /. (I didn’t have much luck with ext4, the installer locked up every time.) Make a note of the partition name — it should be /dev/mmcblk0p5.
  3. You’ll also be asked which disk/partition to install GRUB too — just leave this as the default as it won’t work anyway. We’ll fix that later.
  4. You’ll be warned about the lack of a swap partition. To save the flash memory from excess writing, and because very little space is available for Linux anyway, I chose to do without one.
  5. After copying files and configuring the system, the installer will show an error message because it failed to install GRUB. This is OK — installing GRUB is the last step, so the rest of the install has worked fine.
  6. Shut down the tablet, leaving the USB stick attached.

Currently, there’s no boot loader that will let you boot your Ubuntu install. What we can do temporarily is use the copy of GRUB on the USB stick, and tweak it to boot the copy of Ubuntu on your internal storage instead of the one it normally boots.

The easiest way I found to do that is as follows:

  1. Boot into Windows.
  2. Open up your USB stick in Explorer, and open the file <usb stick>:\boot\grub\grub.cfg in a text editor.
  3. Just above the line menuentry "Try Ubuntu without installing" {, add the following lines:
       GRUB_DEFAULT=0
       GRUB_TIMEOUT=5
    
       menuentry "Run from internal disk" {
           linux    (hd1,gpt5)/boot/vmlinuz-4.2.0-16-generic.efi.signed root=/dev/mmcblk0p5 intel_idle.max_cstate=0 quiet splash $vt_handoff
           initrd   (hd1,gpt5)/boot/initrd.img-4.2.0-16-generic
       }
    

Note: I believe this should be the right kernel version that gets installed with Ubuntu 15.10. If it doesn’t boot at all, when you try to boot from GRUB in a moment, press C and enter the linux and initrd commands yourself, using tab completion to find the right versions.

If it boots but you get a busybox console instead of a proper Ubuntu login GUI, check your partition numbering — /dev/mmcblk0p5 may not be the right partition.

Now turn your tablet off, and turn it on again with Volume Up held. As before you should be able to boot from the USB stick, but this time the GRUB menu will have a new “Run from internal disk” option. Ubuntu should start and you can log in as the user you set up.

Now follow these steps to get GRUB set up permanently without requiring the USB stick:

  1. Install the 32-bit version of grub by executing the following from a terminal: sudo apt-get install grub-efi-ia32 grub-efi-ia32-bin
  2. As before, we still don’t have a proper 32-bit EFI file for grub, so download this one.
  3. Place the downloaded file in the right location, instead of the 64-bit file that grub is expecting, which is at /boot/efi/EFI/ubuntu/grubx64.efi. (For example, sudo mkdir -p /boot/efi/EFI/ubuntu && sudo cp grubia32.efi /boot/efi/EFI/ubuntu/grubx64.efi.)
  4. Edit the default GRUB configuration on your tablet by opening /etc/default/grub in a text editor as root (e.g. sudo nano /etc/default/grub).
  5. There should be a line that reads GRUB_CMDLINE_LINUX_DEFAULT="quiet splash". Edit that so it reads GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=0 quiet splash".
  6. There should be a commented out line that reads GRUB_TERMINAL="console". Uncomment that line.
  7. To start up without a keyboard attached, you will want the default GRUB option to boot automatically without you having to press Enter. To do this, make sure the lines at the top of the file that read something like:
       GRUB_DEFAULT=0
       GRUB_TIMEOUT=5
    
  8. If you have a line that sets GRUB_HIDDEN_TIMEOUT, comment it out.
  9. Save and close the file.
  10. Install GRUB with sudo update-grub && sudo update-grub2 && sudo grub-install.
  11. Check that GRUB has added “ubuntu” as an option to the EFI boot manager by running sudo efibootmgr -v. Check the four-digit numbers of each partition against the boot order shown, and it should list your Ubuntu install as the first one. If not, manually add this install to your EFI boot list with sudo efibootmgr -c --disk /dev/mmcblk0 --part 1.
  12. Shut down your tablet and remove the USB stick.
  13. Start up the tablet (no need to hold Volume Up any more!), and it should show you GRUB for a few seconds, then start up to the Ubuntu login screen.

Screen Rotation

If you’re using GNOME, the screen is probably rotating with tablet orientation as you would expect. If not, to rotate it, run the following commands. The first rotates the display to landscape mode, the second is required to rotate the touch input so it matches the screen.

xrandr -o right
xinput set-prop "pointer:Goodix Capacitive TouchScreen" 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1

If you want this to happen automatically when you log in, save both commands to a file (e.g. ~/scripts/rotate), make it executable (chmod +x ~/scripts/rotate) and add it to your desktop environment’s Startup Applications.

The equivalent script to set the screen back to portrait mode is as follows (thanks to Scott in the comments!):

xrandr -o normal
xinput set-prop "pointer:Goodix Capacitive Touchscreen" 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1

Rotating the Login Screen

On Ubuntu 18.10 using the default GDM3 login screen, it should rotate automatically with tablet orientation as you would expect. Otherwise, it should be possible to apply the manual rotation above to the login screen as well by editing its configuration.

For example, in Ubuntu 15.04 using the default LightDM login screen, we achieve this by creating a file named /etc/lightdm/lightdm.conf.d/80-display-setup.conf with the following contents:

[SeatDefaults]
display-setup-script=xrandr -o right && xinput set-prop "pointer:Goodix Capacitive TouchScreen" 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1

However, depending on the choice of login screen this may produce a “low graphics mode” error on startup and fail to display the login screen. In this eventuality it’s easiest just to perform the login in portrait orientation.

Onboard setup

If you aren’t using GNOME, it’s a good idea to run “Onboard” (an on-screen keyboard) and configure it to your liking. (You may also prefer it to the GNOME on-screen keyboard anyway!) The following settings make it behave a lot like the Windows keyboard:

  1. General -> Auto-show when editing text
  2. General -> Show status icon
  3. Window -> Window options -> Dock to screen edge
  4. (Grab your onboard window and stretch it to your desired height)
  5. Window -> Resize Protection -> Window handles: None
  6. Layout -> Small
  7. Typing Assistance -> Show suggestions

Long-press to Right Click

If you’re using Ubuntu 18.10 with the default GNOME environment, you should already be able to do a long press to right-click as you would expect.

If not, Ubuntu’s “Universal Access” panel contains a “Simulated Secondary Click” option that should allow you to long-press on the touchscreen to get a right click effect. You can also achieve the same from the terminal with:

gsettings set org.gnome.desktop.a11y.mouse secondary-click-enabled "true"

On older versions of Ubuntu, the touchscreen sensitivity seems to be very high, so even if you keep your finger relatively still, it is still counted as a left button drag rather than a right button click. No other GNOME/Unity settings appear to alter this.

There are some xinput options that are configurable and should achieve this as well, such as those below, but I have not succeeded in getting them working so far.

xinput --set-prop "Goodix Capacitive TouchScreen" "Evdev Third Button Emulation" "1"
xinput --set-prop "Goodix Capacitive TouchScreen" "Evdev Third Button Threshold" "100"
xinput --set-prop "Goodix Capacitive TouchScreen" "Evdev Third Button Timout" "500"

Thanks To…

To get this far I’ve used information from the following places. I’m extremely grateful to the people that wrote them!