Revision 74 as of 2012-07-04 13:06:20

Clear message

Introduction

How to get your ASUS U36SD running Ubuntu GNU/Linux.

Compatibility

Function

11.10

11.04

12.04

Audio (out-, in-ports, speaker, microphone)

YES

YES

YES

Graphics (without desktop effects)

YES

YES

YES

Graphics (with desktop effects)

WIP

WIP

WIP

High-end Graphics card

WIP

WIP

WIP

VGA port

YES

YES

YES

HDMI

YES

YES

N/A

USB 2.0

YES

YES

YES

USB 3.0

YES

WIP

N/A

Bluetooth

YES

WIP

N/A

Card reader

YES

YES

YES

LCD keys (Fn-F5,Fn-F6,Fn-F7)

YES

YES

YES

Display output switch (Fn-F8)

YES

YES

YES

Touchpad toggle (Fn-F9)

NO

NO

YES

Multimedia keys

WIP

WIP

YES

Suspend / Hibernate

WIP

WIP

YES *[1]

Card reader

YES

YES

YES

Multi-touch touchpad

YES

YES

YES

Full battery time

WIP

WIP

WIP

Webcam issue

WIP

WIP

WIP

Fingerprint reader#

NO

NO

N/A

  • YES - Works out of the box
  • WIP - Works or works partly with some tweaking
  • NO - No known fix (so far)
  • N\A - Not tested
  • # just some U36SD models

*[1] Works out of the box from 3.2.0-25-generic. Suspend-fix is still needed for older kernels (see below for fix)

Tweaking

Desktop effects

Create a new file /etc/modprobe.d/blacklist-nvidia.conf with the following content. (You need super user privileges. See here for help.

  • blacklist nouveau
    blacklist nvidia

Remove nvidia drivers (otherwise it's libGL.so will used by default) by running the following command

sudo apt-get purge nvidia-current

High end graphics card (Nvidia)

Since the laptop uses the so called Optimus technology, support for the high end graphics card is a bit limited. However, it is still possible to use it, by offloading a certain application (such as a game) to the nvidia card and then copying the content onto the Intel graphics buffer using VirtualGL.

One simple way of doing this is by installing Bumblebee. Simply call the following commands to install:

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia
sudo usermod -a -G bumblebee $USER

Now log out, and then log in again.

To run programs making them use the nVidia card you need to use the command "optirun". For example to run "openarena" open a terminal and write "optirun openarena".

Suspend

Suspend doesn’t work out of the box because of a problem with the USB buses. To fix the problems do the following:

Create a new file /etc/pm/sleep.d/20_custom-asus-u36sd with the following content (you need to have administrative privileges to create it, see here for help.):

  • BUSES="0000:00:1a.0 0000:00:1d.0"
    XHCIBUSES="0000:04:00.0"
    
    case "${1}" in
        hibernate|suspend)
            # Switch USB buses off
            for bus in $BUSES; do
                echo -n $bus | tee /sys/bus/pci/drivers/ehci_hcd/unbind
            done
            for bus in $XHCIBUSES; do
                echo -n $bus | tee /sys/bus/pci/drivers/xhci_hcd/unbind
            done
            ;;
        resume|thaw)
            # Switch USB buses back on
            for bus in $BUSES; do
                echo -n $bus | tee /sys/bus/pci/drivers/ehci_hcd/bind
            done
            for bus in $XHCIBUSES; do
                echo -n $bus | tee /sys/bus/pci/drivers/xhci_hcd/bind
            done
            ;;
    esac

Make it executable:

sudo chmod +x /etc/pm/sleep.d/20_custom-asus-u36sd

This will make the suspending the computer work. Resume, however, will only work if you wait to trigger it around half a minute after suspending was completed. If you resume too early, the computer will do a hard reboot instead.

Fn-keys

Download and install asus-nb-wmi driver (included in 2.6.39, but since Natty runs 2.6.38 need to build it ourselves):

sudo apt-get install git build-essential
git clone git://git.iksaif.net/acpi4asus-dkms.git
cd acpi4asus-dkms
make
sudo make install
sudo modprobe asus-nb-wmi

Bluetooth

The ath3k module in Ubuntu 11.04 doesn't manage to detect the Bluetooth device because it doesn't contain the identification numbers, so one need specify it manually. To do so do the following.

Get a super user shell.

sudo -s -H

Enter the following commands. Ignore the errors from rmmod if any.

service bluetooth stop
rmmod btusb
rmmod ath3k
modprobe -a ath3k
echo "13d3 3304" > /sys/bus/usb/drivers/ath3k/new_id
modprobe btusb
service bluetooth start
exit

If it still doesn't work, try running the following command.

sudo hciconfig hci0 up

USB 3.0

(just for 11.04) Edit the startup options:

gksu gedit /etc/default/grub

Find the line:

  • GRUB_CMDLINE_LINUX_DEFAULT

and add the following within the quotation marks, being sure to separate it with a space from any other entries:

  • pci=nomsi,noaer

at last run

sudo update-grub

and on the next reboot the USB 3.0 port should work.

Battery time

There are two easy things that can double your battery time.

Intel integrated graphics card power management

Open the file /etc/default/grub with super user privileges (See here for instructions).

Find this line:

  • GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

and change it into this:

  • GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.i915_enable_rc6=1"

then run the following command in a terminal:

sudo update-grub

High end graphics card (nvidia) power management

By default, the high end graphics card will be activated but not in use. You can decrease the battery usage by disabling it. Either you follow the instructions on how to enable the high end graphics card which will do this for you or you manually configure your system to use acpi_call directly to disable it.

Webcam issue

to get the camera to not be upside-down:

sudo add-apt-repository ppa:libv4l
sudo apt-get update && sudo apt-get install libv4l-0

On Ubuntu 11.10 you must install the 32 bits version of libc4l-0 for skype as it is available only in 32 bits in the packages repository:

sudo add-apt-repository ppa:libv4l
sudo apt-get update && sudo apt-get install libv4l-0:i386

then run your application with "LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so" in front of it. eg to run skype:

LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so skype

Other issues

Splash

If you want more consistently looking (but possibly slower) boot, try the following.

Create a new file /etc/initramfs-tools/conf.d/splash with the following content. You need super user privileges to create it. See here for help.

FRAMEBUFFER=y

Then run sudo update-initramfs -u in a terminal.

Disable touchpad while typing

The default version of xserver-xorg-input-synaptics does not include the functionality needed for automatic disabling of the touchpad while typing. If this is something you would like to have, you can follow the instructions below (taken from here).

mkdir tmpbuild
cd tmpbuild
wget http://david.hardeman.nu/synaptics-suse-patches.tar.bz2
apt-get source xserver-xorg-input-synaptics
cd xserver-xorg-input-synaptics-<version>
cd debian/patches
tar xfvj ../../../synaptics-suse-patches.tar.bz2
ls -1 2*.patch >> series
cd ../..
sudo apt-get build-dep xserver-xorg-input-synaptics
dpkg-buildpackage -us -uc -rfakeroot
sudo dpkg -i ../xserver-xorg-input-synaptics_<version>_<arch>.deb

Change <version> and <arch> depending on the current version available and what architecture you are running on.

After you restarted X the option "Mouse Preferences - Touchpad - Disable touchpad while typing" should work.

Hard Drive Power Management

When running on battery, the default hard drive power saving setting causes the drive heads to continuously park and then ramp up again. This results in a quiet "clicking" sound approximately every five seconds. You can adjust this setting by using hdparm to disable power management or to set it to the least aggressive setting (in the latter case, it will still park the heads though far less often). To do so, open a terminal and type:

sudo gedit /etc/hdparm.conf

Add the following lines (Note: use 255 to disable or 254 to set to the least aggressive setting):

/dev/sda {
    apm = 254
    apm_battery = 254
}

For this to apply after resuming from suspend:

sudo gedit /etc/pm/sleep.d/51_hdparm-settings

Enter this in the empty text file:

case $1 in
    hibernate)
        echo "A hook to restore hdparm value on resume"
        ;;
    suspend)
        echo "A hook to restore hdparm settings at resume."
        ;;
    thaw)
        hdparm -B 254 /dev/sda
        ;;
    resume)
        hdparm -B 254 /dev/sda
        ;;
    *)  echo "somebody is calling me totally wrong."
        ;;
esac

Save and quit. Make it executable:

sudo chmod +x /etc/pm/sleep.d/51_hdparm-settings

Reboot to apply.

Tips

Creating a file where super user permissions are required

How to edit/create a file /etc/example_file.

Using graphical editor

gksu gedit /etc/example_file

Using a simple console based editor

sudo nano /etc/example_file

Reported minor issues

  • 'Jumpy' two-finger scroll

Links