Asus x205ta
Booting Arch install media
The Asus x205TA and x206HA have an exclusively 32-bit EFI bootloader. Since Arch does not include a 32-bit EFI loader in the standard install image, we need to add one. This procedure may work for other exclusively 32-bit EFI machines.
The current image (ARCH_201508) does not include the drivers for the x205ta's broadcom wireless modem, so we add those to the install image too.
Creating bootia32.efi
Acquire the latest arch install ISO (https://www.archlinux.org/download/). Let's call this file <ISO-SOURCE>. Make note of its volume label. You can see this by running "file" on the iso file you downloaded and looking for the label in single quotes.
$ file <ISO-SOURCE> | sed -e "s/.*'\(.*\)'.*/\1/"
You'll recognise it because the convention for arch labels is: 'ARCH_<YEAR><MONTH>'.
Create a custom grub.cfg file, replacing <FS-LABEL> with the correct label for your iso.
grub.cfg
insmod part_gpt insmod part_msdos insmod fat insmod efi_gop insmod efi_uga insmod video_bochs insmod video_cirrus insmod font if loadfont "${prefix}/fonts/unicode.pf2" ; then insmod gfxterm set gfxmode="1024x768x32;auto" terminal_input console terminal_output gfxterm fi menuentry "Arch Linux archiso x86_64" { set gfxpayload=keep search --no-floppy --set=root --label <FS-LABEL> linux /arch/boot/x86_64/vmlinuz archisobasedir=arch archisolabel=<FS-LABEL> add_efi_memmap initrd /arch/boot/x86_64/archiso.img } menuentry "UEFI Shell x86_64 v2" { search --no-floppy --set=root --label <FS-LABEL> chainloader /EFI/shellx64_v2.efi } menuentry "UEFI Shell x86_64 v1" { search --no-floppy --set=root --label <FS-LABEL> chainloader /EFI/shellx64_v1.efi }
Create a grub standalone image, replacing /LOCATION/OF/ with your own path:
$ grub-mkstandalone -d /usr/lib/grub/i386-efi/ -O i386-efi --modules="part_gpt part_msdos" --fonts="unicode" --locales="uk" --themes="" -o "/LOCATION/OF/bootia32.efi" "boot/grub/grub.cfg=/LOCATION/OF/grub.cfg" -v
Creating a bootable USB
Follow the instructions listed here under "PC-EFI (GPT) [x86_64 only]", but between steps 4 and 5, copy your custom bootia32.efi file to EFI/boot/bootia32.efi on your install medium, and add the x205ta's broadcom wifi driver to the appropriate squashfs.
In detail, that is:
Insert a usb storage device that you're happy to overwrite, noting its device node (e.g., /dev/sdb ; i.e., <DEV-TARGET>). Use gdisk to create a UFI bootable partition on the disk:
$ gdisk <DEV-TARGET>
Delete any existing partitions (repeatedly use the d command until they're all gone). Add a new partition (n) and set its type to "ef00" when prompted. Write the changes to disk (w).
Update the kernel's awareness of the new partition
$ partprobe
Create a FAT32 file system on the new partition (e.g., /dev/sdb1 ; i.e., <DEV-TARGET-N>).
$ mkfs.vfat -F 32 -n <FS-LABEL> <DEV-TARGET-N>
Mount the partition (to <MNT-TARGET-N>)
$ mount <DEV-TARGET-N> <MNT-TARGET-N>
Extract the relevant parts of the arch install ISO (<ISO-SOURCE>) to your usb disk
$ bsdtar -x --exclude=isolinux/ --exclude=EFI/archiso/ --exclude=arch/boot/syslinux/ -f <ISO-SOURCE> -C <MNT-TARGET-N>
Copy your custom bootia32.efi to the usb disk
$ cp /LOCATION/OF/bootia32.efi <MNT-TARGET-N>/EFI/boot/bootia32.efi
Adding wireless drivers to the install image
Get a copy of the wireless drivers and untar:
$ wget -qO- https://android.googlesource.com/platform/hardware/broadcom/wlan/+archive/master/bcmdhd/firmware/bcm43341.tar.gz | tar xvz
Unsquash and mount your preferred squashfs (i386 or x64) from the arch ISO you downloaded by following the instructions these instructions: Remastering the Install ISO.
Copy 'fw_bcm43341.bin' to '/lib/firmware/brcm/brcmfmac43340-sdio.bin' on your new bootable usb. Note the filename change.
$ cp /PATH/TO/fw_bcm43341.bin /PATH/TO/lib/firmware/brcm/brcmfmac43340-sdio.bin
Resquash the image and copy the resulting 'airootfs.sfs' to its original location on your usb install medium. Generate a new MD5 sum to sit alongside it.
Unmount
Unmount the usb install medium partition
$ umount <DEV-TARGET-N>
Booting the x205ta from USB
Insert your new install medium into your x205ta.
Enter the bios by holding F2 while pressing the power button to turn the x205ta on. Hammering on F2 while the boot process is starting may help too. There is an alternative method to enter the bios by booting into windows and selecting the appropriate menu options (tutorial), but the F2 method allows you to avoid windows entirely.
Turn off secure boot. This procedure varies between different BIOS versions. Mine was achieved by going to 'Security', and switching 'Secure Boot Control' to 'Disabled'.
Select your USB medium from the 'Boot Override' section of the 'Save & Exit' menu.
Install Arch
Enable wifi
The firmware for your wifi modem will not load by default. In addition to the driver we copied over, we'll need to copy over our local EFI variables:
$ cp /sys/firmware/efi/efivars/nvram-74b00bd9-805a-4d61-b51f-43268123d113 /lib/firmware/brcm/brcmfmac43340-sdio.txt
Now we can probe the wifi kernel module again to bring it up:
$ rmmod brcmfmac $ modprobe brcmfmac
If you want to run 4.4 kernel, you must revert this commit to get wifi working (regression in the MMC-layer)
Install Arch
Proceed as usual.
Getting hardware working
Sound
There has recently been some success in getting the x205ta's Realtek RT5648 sound card working. The relevant patches have been admitted in the first release candidate of kernel 4.11.
In the meantime you can compile Pierre Bossart's patched kernel branch, set various ALSA settings and copy some UCM files as described in this bug thread. Note that these patches are still experimental and some people testing them have had their speakers suddenly heat up to dangerous levels.
See also: this step-by-step description of how to compile Pierre Bossart's patches.
Power level information (ACPI)
Before 4.2.0-1 kernel version, you must compile your own kernel with the appropriate flag ACPI_I2C_OPREGION=y (cf. https://bugs.archlinux.org/task/44582)
You should have no problem with the power level information now if you obtain the latest kernel version >= 4.2.*. See this page.
Touchpad
With kernel version < 4.3.* the x205ta touchpad is recognised as a mouse and so gestures (e.g., two-finger scrolling) are not recognised.
Since kernel 4.3.* a simpler patch was merged and provides all touch/clickpad functionality out of the box.
Explicitly assigning the 'synaptics' driver to 'Elan Touchpad' in xorg.conf provides even more functionality (e.g., two-finger tap to right click, etc.)
Example:
/etc/X11/xorg.conf.d/elan_synaptics.conf
Section "InputClass" Identifier "Elan Touchpad" MatchIsTouchpad "on" Driver "synaptics" Option "TapButton1" "1" Option "TapButton2" "3" Option "TapButton3" "2" Option "VertTwoFingerScroll" "on" Option "HorizTwoFingerScroll" "on" EndSection
SD card reader
The micro SD card reader will probably not work out of the box. This page contains a simple fix. First, create the file as follows:
/etc/modprobe.d/sdhci.conf
# Adjustment to make micro SD card reader work options sdhci debug_quirks=0x8000
Then you will have to run mkinitcpio. Make sure you have root privileges:
$ mkinitcpio -v -g /boot/initramfs-linux.img
This will update your initramfs file and load the new configuration you made in "sdhci.conf". You should be able to view your Micro SD card after a reboot.
With this patch the card reader should work out of the box.
Special keys
Out of the box, the only keysyms correctly sent are the audio volume keys (F10-F12). Ironic, since the sound card doesn't work. Can be conveniently remapped to control screen brightness (e.g., by calling xbacklight).
Freezing
Some users experience regular freezes, where their x205ta can only be restarted by holding down the power button for several seconds. Some users have reported that so far kernel version 4.1.6 seems to experience fewest freezes. Freezes seem to occur less regular with the current(2015-11-02) 4.3-mainline vanilla kernel.
Setting kernel argument "intel_idle.max_cstate=1" solve the problem without affecting performance. The Kernel parameters page may help with adding to the kernel parameters.
There is a kernel available with patches from Intel in the AUR: linux-baytrail411AUR.
Bluetooth
Install a correct firmware file (e.g., BCM43341B0_002.001.014.0122.0176.hcd from Windows 10 driver) as /lib/firmware/brcm/BCM43341B0.hcd.
Install the bluez package, enable the bluetooth.service
systemd service, and then run this command
# btattach --bredr /dev/ttyS1 -P bcm
To automate running this command at startup you can create a service file for it
/etc/systemd/system/btattach.service
[Unit] Description=Btattach [Service] Type=simple ExecStart=/usr/bin/btattach --bredr /dev/ttyS1 -P bcm ExecStop=/usr/bin/killall btattach [Install] WantedBy=multi-user.target
Then enable the btattach.service
systemd service.