ASUS Zenbook Prime UX31A - ArchWiki

Jump to content
From ArchWiki

This article or section does not follow the Laptop page guidelines.

Reason: Also avoid maintaining scripts and programs here. (Discuss in Talk:ASUS Zenbook Prime UX31A)

This article or section is out of date.

Reason: Most of the content was written between 2012 and 2014, with the last cleanup (from someone who owns the hardware) in 2015. (Discuss in Talk:ASUS Zenbook Prime UX31A)

Hardware | PCI/USB ID | Working?
--- | --- | ---
GPU | `8086:0166` | Yes
Audio | `8086:1e20` | Untested
Wireless | `8086:088e` | Untested
Webcam | `04f2:b330` | Untested
Bluetooth | `8087:07da` | Untested
SD Card Reader | `0bda:0139` | Untested

This page contains instructions, tips, pointers, and links for installing and configuring Arch Linux on the ASUS Zenbook UX31A and UX21A Ultrabooks. Most of it should also hold for UX32VD.

See previous generation ASUS Zenbook UX31E page that has mostly orthogonal information to those here (may be only partially applicable to UX31A)

## Installation

To install Arch Linux on UX31A, you can follow the official Installation guide. Since the UX31A uses UEFI and GPT, make sure to also read the UEFI, GPT and Arch boot process#Boot loader pages. To prepare a UEFI USB device, read UEFI#Create UEFI bootable USB from ISO.

### Boot from USB medium

Press `Escape` to get into the boot menu. If the USB bootable device is not listed, enter the configuration menu and directly press `F10` to save. Press `Escape` again on reboot: This time the USB bootable device should appear in the menu.

Make sure to boot the USB in EFI-Mode, to easily install the bootloader later.

## Function keys

Note: A working keymap means that there is some output in `xev` when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.

This table shows the function keys, their intended function, what keycode (if any) X recognizes and whether the function key operates at the BIOS level or if it needs a shortcut.

Keys | Function | X sees | shortcut needed
--- | --- | --- | ---
`Fn+F1` | Sleep | XF86Sleep | no
`Fn+F2` | Turn off WLAN and Bluetooth | XF86WLAN & XF86Bluetooth | no
`Fn+F3` | Dim keyboard backlight | XF86KbdBrightnessDown | yes
`Fn+F4` | Brighten keyboard backlight | XF86KbdBrightnessUp | yes
`Fn+F5` | Dim LCD backlight | XF86MonBrightnessDown | no
`Fn+F6` | Brighten LCD backlight | XF86MonBrightnessUp | no
`Fn+F7` | Turn off LCD | No named key | no
`Fn+F8` | Toggle display | XF86Display | yes
`Fn+F9` | Toggle touchpad | XF86TouchpadToggle | yes
`Fn+F10` | Audio mute/unmute | XF86AudioMute | yes
`Fn+F11` | Audio volume down | XF86AudioLowerVolume | yes
`Fn+F12` | Audio volume up | XF86AudioRaiseVolume | yes
`Fn+a` | Ambient light sensor | m:0x0 + c:248 | yes
`Fn+c` | Switch display profiles | XF86Launch1 | yes
`Fn+v` | Webcam | XF86WebCam | yes
`Fn+space` | Switch power profiles | XF86Launch6 | yes

### Screen backlight

The brightness is managed via hardware, so it should work across all DE's. In case it is not working directly, you need to set the kernel parameter `acpi_osi=` (the space is required).

### Keyboard backlight

Keyboard backlight should work automatically with any recent kernel. Desktop environments that use UPower, like GNOME or KDE, work out the box and do not need any tool or script to register the keys and change the keyboard brightness.

#### Manually setting the brightness

The easiest way to change the keyboard brightness is to use the UPower D-Bus interface. This even works without root.

To get the current brightness:

    $ dbus-send --type=method_call --print-reply=literal --system --dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetBrightness

To set the brightness:

    $ dbus-send --type=method_call --print-reply=literal --system --dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.SetBrightness int32:value

You can also control the brightness of the keyboard backlight through the `brightness` file in `/sys/class/leds/asus::kbd_backlight/` or `/sys/devices/platform/asus-nb-wmi/leds/asus::kbd_backlight/` by writing a value to it. This needs root. You can retrieve the maximum from `max_brightness`:

    # cat /sys/class/leds/asus::kbd_backlight/max_brightness

TO set it to a particular value:

    # echo value > /sys/class/leds/asus::kbd_backlight/brightness

#### Using asus-kbd-backlight

asus-kbd-backlightAUR is a convenient way to manage the backlight brightness, if one does not want to use UPower. To allow users to change the brightness, write:

    # asus-kbd-backlight allowusers

Users of systemd can use the unit file included in the package.

Now you can easily change keyboard backlight in terminal:

    $ asus-kbd-backlight up
    $ asus-kbd-backlight down
    $ asus-kbd-backlight max
    $ asus-kbd-backlight off
    $ asus-kbd-backlight night
    $ asus-kbd-backlight 2
    $ asus-kbd-backlight show

You can then bind the `XF86KbdBrightnessDown` and `XF86KbdBrightnessUp` keys to the above functions.

#### Ambient Light Sensor (ALS)

The Zenbook has an ambient light sensor which enables adjustment of the keyboard and LCD backlights based on the light environment in which the Zenbook finds itself.

The kernel module package is als-dkmsAUR and the userspace programs in als-controller-gitAUR.

##### ALS Driver

The ALS driver is a module named `als`. The resulting device is represented in sysfs in the directory `/sys/bus/acpi/devices/ACPI0008:00`. The ambient light sensor is enabled by writing a "1" to the file `enable`:

    # echo "1" > /sys/bus/acpi/devices/ACPI0008:00/enable

However, it is better to use the userspace controller described below. Note that the module will need to be rebuilt with every kernel update.

If the sensor is not visible at `/sys/bus/acpi/devices/ACPI0008:00`, you should set `acpi_osi='!Windows 2012'` in your kernel parameters.

##### ALS Controller

The `als-controller` package will build the als-controller program and an example userspace script. The als-controller program is installed as `/usr/share/als-controller/service/als-controller`. If the programs is run as root and without parameters it will start the als-controller daemon and create a pidfile and socket for it in `/var/run`:

    # /usr/share/als-controller/service/als-controller

The als can then be enabled and disabled by running als-controller as an unprivileged user with the appropriate parameter (`-e` or `-d`. To enable:

    $ /usr/share/als-controller/service/als-controller -e

and to disable

    $ /usr/share/als-controller/service/als-controller -d

The project, which seems to be Ubuntu-centric, does not yet include a systemd service file. I use the following (overly verbose) one:

    [Unit]
    Description=Ambient Light Sensor Daemon

    [Service]
    User=root
    Group=root
    PIDFile=/var/run/als-controller.pid
    ExecStart=/usr/share/als-controller/service/als-controller
    Restart=on-failure

    [Install]
    WantedBy=multi-user.target

##### Sample Script

The sample userspace script is installed as `/usr/share/als-controller/example/switch.sh`. The script is designed to be run by being bound to a key combination. It requires that `libnotify` be installed to have OSD confirmation of state change appear. If you wish to bind enabling/disabling to the same [Fn]+[a] combination as in Windows, the relevant keycode under X is 248. If you are using `xbindkeys`, add the following to your `.xbindkeysrc` file:

    # Ambient Light Sensor (ALS) Toggle [Fn a]
    "/usr/share/als-controller/example/switch.sh"
    m:0x0 + c:248

More information can be found in the project's README file.

## Solid state drive

If you are using a SSD, make sure to read Solid state drive.

## Graphics

To use the Intel graphics card, install the xf86-video-intel package and read Intel graphics. For hardware accelerated video read Hardware video acceleration.

## Touchpad

Instructions to activate the right button. (As an alternative you cant try This).

Multifinger taps work out of the box.

Tip: Multifinger taps: Two finger for middle click; three fingers for right click.

### Multitouch gestures

To enable multitouch gestures like those under Windows, one can install touchegg. Using `touchegg` will require disabling some input-handling that is done by the synaptics input driver. Edit your `/etc/X11/xorg.conf.d/10-synaptics.conf`

    Section "InputClass"
            Identifier "touchpad catchall"
            Driver "synaptics"
            MatchIsTouchpad "on"
            MatchDevicePath "/dev/input/event*"
            Option "TapButton1" "1"
            Option "TapButton2" "0"
            Option "TapButton3" "0"
            Option "ClickFinger2" "0"
            Option "ClickFinger3" "0"
            Option "HorizTwoFingerScroll" "0"
            Option "VertTwoFingerScroll" "0"
            Option "ClickPad" "true"
            Option "EmulateMidButtonTime" "0"
            Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"
    EndSection

An alternative to X.org configuration files is to use the `synclient` command within the `.xinitrc` script. This method will limit changes to your desktop environment.

     synclient TapButton2=0 TapButton3=0 ClickFinger2=0 ClickFinger3=0 HorizTwoFingerScroll=0 VertTwoFingerScroll=0

`touchegg` will need to be autostarted for multitouch gestures to be activated. This can be done with `touchegg &` in your `.xinitrc`, or using the autostart/startup applications functionality of your desktop environment. `~/.config/touchegg/touchegg.conf` can then be configured as necessary.

### Multitouch gestures in GNOME

GNOME 3's gnome-shell does its own mouse-handling, which can interfere with synaptics and touchegg settings unless the appropriate plugin is disabled.

    $ gsettings set org.gnome.settings-daemon.plugins.mouse active false

Note that disabling this plugin will cause the current settings within the Mouse & Touchpad section of System Settings to be ignored.

### Disable Touchpad While Typing

One of the criticisms this laptop gets (see reviews at Amazon) is that the placement of the touchpad results in frequent touchpad brushing during typing. You should use whatever touchpad disabling method you prefer. See Touchpad Synaptics#Disable touchpad while typing.

## HDMI plugged at boot

There seems to be a problem whereby having an HDMI device plugged in at boot results in the screens being switched and also the laptop screen not coming on. To make this more bearable you can automate switching HDMI on with the following udev rule and script:

Add the following script as root:

    /usr/local/share/hdmi-plugged-startup

    #!/bin/sh
    export XAUTHORITY=/home/$USER/.Xauthority
    export DISPLAY=:0

    /usr/bin/xrandr -display :0 --output eDP1 --auto --output HDMI1 --auto --above eDP1

then make it executable.

Add the following udev rule:

    /etc/udev/rules.d/10-local.rules

    'ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/share/hdmi-plugged-startup"'

Suspending, unplugging the HDMI cable, and resuming is a way to enable the Zenbook's screen without rebooting if it was booted with the cable plugged in.

## Powersave management

To configure some power saving options and tools, see Power saving.

## Other Devices and Drivers

### MEI

If you know what you are doing and want to use the i7 MEI, you need the Intel Local Manageability Service. You can find it as intel-lmsAUR.

## Additional resources

- https://help.ubuntu.com/community/AsusZenbookPrime
- https://ubuntuforums.org/showthread.php?t=2005999
- Wikipedia:Zenbook#UX32.2C UX42 and UX52

Category:

- ASUS

Hidden categories:

- Pages or sections flagged with Template:Laptop style
- Pages or sections flagged with Template:Out of date