What's the problem with this tablet? Why can't I just insert the USB and mash F12 until it boots? The tablet is made to run Windows 8.1 and Windows 8.1 only. Some absolute genius at Acer decided to put a 32-bit UEFI on a 64-bit system, which no reasonable Linux distro supports out-of-the-box.
NOTE: This guide focuses on installing Ubuntu alongside Windows. If you're trying to replace Windows, then I assume you know enough about Linux to know which parts to change.
- Keyboard
- Trackpad
- Touchscreen
- Sound (usually)
- Backlight control (with a patch)
- HDMI output
- Micro SD reader (read only)
Before you start, there's a few things you need:
- USB flash drive (at least 4GB)
- USB OTG adapter (not always necessary, but recommended)
- 32-bit GRUB UEFI binary (explained below)
- 64-bit Ubuntu ISO
- BIOS v1.20 installed (required for backlight fix - you can only update BIOS from Windows, so do it now!)
- Rufus (or an equivalent image writer)
- USB WiFi or Ethernet card (in case your Wi-Fi doesn't work)
- Open Rufus
- Select the correct USB Stick
- Select "GTP for UEFI computers" as the partition table (if available)
- "Select the Ubuntu 64-bit iso
- Click "Create"
If you trust me (and the owner of that repo), you can just download the file here, but remember, downloading binaries from random strangers on the internet is not a good idea.
Building it yourself
To build GRUB, run the following commands in a Linux shell:
# Install build dependencies and tools
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
# Clone the GRUB repo
git clone git://git.savannah.gnu.org/grub.git
cd grub
# Configure GRUB
./autogen.sh
export EFI_ARCH=i386
./configure --with-platform=efi --target=${EFI_ARCH} --program-prefix=""
make
cd grub-core
# Build the GRUB image
../grub-mkimage -d . -o bootia32.efi -O i386-efi -p /boot/grub ntfs hfs appleldr boot cat efi_gop efi_uga elf fat hfsplus iso9660 linux keylayouts memdisk minicmd part_apple ext2 extcmd xfs xnu part_bsd part_gpt search search_fs_file chain btrfs loadbios loadenv lvm minix minix2 reiserfs memrw mmap msdospart scsi loopback normal configfile gzio all_video efi_gop efi_uga gfxterm gettext echo boot chain eval
This will create a file called "bootia32.efi".
Copy "bootia32.efi" to "/EFI/Boot/" on your flash drive.
- Open the "BIOS" (F2 when you see the Acer logo)
- Under "Security" set a supervisor password
- Under "Boot" set "Secure boot" to disabled
- Set the USB stick to boot first
- Press F10 to save changes and reboot
If your USB doesn't show up, try to plug it in to the body directly using an OTG adapter, not via the keyboard dock).
- The laptop should automatically boot into GRUB
- In the GRUB menu choose "Try Ubuntu without installing"
- Open the terminal and run
ubiquity --no-bootloader
to start the installer (--no-bootloader
isn't usually necessary, but if your installation fails with some bootloader-related error, try this) - When prompted, select "Something else" to manually partition the drive
- Add a root (ext4, "/") and swap (swap, "swap") partition
- Finish the installation and hope for the best
In order to boot the Ubuntu we just installed, we need to use the USB GRUB again. Just let the laptop automatically boot from the USB. When in GRUB, press C to open a command line. Run the following commands:
set root=(hd1,gpt5)
linux /vmlinux root=/dev/mmcblk0p5
initrd /initrd.img
boot
If it doesn't work, try with /dev/mmcblk1p5
and/or booting without an SD card inserted.
Obviously we can't use the USB GRUB to boot forever. Let's install GRUB: Open the terminal and run the following commands:
# Get the 32-bit UEFI GRUB package
sudo apt-get install grub-efi-ia32 grub-efi-ia32-bin
# Mount your EFI partition
mkdir /boot/efi # if the dir already exists, skip the mount command
sudo mount /dev/mmcblk0p1 /boot/efi
# Install GRUB
grub-install --target=i386-efi --efi-directory=/boot/efi/
If the 32-bit grub package doesn't exist, you can compile it yourself like this:
# Get build dependencies
sudo apt-get install autoconf
# Get the GRUB source
git clone git://git.savannah.gnu.org/grub.git
# Compile 32-bit UEFI GRUB
cd grub/
./autogen.sh
./configure --with-platform=efi --target=i386
# Install GRUB
sudo grub-install --target=i386-efi --efi-directory=/boot/efi/
Reboot the laptop and press F12 to go into the boot menu. If you see an option called "ubuntu" and it works, you can skip this part.
- Go into BIOS
- Under "Boot" set "Secure boot" to enabled
- Press F10 to save changes and reboot
- Go into BIOS again
- Under "Security", click "Add trusted executable"
- Navigate to *\HD0\EFI\ubuntu* and select
grubia32.efi
- Enter the name for the bootloader entry and press OK
- Press F10 to save changes and reboot
- Go into BIOS for the last time
- Under "Boot" set "Secure boot" to disabled
- Press F10 to save changes and reboot
You should not see the entry in the boot menu (F12)
See this comment. Note that this will only work if you're on BIOS v1.20.
A lot of this has since been upstreamed, so if it works for you, you can safely skip this section.
I don't have it so if someone got it working, please comment below so I can add it
The drivers for this card have been merged into the kernel, so it should work automatically.
If it doesn't work for you:
# Clone the driver repo - if you don't have a wifi card, do this step onto a USB stick from another device
git clone https://github.com/hadess/rtl8723bs
# Build and install the driver
cd rtl8723bs
make
sudo make install
sudo modprobe r8723bs
If it doesn't work immediately, reboot.
Not required on modern kernels
To make the keyboard work you need to modify the kernel source and recompile it.
Before compiling the kernel, open the file include/linux/hid.h and change the value of MAX_HID_USAGES (default is 12288
) to 65536 (On aproximately line 346).
Then compile and install the kernel.
To see how to do this, read my other guide.
- Building the bootloader for the USB: https://github.com/jfwells/linux-asus-t100ta/blob/master/boot/readme.md
- Firmware info and backlight fix: https://hansdegoede.livejournal.com/24132.html
I did some more testing with the auto-rotate issue, which is very important since I want to use the device for reading.
I found a couple posts mentioning it, and ultimately I ended up on the systemd GitHub page to adjust the sensor settings. According to sources, changing the ACCEL_VELOCITY_MATRIX is a solution. There is even an example entry for the Acer Aspire SW5-012, but even after adding the file and restarting my computer, I couldn't get it to work.
Systemd GitHub sensor page: https://github.com/systemd/systemd/blob/main/hwdb.d/60-sensor.hwdb
If anyone has been able to fix this, please LMK.
Here are some photos to see the issue: