The Asus Zenbook UX31E/UX21E works well with Ubuntu 11.10 Oneiric Ocelot, but does need some post installation configuration.
You can check what is your model with the command:
sudo dmidecode -s system-product-name
For further discusion and to seek help, see Ubuntu and the Asus Zenbook thread in the Ubuntu Forums.
Asus Zenbook and Ubuntu 11.10
This page aims to describe the steps needed to fully enable all features of the Asus Zenbook.
Overview
Anything not mentioned here should work out of the box.
Feature |
Support status |
(works out-of-the-box)
(works, with remarks)
(needs manual install)
(won't currently work (completely))
(not yet documented)
BIOS Update
You can download the newest BIOS here:
UX21E: http://support.asus.com/download/download_item_mkt.aspx?model=UX21E
UX31E: http://support.asus.com/download/download_item_mkt.aspx?model=UX31E
You can update the BIOS from the BIOS menu itself, without any additional utilities.
Copy the BIOS file onto a memory-stick. Reboot and press the esc button to enter the BIOS menu. Then select "Enter Setup". From the Advanced tab, choose the Easy Flash option and then select the BIOS file to update.
Basic Installation Instructions
LCD Panel
Current Xorg-server overwrites, by default, display dpi setting to 96dpi. UX31E have ~138dpi. It make font and every thing looks really small. You can try use this option to overwrite defaults.
xrandr --dpi 138/eDP1
Also this two bug reports should get more attention: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/589485 https://bugs.freedesktop.org/show_bug.cgi?id=41115
Suspend, Hibernate, Shut-down and Reboot
The kernel USB 3.0 (and sometimes 2.0) modules needs to be unloaded before suspending, and in kernels prior to 3.1 X also needs to disable/enable DPMS to get the screen back on resume. Save the following script as /etc/pm/sleep.d/20_zenbook (and make it executable):
For kernel 3.0:
EHCI_BUSES="0000:00:1a.0 0000:00:1d.0" XHCI_BUSES="0000:03:00.0" case "${1}" in hibernate|suspend) # Switch USB buses off for bus in $EHCI_BUSES; do echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/unbind done for bus in $XHCI_BUSES; do echo -n $bus > /sys/bus/pci/drivers/xhci_hcd/unbind done ;; resume|thaw) # Switch USB buses back on for bus in $EHCI_BUSES; do echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/bind done for bus in $XHCI_BUSES; do echo -n $bus > /sys/bus/pci/drivers/xhci_hcd/bind done # Hacky workaround to fix display after suspend, not needed for kernels 3.1 or newer export DISPLAY=":0" export XAUTHORITY=`ps aux | grep X | grep auth | awk '{sub( /^.*-auth / ,""); sub( / .*/,"");print }'` xset dpms force off xset dpms force on ;; esac
For kernel 3.1 or newer:
EHCI_BUSES="0000:00:1a.0 0000:00:1d.0" case "${1}" in hibernate|suspend) # Switch USB buses off for bus in $EHCI_BUSES; do echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/unbind done ;; resume|thaw) # Switch USB buses back on for bus in $EHCI_BUSES; do echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/bind done ;; esac
|
Keyboard functions (Brightness,volume,...)
Toggle internal/external screen: ?
Volume up, down, mute: Works.
Brightness up, down: Works.
Switch screen on/off: Works.
Sleep: Works.
Switch Network connection on/off: Works.
Context menu key: Works.
Fn + C (Launch1): Works, but not bound by default.
Fn + Space (Launch6): Works, but not bound by default.
Fn + V (Web Cam): Works, but not bound by default.
Example binding:
sudo apt-get install cheese gconftool-2 -s /desktop/gnome/keybindings/custom0/name -t string 'Web Cam' gconftool-2 -s /desktop/gnome/keybindings/custom0/binding -t string 'XF86WebCam' gconftool-2 -s /desktop/gnome/keybindings/custom0/action -t string 'cheese'
Touchpad
The Zenbook comes with one of two types of touchpads: Sentelic or Elantech. To determine which touchpad you have use this command:
cat /proc/bus/input/devices | grep -i pad
Sentelic Touchpad
Works out of the box. Currently multi-touch doesn't work, but see Bugs & Issues below for current status. To disable tap-to-click on boot, add the following to /etc/rc.local (and to the resume section of the suspend/resume script above, if necessary):
echo -n 0x90 0x80 > /sys/devices/platform/i8042/serio4/setreg echo -n c > /sys/devices/platform/i8042/serio4/flags
Elantech Touchpad
Works out of the box. Multi-touch starts working with kernel 3.2. Changes made are the whole pad is the left button, there is thus no right button*. Click and drag is done by clicking anywhere on the pad and moving the finger. Right mouse is available as two-finger tap. Middle button is available as three finger tap.
* A revision to the synaptics driver restores click-pad functionality. See here for the Ubuntu package and instructions.
With the 3.2 kernel, there is a very simple solution to the very low sensitivity problem. You can just use synclient to setup the sensitivity you want (and many other things).
Here is an example script from Aurélien Jacobs (which you can add e.g. to /etc/rc.local):
# higher sensitivity synclient FingerLow=9 FingerHigh=12 # faster movements synclient MinSpeed=1.5 MaxSpeed=3.0 AccelFactor=0.12 # 2 fingers scroll synclient VertTwoFingerScroll=1 HorizTwoFingerScroll=1 # faster coasting synclient CoastingSpeed=10 CoastingFriction=25 # enable tap to click (2 fingers for middle click, 3 fingers for right click) synclient TapButton1=1 TapButton2=3 TapButton3=2 # faster tap and double tap synclient FastTaps=1 MaxDoubleTapTime=100 # continue dragging movement when reaching the edge of the touchpad synclient EdgeMotionMinZ=30 EdgeMotionMaxZ=40 EdgeMotionMinSpeed=100 EdgeMotionMaxSpeed=400
Only the first line is required to increase sensitivity. Other lines make the touchpad much more useful, but may not fit your needs. It is highly recommend to spend some time playing with synclient to find a setup that you really like (see 'man synaptics').
For kernel 3.3-rc5 on Ubuntu 12.04 is Elantech drivers is working very good.
Wireless
Many users report that this works out of the box. Most users have reported bad signal strengths, or random disconnections with low signal levels.
For some, frequent disconnections are shown in dmesg but are not visibly indicated. If you are getting poor wireless performance run dmesg to check or run tail -f /var/log/kern.log.
Possible workaround: run sudo killall wpa_supplicant after booting (see here)
Possible workaround: patch network-manager (see here)
Possible workaround: set the BSSID for your single access-point network (see here)
Possible workaround: remove network-manager and install wicd. You'll have to manually enable the tray icons in Unity (see here)
See this bug report also, and mark yourself as effected.
USB Ethernet
Works out of the box from kernel 3.2-rc7 and later thanks to Aurélien Jacobs and commit http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=e8303a3b2196272c3eb994d0fd1a189a958a2bdd
For earlier kernels, or if you still experience instability, download the asix-driver from http://www.asix.com.tw/FrootAttach/driver/AX88772B_772A_760_772_178_LINUX_Driver_v4.2.0_Source.zip
Once downloaded, the source needs to be compiled: First unzip the file.
Then download essentials:
sudo apt-get install build-essential linux-headers-`uname -r`
Next, go into the unzipped directory and compile the source as follows:
cd AX88772B_772A_760_772_178_LINUX_Driver_v4.2.0_Source make
Install the just compiled module:
sudo make install
Finally load the module:
sudo modprobe asix
That's it. You should be able to connect using a wired connection now.
For 3.2 kernels, the following patch has to be applied:
--- a/asix.c 2011-03-10 13:46:05.000000000 +0100 +++ b/asix.c 2011-11-26 09:39:48.000000000 +0100 @@ -829,7 +829,7 @@ .ndo_do_ioctl = ax8817x_ioctl, .ndo_set_mac_address = ax8817x_set_mac_addr, .ndo_validate_addr = eth_validate_addr, - .ndo_set_multicast_list = ax8817x_set_multicast, + .ndo_set_rx_mode = ax8817x_set_multicast, }; #endif @@ -1522,7 +1522,7 @@ .ndo_get_stats = axusbnet_get_stats, .ndo_set_mac_address = ax8817x_set_mac_addr, .ndo_validate_addr = eth_validate_addr, - .ndo_set_multicast_list = ax88772b_set_multicast, + .ndo_set_rx_mode = ax88772b_set_multicast, }; #endif
Bluetooth
The bluetooth module is the Atheros AR3012, which requires loading a firmware before it can be used. For now, patching the kernel is required to recognize this module as AR3012 one.
The patch, and it's upstream progress, can be seen here: http://thread.gmane.org/gmane.linux.bluez.kernel/18801
More info: http://ubuntuforums.org/showthread.php?t=1867447&highlight=zenbook
Please report this bug to Ubuntu kernel Team, In order to include this patch in ubuntu precise 12.04. http://bugs.launchpad.net/ubuntu/+source/linux/+bug/916319
Sound
Works perfectly out of the box, both internal and through HDMI.
Microphone
Works perfectly out of the box.
External Monitor
HDMI works out of the box (with audio). If you wish to use the laptop display at the same time as an external display, you must plug in the HDMI cable after X has started (also after resuming from suspend).
VGA works out of the box. But the internal screen has only one resolution setting (1600x900). This can be changed for the current session using e.g.
xrandr --newmode "1280x900_60.00" 95.00 1280 1360 1488 1696 900 903 913 934 -hsync +vsync xrandr --addmode eDP1 1280x900_60.00 xrandr --newmode "1024x768_60.00" 63.50 1024 1072 1176 1328 768 771 775 798 -hsync +vsync xrandr --addmode eDP1 1024x768_60.00 xrandr --newmode "1024x576_60.00" 46.50 1024 1064 1160 1296 576 579 584 599 -hsync +vsync xrandr --addmode eDP1 1024x576_60.00 xrandr --newmode "800x600_60.00" 38.25 800 832 912 1024 600 603 607 624 -hsync +vsync xrandr --addmode eDP1 800x600_60.00
You can copy these commands into a file, make it executable, and run it when you need to connect an external monitor:
#In your home dir: nano xprofile #Copy the commands into the file (shift+ctrl+V), and save (Ctrl+X) chmod 0766 xprofile ./xprofile
This could be automated even more by producing an xorg.conf-file.
Ref.: https://wiki.ubuntu.com/X/Config/Resolution
SD card slot
Works perfectly out of the box.
Fan Control
Works perfectly out of the box.
Sensors (temps & fans)
Works by default however to (optionally) read the sensor data requires the package lm-sensors which is installed by:
sudo aptitude install lm-sensors sudo tee -a /etc/modules <<-EOF coretemp EOF
Power Optimizations
Kernel parameters
To get the most power efficient system with longer battery life and cooler CPU temperatures, the configuration recommended so far is to disable VT-d in the BIOS and boot kernel 3.2-rc6 or newer with the boot options:
i915.i915_enable_rc6=1 i915.semaphores=1 pcie_aspm=force
RC6 and semaphores are disabled by default in final kernel 3.2, so they should be forced on. FBC should not be enabled and has not shown any improvements. LVDS downclock does not have any effect on the ZenBook since it's eDP.
To disable VT-d, reboot your Zenbook, holding down the Esc-button while it starts up. Locate the VT-d setting in the BIOS menus and toggle it to disabled.
Occasional shutdowns still occur but the cause it yet unknown - it might be the ath9k driver or something related to RC6 or ASPM.
Note that this configuration trades off a bit of stability (unexpected shutdowns) for power efficiency. Without these RC6 settings, you will have less battery life etc., but the system will be perfectly stable (or so it seems).
possible patch: modifying the DSDT table seems to fully stabilize the system with RC6 active, acording to http://files.benesovi.eu/ux31e/
Power saving script
To apply all recommendations by powertop when on battery, put the following in a script (the name does not matter) in /etc/pm/power.d:
# Powertop tunables case $1 in true) ## VM writeback timeout echo 1500 > /proc/sys/vm/dirty_writeback_centisecs ## Autosuspend for USB devices ### USB2.0-CRW (Generic) echo auto > /sys/bus/usb/devices/1-1.7/power/level ### Bluetooth USB Host Controller (Atheros Communications) echo auto > /sys/bus/usb/devices/1-1.8/power/level ## Runtime PM for PCI devices ### Atheros Communications Inc. AR9485 Wireless Network Adapter echo auto > /sys/bus/pci/devices/0000:02:00.0/power/control ### Fresco Logic Device 1009 #echo auto > /sys/bus/pci/devices/0000:03:00.0/power/control # Currently this turns the USB3 port off, awaiting response ### Intel Corporation 6 Series/C200 Series Chipset Family ### 6 port SATA AHCI Controller echo auto > /sys/bus/pci/devices/0000:00:1f.2/power/control ### Intel Corporation 6 Series/C200 Series Chipset Family ### USB Enhanced Host Controller #1 # echo auto > /sys/bus/pci/devices/0000:00:1d.0/power/control # Causes machine to freeze on shutdown, should work with kernels 3.0.11, 3.1.3 or newer ### Intel Corporation 2nd Generation Core Processor Family ### DRAM Controller echo auto > /sys/bus/pci/devices/0000:00:00.0/power/control ### Intel Corporation 6 Series/C200 Series Chipset Family ### MEI Controller #1 echo auto > /sys/bus/pci/devices/0000:00:16.0/power/control ### Intel Corporation 6 Series/C200 Series Chipset Family ### High Definition Audio Controller echo auto > /sys/bus/pci/devices/0000:00:1b.0/power/control ### Intel Corporation 6 Series/C200 Series Chipset Family ### PCI Express Root Port 1 echo auto > /sys/bus/pci/devices/0000:00:1c.0/power/control ### Intel Corporation 6 Series/C200 Series Chipset Family ### PCI Express Root Port 2 echo auto > /sys/bus/pci/devices/0000:00:1c.1/power/control ### Intel Corporation 6 Series/C200 Series Chipset Family ### PCI Express Root Port 4 echo auto > /sys/bus/pci/devices/0000:00:1c.3/power/control ### Intel Corporation 2nd Generation Core Processor Family ### Integrated Graphics Controller echo auto > /sys/bus/pci/devices/0000:00:02.0/power/control ## SATA link power management echo min_power > /sys/class/scsi_host/host0/link_power_management_policy # 50% screen brightness on battery echo 5 > /sys/bus/pci/devices/0000:00:02.0/backlight/acpi_video0/brightness # Set powersave CPU governor for i in 0 1 2 3; do echo powersave > /sys/devices/system/cpu/cpu${i}/cpufreq/scaling_governor done ;; false) # 90% screen brightness on AC echo 9 > /sys/bus/pci/devices/0000:00:02.0/backlight/acpi_video0/brightness # Set ondemand CPU governor for i in 0 1 2 3; do echo ondemand > /sys/devices/system/cpu/cpu${i}/cpufreq/scaling_governor done ;; esac exit 0
How to upgrade kernel
If you want to upgrade to the newest kernel, which improves power use, wlan and a number of other issues which are solved from time to time, do the following:
1. Set kernel options
Edit the kernel options in grub (using nano, vi, gedit or any other editor):
sudo nano /etc/default/grub
And change the line starting with GRUB_CMDLINE_LINUX_DEFAULT to:
GRUB_CMDLINE_LINUX_DEFAULT="pcie_aspm=force quiet splash"
save and run update-grub:
update-grub
2. Download the kernel
Browse to http://kernel.ubuntu.com/~kernel-ppa/mainline/ to find the latest kernel (e.g. 'v3.2.2-precise', which is kernel version 3.2.2 and works also on Oneiric), and from that folder download 3 files:
linux-headers-<version>-<other stuff>_amd64.deb linux-headers-<version>-<other stuff>_all.deb linux-image-<version>-<other stuff>_amd64.deb
3. Install the kernel
Open a terminal and change to the directory where you downloaded these files, and run
sudo dpkg -i linux-*.deb
(if you have older linux-*.deb files laying around in that folder, you should specify the new files explicitly instead of using wildcards). Reboot to run the new kernel. You can verify the kernel version from the grub menu selection, or by running
uname -a
How to recompile kernel for Ubuntu 12.04 and ux31e
1.Install some tools to compile: Code:
sudo su - apt-get install fakeroot build-essential apt-get install crash kexec-tools makedumpfile kernel-wedge apt-get build-dep linux-image-$(uname -r) apt-get install git libncurses5 libncurses5-dev libnewt-dev exit
2. Create some directory somewhere where you'd like to store the source files you'll want to compile, I'm calling it "kernel". Cd into that directory and get the kernel sources via git. Code:
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-oneiric.git source
3. Download kernel last source from http://www.kernel.org/ and uncompress it.
http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.3-rc5.tar.bz2
4. Donwload felsi's bluetooth patch
wget http://fenski.pl/zenbook/bluetooth.patch
and apply patch on 3.3-rc5 folder.
patch -p1 < ../bluetooth.patch
5. Now you'll actually have to compile the source. This takes commands: Code:
make menuconfig fakeroot make-kpkg clean fakeroot make-kpkg --jobs=4 --initrd --append-to-version=-ux31custom --revision=`date +'%Y%m%d%H%M'` kernel_image kernel_headers modules_image
6. the compiled kernel packages will be in the parent folder. So make a "cd .." and install: Code:
sudo dpkg -i linux-*.deb
7. Just for safety, update grub Code:
sudo update-grub
Bugs and issues
Intel RC6 causes sudden shutdowns
Kernel developers are aware and working on an issue with DMAR+RC6.
However, Zenbboks experience sudden shutdowns with RC6 on and Intel IOMMU off.
The most stable configuration is to enable semaphores and turn off VTd in BIOS, see above.
However, this needs to be properly fixed in the kernel once RC6 gets enabled by default.
Status: Not an issue according to kernel developer feedback.
USB 3 / XHCI runtime PM disables port
In above power saving script, the "auto" setting for the Fresco controller causes the USB3-port on the right to disable, although cellphones etc still can be charged with it.
Status: Awaiting kernel developer feedback.
USB 2 / EHCI module needs to be unbound on suspend
The module needs to be unbound or the machine won't suspend, bound on resume.
Status: Awaiting kernel developer feedback.
Sentelic touchpad synaptics/multitouch
Reuben Bond has begun work on a synaptics driver for the Sentelic touchpad on https://github.com/ReubenBond/sentelic-multitouch but is awaiting further documentation from Sentelic regarding the multi touch.
Also, Oskari Saarenmaa has managed to get two finger scrolling working in his git repo at https://github.com/saaros/sentelic/, which Chris D aims to refine further in his fork at https://github.com/thaelim/sentelic.
Status: Work in progress.
Kernel 3.2 KMS
Commit dc22ee6fc18ce0f15424e753e8473c306ece95c1 in 3.2-rc1 causes the KMS to fail on the Zenbook graphics. 3.2-rc1 to 3.2-rc5 will therefore not boot without supplying kernel parameter i915.modeset=0, in which mode hardware acceleration is disabled.
Status: Fixed in 3.2-rc6 with commit ed4a51842a9d9e618d4f4c31349b15b974dba5df
EHCI power savings preventing shutdown
Status: Solved in kernels 3.0.11, 3.1.3 or newer.
Machine check events (MCE) errors reported in kernel log
power limit notification MCE errors have been confirmed to be harmless (see here
Status: Specific issue noted above may be safely ignored.
Machine won't boot
As of 21-Feb-2012 Grub2 seems to have problems booting Asus machines using UEFI, so use BIOS.