Gentoo on Asus Zenbook UX31
Hardware features
After the thermal death of my Mac Book Pro I had to buy a new laptop. I chose this Asus Ultrabook because its hardware is superior to the Mac Book Air, especially the higher screen resolution. My Zenbook is precisely a 2012 UX31E: dmidecode, lspci, lsusb, /proc/bus/input/devices
- Intel(R) Core(TM) i5-2557M CPU @ 1.70GHz (Sandybrige, dual core with hyper threading)
- 4096 MB DDR3 RAM
- Intel Series 6/C200
- 128 GB SanDisk SSD U100
- integrated Intel Sandybridge graphics controller (shared memory)
- 13.3" 1600x900 glare LCD screen
- ASIX 100Mbit Ethernet over USB adapter (included)
- Atheros 802.11a/b/g/n WiFi
- 1 USB 2.0, 1 USB 3.0 port
- micro HDMI port
- mini VGA port, adapter to standard VGA included
- IMC Bluetooth 4.0
- Realtek SD/MMC card reader
- Webcam Suyin 640x480, stereo microphone
- Intel HDA Realtek/PCH HDMI sound, B&O speakers
- Keyboard, Elantec Touchpad
Hardware issues
I really like its design. It's small, light and the metal gives it a high quality look. But don't let the look fool you.
Though the design of the Zenbook is really neat, it has serious hardware quality issues. I had to send in my model four times for repairs now, within the first 6 months after I bought it. It's a bit much, isn't it.
First the LCD panel died. It just wouldn't display anything anymore. They replaced the panel and the main board.
It happened to me, and there are numerous reports around the Inter Webs as well: some UX31 can enter a sort of dead state. They just won't boot. The symptoms can vary: it powers up and immediately turns off again, it powers up but screen stays black with only the power, caps lock and wifi lights on or it doesn't power up at all. Symptoms can change depending on remaining battery life and depending on whether power is plugged in or not.
You need to drain the battery completely in order to make it boot up again. You can connect an USB device to the powered USB port to help draining the battery (given there actually is power on the USB port). It takes hours. But after that it will be back to life, until it happens again.
I guess this is due to a bad component (capacitor, Zener diod) on the main board somewhere. Probably a batch of flaky components made it into the production chain, given there are so many people with this problem. In any case you should send your Zenbook in for repair (RMA) if it exhibits this problem, before the warranty runs out.
Once it came back from repair with broken RAM chips. I noticed when gcc suddenly died with memory corruption errors. Running memtest86+ revealed the bad chips.
Finally the charger connector was loose. It would heat up so much during charging that eventually the plastic inside the metal connector melted and deformed.
And that is just the bad components that actually broke during normal operations. The Zenbook however has issues with its hardware components even when they are not broken:
The LCD screen is just horrible: it has massive backlight bleeding which becomes very apparent under even small angles. It's near to impossible to look at the monitor and not have bleeding or false colors. Image editing: impossible!
The keyboard is bad: keys don't work if you don't hit them dead center. It's very annyoing when you type a lot.
Booting
Hold down F2 during boot to enter the BIOS. BIOS supports firmware upgrade directly from USB stick - no OS necessary. Note however, that you can not downgrade itself, only upgrade! So this is a one-way road! Do not upgrade unless you want to address a specific issue. Put the System Rescue CD on an USB stick and boot from it (through BIOS). The Gentoo minimal CD won't work because of missing wireless drivers. Perform a Gentoo installation as usual.
Partitioning, Filesystem
The choice of filesystem was easy: ext4 is still the fastest in most cases
I erased all existing partitions and created a single partition with an ext4 filesystem.
No swap, there is plenty of RAM. Make sure to mount ext4 with the discard
option
as we are running on an SSD:
/dev/sda1 / ext4 noatime,discard
Kernel
I got a 3.7 kernel out of git. Here is my kernel config for x86_64.
I got a 3.6 kernel out of git. Here is my kernel config for x86_64.
I got a 3.5 kernel out of git. Here is my kernel config for x86_64.
I got a 3.4 kernel out of git. Here is my kernel config for x86_64. It produces the this dmesg output.
Grub is used as a boot manager. /boot/grub/grub.conf:
default 0 timeout 3 title Linux 3.6 root (hd0,0) kernel /boot/linux-3.6.1 libahci.ignore_sss=1 root=/dev/sda1 rootfstype=ext4 video=1600x900 pcie_aspm=force quiet
Portage
/etc/make.conf
:
CFLAGS="-march=native -O2 -pipe" USE="aio autoipd avahi bacula-nodir cleartype corefonts ddate fat fontconfig g3dvl gimp git gudev hpn icu idn jce kvm laptop lm_sensors logrotate mdnsresponder-compat mmx msn netlink network-cron networkmanager ntp raw smp sna sse sse2 sse4_1 ssse3 timezone urandom v4l vaapi wifi xa xvmc zeroconf zip -R -acl -bluray -cdda -cddb -cdr -cracklib -dvd -eds -gdbm -gles -joystick -kerberos -ldap -nowlistening -oss -ppp -pulseaudio -semantic-desktop" INPUT_DEVICES="evdev mouse keyboard synaptics" VIDEO_CARDS="intel i965"You need to keyword more recent Intel graphics drivers. The stable ones as of this writing are too old and cause artifacts in KDE (popup menus not drawn properly, background image not drawn).
/etc/portage/package.keywords
:
=x11-drivers/xf86-video-intel-2.19.0 =x11-libs/libdrm-2.4.33
Useful software
The following ebuild are useful on this device:
- app-admin/mcelog: logs Machine Check Exceptions
- kde-misc/networkmanagement: KDE NetworkManager integration
- net-wireless/iw: cfg8022 (WiFi)
- net-wireless/wpa_supplicant: WiFi
- net-wireless/rfkill: to control WiFi/Bluetooth RF state
- sys-apps/microcode-ctl: update CPU ucode
- sys-kernel/linux-firmware: all firmware
- sys-power/powertop: power management
RF Kill
To put the RF Kill switch (Fn-F2) into a consistent state at boot, include the following init script:
/etc/init.d/rfkill
#!/sbin/runscript depend() { after coldplug before net bluetooth } start() { ebegin "Unblocking RF" rfkill unblock all eend $? } stop() { return 0 }
Xorg
Xorg starts up perfectly without any configuration. However, there are things to improve by
putting config files in /etc/X11/xorg.conf.d
Fonts
Tell Xorg about your installed fonts with /etc/X11/xorg.conf.d/00-fonts.conf. Without that Google Earth for instance will not display any fonts.
Touchpad
The Elantech touchpad works as a mouse out of the box. That's bad because you can't click and
drag. You need to keyword at least xf86-input-synaptics-1.5.0
to use it with the synaptics
driver, and CONFIG_MOUSE_PS2_ELANTECH in your kernel config. Configure the touchpad via xinput at runtime
or in /etc/X11/xorg.conf.d/10-touchpad.conf.
Suspend
According to some Ubuntu guys you need to switch off USB during suspend or you risk corruption of your memory controller (which needs disassembly of the Zenbook to resolve!). Fixed as of kernel 3.2.17, and an even better fix is in 3.4.5 and 3.5-rc7. For earlier kernels include this script into/etc/pm/sleep.d
:
EHCI_BUSES="0000:00:1a.0 0000:00:1d.0" case "${1}" in hibernate|suspend) for bus in ${EHCI_BUSES}; do echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/unbind done ;; resume|thaw) for bus in ${EHCI_BUSES}; do echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/bind done ;; esacMy zenbook doesn't actually have the 0000:00:1a.0 bus, but it doesn't hurt to keep it.
Save some power
The enable-devpm script implements the power savings. Put it
in your startup scripts like /etc/local.d/10-devpm.start
. The much suggested pcie_aspm=force
kernel option does not make a big difference. You can safely leave it away. By default the GPU uses "only"
the C6 sleep level. If you want to enable C6p and C6pp, then add 'i915.i915_enable_rc6=7' to your kernel
command line, but this may exhibit random shutdowns. As Chris Wilson has put it: "only rc6=1 is supported
by your hw, and even that is a bit broken on some machines"
My Zenbook uses
about 7 W when idle, and 26 W when at 100% CPU (compiling). Use the latest (keyword!) powertop
to inspect your power consumption.