Ubuntu and Debian GNU/Linux on the ASUS N10 series: N10J, N10Jb, N10Jc, N10JE, N10Jh, N10HV and N10E
originally by ALLurGroceries with major updates from james-

Last updated: Sun Dec 5 14:18:03 UTC 2010

Forum (post here for help and discussion):

Latest kernel:
Latest NVIDIA: 260.19.26

Getting Started Edit

Introduction Edit

BEFORE UPGRADING FROM UBUNTU JAUNTY TO KARMIC: boot using Intel graphics, remove /etc/X11/xorg.conf.nvidia and the detectgpu script.

BEFORE UPGRADING TO UBUNTU LUCID: boot using Intel graphics, remove /etc/X11/xorg.conf.nvidia and the detectgpu script (Ubuntu will try to install nvidia-common for you)

This guide covers installing Ubuntu or Debian GNU/Linux on all ASUS N10 models. The N10E does not have an NVIDIA card, so anything about NVIDIA can be ignored for N10E users. Some models, mostly eastern European, have 802.11b/g cards instead of 802.11n. The only other hardware differences are the model of GPU and CPU between the original models and the new N10Jh and N10Jb, which do not make any difference in terms of following this guide.

Ubuntu 9.10 can be installed with everything working out of the box. The only exception is HDMI audio which requires a patched version of ALSA. See the section below under NVIDIA Tweaks. If you have never installed Ubuntu before, see the documentation linked from the 'Installation Process' section below.

Debian is a bit more complicated. Wireless will require either a custom kernel or installing madwifi via module-assistant (see the appendix). Debian users will probably want to follow this guide from start to finish.

No matter your installation or setup, please read through the tweaks sections since they contain valuable information.

Dual Booting Edit

The GRUB boot manager that ships with Debian or Ubuntu will allow you to choose between operating systems. You can chkdsk and defrag your C: volume in Windows and then resize its partition from the Debian or Ubuntu installer to make room for Linux partitions. The GParted Live CD is also useful for resizing partitions.

Installation Media Edit

Ubuntu 10.04 (Lucid Lynx) 699MB
Ubuntu 9.10 (Karmic Koala) 690MB
Debian 5.0.4 (Lenny) 645MB
Debian 5.0.4 (Lenny) netinst** 180MB
Debian 5.0.4 (Lenny) businesscard** 40MB
Debian Testing (Squeeze) daily build netinst** ~167MB
Debian Testing (Squeeze) daily build businesscard** ~38MB
**Requires wired internet access during the installation process.

Any of these ISO images can be burned directly to a CD-R. Most CD burning software has an option to burn a disc image.

These ISOs can also be used to install from USB. The easiest way of accomplishing this is to download UNetbootin and use its Disk Image option.

There are more installation methods for Debian or Ubuntu.

Installation Process Edit

Power on and immediately press ESC a couple of times to trigger the 'BBS Popup' and select your boot device that contains the installation media. The installer boot screen should show up. At this point you will have a menu to choose from, you can just hit Enter (or Return) for the default option. If you are installing Debian you may want to choose the Graphical install option for a friendlier interface.

Use the manual partitioning option and resize your main Windows partition. Try to leave at least 32GB free: 30GB or more for mount point / (root) as type ext3, and exactly 2GB for swap. Those are the only two partitions you need for Linux.

For Debian or the Ubuntu Alternate installer only: During Task Selection, make sure 'Desktop environment' and 'Laptop' are selected.

Answer yes to installing GRUB to the MBR if you have the option.

That is all you should need to know to get through the installer. If you are unfamiliar with the process, please read the Debian installation guide and browse the Debian reference. For Ubuntu please see this quick summary.

First Boot Edit

Ubuntu should be fully functional (after installing NVIDIA drivers), with the exception of HDMI audio (as mentioned in the introduction above). See #HDMI_Audio_.5BNVIDIA.5D.

Upon the first boot into your Debian GNU/Linux system you may notice that the sound and/or wireless do not work.

There are two (mutually exclusive) quick fixes to get the sound working: Fix #1 or Fix #2.

If wireless doesn't work, the module can be painlessly added to the stock kernel (see #Building_MadWifi_for_the_Stock_Kernel), but this is not recommended. Following the section below to build a custom kernel will yield much better wireless performance and has other benefits too.

Kernel Upgrade Edit

Preparing the System Edit

The steps in this section (until you reach Building the kernel) only need to be done once, ever.

Debian users: I use sudo in this guide to run commands as the root user. Note: this can be a security risk and is not a necessary step. Run these commands as root to install and configure sudo. Replace your_username with the name of your regular user account:

apt-get update   
apt-get install sudo   
echo 'your_username  ALL=NOPASSWD: ALL' >> /etc/sudoers

You need a few basic software packages before proceeding. Depending on your distribution, some of these packages may already be installed.

sudo apt-get update   
sudo apt-get install build-essential git-core kernel-package libncurses5-dev fakeroot bzip2 wget zlib1g-dev

If you are running Debian Sid or Unstable, make sure to copy over the kernel installation scripts, otherwise an initrd will not be created when the new kernel package is installed:

sudo cp /usr/share/kernel-package/examples/etc/kernel/postinst.d/initramfs /etc/kernel/postinst.d/     
sudo cp /usr/share/kernel-package/examples/etc/kernel/postrm.d/initramfs /etc/kernel/postrm.d/

The kernel should be built as a regular user, not root. To facilitate this, we must add your regular user account to the src group. Replace your_username with your regular user account name below.

sudo adduser your_username src

Log out entirely (log out of Gnome/KDE/X) and log back in again with your regular user account. You will now have write permission on /usr/src.

Building the Kernel Edit

Get the new kernel source tarball and my config file:

cd /usr/src 
tar xjvf linux-
cd linux-
wget -O .config
make oldconfig

If you are prompted for options by 'make oldconfig' it is generally safe to just hold down the Enter (or Return) key to accept all defaults.

Note: No patches are needed for the 2.6.32 kernel. The webcam patch is no longer needed with libv4l-0 0.6.2-1 or later, so I have made a separate section for it: #Webcam. If you have trouble with HDMI audio, see #HDMI_Audio_.5BNVIDIA.5D.

To tweak the configuration further and add or remove modules, etc. (optional):

make menuconfig

For perfomance increase you can stop the window manager under gnome you can switch to tty(this will close your session,so save things you haven't saved)

Press ctrl+alt+f1, login, and run (for gnome):

sudo /etc/init.d/gdm stop

In ubuntu 10.04 if gdm doesn't stop you will have to run

sudo killall gdm-binary

For kde(kdm) and for xfce(xdm). This is optional but allows the kernel to be built in 120minutes instead of 248 minutes. You can restart the window manager with:

sudo /etc/init.d/gdm start

To compile the kernel run the following command. It may produce some errors at first -- don't worry unless it drops back to the shell prompt unexpectedly.

fakeroot make-kpkg --initrd kernel_image kernel_headers

Ubuntu: If you have the nvidia-common package installed, there is a problem with the postinst scripts, so move them out of the way before installing the new kernel:

sudo mv /etc/kernel/postinst.d/nvidia-common ~/nvidia-common       
sudo mv /etc/kernel/header_postinst.d/nvidia-common ~/nvidia-common.header

Install your new kernel and kernel headers:

cd /usr/src      
sudo dpkg -i linux-image-       
sudo dpkg -i linux-headers-

There is a current bug that the --initrd flag does not create an initrd, so we must create one manually:

cd /boot
sudo mkinitramfs -o /boot/initrd.img-
sudo update-grub

Ubuntu: Move the nvidia-common files back:

sudo mv ~/nvidia-common /etc/kernel/postinst.d/nvidia-common       
sudo mv ~/nvidia-common.header /etc/kernel/header_postinst.d/nvidia-common

Finally, reboot and select your new kernel from the boot menu.

sudo reboot

Graphics Drivers Edit

N10E users should skip this part and go directly to #Tweaks. This section explains how to switch between Intel and NVIDIA GPUs. Ubuntu users (since Lucid Lynx 10.04 LTS and later) should read Ubuntu 10.04 (Lucid Lynx) and later Graphics Drivers Installation section.

Note: I use ~ a few times here, which is shorthand for the current user's home directory, e.g. /home/username

A physical switch on the left side of the case next to the vent controls which GPU is used. Pushed back towards the rear is the 'Off' position which is for Intel; 'On' is for NVIDIA, which is switched forward.

The HDMI output cannot be used with Intel graphics since it is part of the NVIDIA subsystem.

There are two ways to install the NVIDIA drivers. The first is by installing a package provided by your distribution. The other way, which this guide uses, is to download the NVIDIA installer and run it manually. If you used the packaged method, it will prevent you from using the directions for switching between GPUs. The Intel card can still be used on 2D mode but it will not have 3D accelleration. If you want to switch between GPUs and have 3D support for both, please follow the section below on graphics drivers. It uses a startup script to detect which card is switched on.

Every time the kernel is upgraded, the NVIDIA drivers must be reinstalled. This is because they have kernel modules that are not present when installing a new kernel. If you use the startup script to switch GPUs, the intel files must be restored after running the NVIDIA installer. There is no way around this. Therefore it is recommended that the NVIDIA installer be kept in a safe location on your hard disk, and that a separate folder containing the Intel files is kept as a backup. This is explained thoroughly below.

Preparing the system Edit

These steps only need to be done once, ever.

Two xorg.conf files will be used (one for each GPU). First move the existing xorg.conf out of the way. Then get two files from my web server:

cd /etc/X11/   
sudo mv xorg.conf xorg.conf.old   
sudo wget    
sudo wget

Note: The file has been recently updated to use EXA due to a problem with UXA on Ubuntu. If you experience this problem please run the last command line above.

A startup script called detectgpu will handle detection of the card when the system starts. Get the startup script from my server:

sudo wget -O /etc/init.d/detectgpu    
sudo chmod +x /etc/init.d/detectgpu

This command will install the startup script (note the period at the end, it isn't a typo):

sudo update-rc.d detectgpu start 10 2 .

Installing the drivers Edit

ONLY if you are on a stock kernel (did not build a custom kernel), make sure to install the headers package for your kernel:

apt-get install linux-headers-`uname -r`

Get the latest NVIDIA installer and make it executable:

cd ~    
chmod +x

Download two packages so that a network connection is not needed later:

sudo apt-get -d install libgl1-mesa-glx xserver-xorg-core

Reboot with NVIDIA graphics switched on if you are using Intel graphics. Disregard any error messages if you are prompted.

Press Ctrl+Alt+F1 to get to tty1 and log in with your regular user account (not root). Make sure gdm isn't running:

sudo /etc/init.d/gdm stop

Also make sure all OpenGL applications are stopped, including compiz:

killall compiz

Purge nvidia-glx (it may not be installed but do this anyway to be sure):

sudo dpkg -P nvidia-glx

Uninstall the proprietary NVIDIA driver package if it is installed. It is safe to use the latest installer to uninstall a previous version.

sudo modprobe -r nvidia   
sudo ~/ --uninstall --ui=none

Make sure the Mesa 3D package is installed:

sudo apt-get install libgl1-mesa-glx

Reinstall two packages in case the NVIDIA installer previously removed their files:

sudo apt-get install --reinstall libgl1-mesa-glx xserver-xorg-core

Make copies of two files since the NVIDIA installer will remove them. Also, having nvidia-glx installed will hide these files, but we removed it above.

mkdir ~/intel   
cp /usr/lib/xorg/modules/extensions/ ~/intel/   
cp /usr/lib/ ~/intel

Now install the NVIDIA drivers (disregard any error messages about

sudo ~/ -Nqa --ui=none

Note: If you are not running a custom kernel, add --no-cc-version-check to the command above.

Copy the Mesa 3D files for the Intel card:

sudo cp ~/intel/ /usr/lib    
sudo cp ~/intel/ /usr/lib/xorg/modules/extensions

Run the script by hand one time to get things in order:

sudo /etc/init.d/detectgpu

Make sure the nvidia module is loaded and start gdm:

sudo modprobe nvidia   
sudo /etc/init.d/gdm start

After you login, open a Terminal window and try running glxgears (the output in the terminal window will give a clue as to what went wrong if it doesn't work).

Switch the graphics switch to 'Off' for Intel graphics and reboot. Try glxgears again and it should work. If X crashes it might be a version mismatch (see the note about upgrading Intel drivers below).

Upgrading Graphics Drivers Edit

If you need to upgrade the NVIDIA drivers later, copy and from ~/intel back after running the new NVIDIA installer.

If there is an updated libgl1-mesa-glx or xserver-xorg-core package, the NVIDIA drivers must be uninstalled, then copy the new versions of the two files ( and as to ~/intel, run the NVIDIA installer, and copy the two files from ~/intel back again.

Ubuntu 10.04 (Lucid Lynx) and later Graphics Drivers InstallationEdit

Since 10.04 version Ubuntu introduced an easy way to install NVIDIA Graphics Drivers. It provides nvidia-current package with NVIDIA drivers installed into separate directory. Intel (and other vendor's) drivers also installed into separate dirs. Driver selection works through /etc/alternatives mechanism. You can install 'nvidia-current' package or you can use driver jockey (System -> Administration -> Additional Drivers). Also you can select 'Normal' or 'Extra' on 'Visual Effect' tab in System -> Preferences -> Appearance window and proprietary driver will install automatically.

After driver installation and system reboot you should get working NVIDIA driver. While NVIDIA GPU is active, do:

cp /etc/X11/xorg.conf /usr/local/etc/xorg.conf.nvidia

after reboot with Intel GPU do:

cp /etc/X11/xorg.conf /usr/local/etc/

(intel's xorg.conf may doesn't exist, so you should create an empty one)

Thenput the following script into /etc/init.d/detectgpu:

#! /bin/bash
# Provides:          detectgpu
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2
# Default-Stop:     
# Short-Description: ASUS N10 Graphics driver selection
# Description:       This script detects active GPU on ASUS N10 series
#                    laptops and activate driver configuration.

# Author: Maxim Kravets <>

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the script

rm /etc/X11/xorg.conf

VIDEO=$(lspci | grep -c nVidia)
if [ "$VIDEO" == "1" ]; then
  ln -s /usr/local/etc/xorg.conf.nvidia /etc/X11/xorg.conf
  update-alternatives --set gl_conf /usr/lib/nvidia-current/
  ln -s /usr/local/etc/ /etc/X11/xorg.conf
  update-alternatives --set gl_conf /usr/lib/mesa/


Add execute permissions to new script:

chmod +x /etc/init.d/detectgpu

and install it to automatic startup system:

update-rc.d detectgpu start 10 2 .

No other installation or compilation needed. You can update Intel or NVIDIA graphics driver any time you like. Of course, you should update Intel driver with Intel GPU active, and NVIDIA with NVIDIA GPU active ;)

Tweaks Edit

Upside Down Webcam Edit

If your webcam is upside-down, there is an easy way to flip the image:

export LIBV4LCONTROL_FLAGS=3 && application_name

The value of 3 flips the image both horizontally and vertically.

Skype requires preloading the v4lcompat library:

export LIBV4LCONTROL_FLAGS=3 && LD_PRELOAD=/usr/lib/libv4l/ skype

You can make these commands into shell scripts to prevent having to type them every time. You can then link these shell scripts to your Gnome or KDE menu to make it seamless.

Alternatively, you can use a patch to uvcvideo that will flip it. Note: this patch was made for 2.6.32, if you are using 2.6.33 or later it will not work and is not worth the effort of patching manually. First back up your existing source and module files (in case you need to revert to it):

sudo mv /usr/src/linux-`uname -r`/drivers/media/video/uvc/uvc_video.c /usr/src/linux-`uname -r`/drivers/media/video/uvc/uvc_video.c.orig    
sudo mv /lib/modules/`uname -r`/kernel/drivers/media/video/uvc/uvcvideo.ko /lib/modules/`uname -r`/kernel/drivers/media/video/uvc/uvcvideo.ko.orig

Then cd to the Linux source directory, download the patched version, build the module, and install it:

cd /usr/src/linux-`uname -r`    
wget -O ./drivers/media/video/uvc/uvc_video.c    
rm drivers/media/video/uvc/*.o 
make drivers/media/video/uvc/uvcvideo.ko    
sudo install -m 644 drivers/media/video/uvc/uvcvideo.ko /lib/modules/`uname -r`/kernel/drivers/media/video/uvc/    
sudo modprobe -r uvcvideo    
sudo modprobe uvcvideo

Maximizing Screen Real-Estate Edit

Go to the System menu and select Preferences->Appearance. Change the font size to 8 for all items under the Fonts tab.

Click the Details button at the bottom right and change the Resolution to 90 dots per inch.

Note: The actual PPI is 116.36: 1024x600 resolution, 10.2" diagonal = 8.8" x 5.16" (22.35cm x 13.1cm) = 116.36 PPI, 0.2183mm dot pitch

Also apply 'Subpixel smoothing' under Rendering. Click close.

For users of Firefox or Iceweasel, here is an optimized configuration to maximize usable space.

Ambient Light Sensor Edit

There is an ambient light sensor to the left of the camera. It will automatically adjust the brightness of the screen and is enabled by default. The screen will be darker on the highest setting with it enabled, so you may want to disable it to get the most possible brightness:

sudo sh -c "echo 0 > /sys/devices/platform/asus_laptop/ls_switch"

To enable it again replace 0 with 1. Bluetooth can be toggled in the same way:

sudo sh -c "echo 0 > /sys/devices/platform/asus_laptop/bluetooth"

Note: If you are running a kernel older than 2.6.31, the location is different: /sys/devices/platform/asus-laptop/

Touchpad Edit

Touchpad behavior can be modified by editing the Synaptics InputDevice section in /etc/X11/xorg.conf

To enable tapping (tap to click), increase MaxTapTime (max time to detect a tap in milliseconds) from 0 to the default 180 or higher. Also make sure the following line exists, in order to bind the touchpad tap with mouse button 1.

Option          "MaxTapTime"    "180"   
Option          "TapButton1"	 "1"

To enable horizontal scrolling change HorizEdgeScroll from 0 to 1:

Option          "HorizEdgeScroll"       "1"

Fingerprint Reader Edit

WARNING: This is for testing purposes ONLY! Do NOT run these commands if you are not prepared to potentially break your system. This has only been tested on Debian Sid. PLEASE DO NOT USE THESE DIRECTIONS FOR UBUNTU or other versions of Debian. Instead please see the documents here: [1]

NOTICE: This section uses the proprietary library.

First make sure the dependencies are installed:

sudo apt-get update   
sudo apt-get install libfprint0 libqca2-plugin-ossl libfakekey0

Then get the latest version of Fingerprint GUI, extract the tarball and install it:

cd ~   
tar zxvf fingerprintGUI-0.11.tar.gz   
cd fingerprint-0.11   
sudo ./ --with-upek

It should now say "Fingerprint binaries have been installed." If there are any missing libraries, apt-get those as well and re-run

Make the (required) uinput module load on system startup:

sudo sh -c "grep -q uinput /etc/modules || echo '\nuinput' >> /etc/modules"

Load the uinput module (so that rebooting isn't necessary):

sudo modprobe uinput

Make sure GDM is the default display manager:

grep -q gdm /etc/X11/default-display-manager || sudo dpkg-reconfigure gdm

Run Fingerprint GUI to configure your user fingerprint (each user must do this):


or if that has permissions problems:

sudo fingerprintGUI

In Fingerprint GUI: Click 'Upek (0x147e) unknown device (0x1000)' Click Next to get to the 'Finger' tab. Select whichever finger you want to use for the fingerprint. I recommend the thumb. Click Next to get to the 'Scan/Verify' tab. Swipe your finger (it may take a few tries). After 3 successful swipes it will say 'Fingerprint was saved to disk. Select another finger?' Answer No to adding another fingerprint. Click Next to get to the 'Settings' tab. Click Next to get to the 'Password' tab. Click Rescan and click Finish.

Run Fingerprint GUI to configure your root fingerprint (repeat the above steps but use a DIFFERENT FINGER!):

gksudo fingerprintGUI

Now test your fingerprints:

sudo fingerprintIdentifier

Back up files that are about to be modified (do not skip this):

sudo cp /etc/pam.d/su /etc/pam.d/su.backup   
sudo cp /etc/pam.d/login /etc/pam.d/login.backup   
sudo cp /etc/pam.d/sudo /etc/pam.d/sudo.backup   
sudo cp /etc/pam.d/gdm /etc/pam.d/gdm.backup   
sudo cp /etc/pam.d/gnome-screensaver /etc/pam.d/gnome-screensaver.backup   
sudo cp /etc/gdm/gdm.conf /etc/gdm/gdm.conf.backup   
sudo cp /etc/udev/rules.d/*fprint*.rules ~/

Hit CTRL+ALT+F2 and log in (as root if possible). If something goes wrong with the configuration steps below, you can use this terminal to recover, since it is possible lock yourself out of your system. Backing up the config files and keeping a terminal open will allow you to revert your changes to prevent this situation. Hit ALT+F7 to get back to the graphical environment.

The following commands will configure your system for fingerprint authentication. You have a choice as to what you want to use with fingerprint authentication. First create the file that each of the other config files will reference:

sudo sh -c "echo 'auth\tsufficient\t\ debug' | cat - /etc/pam.d/common-auth | sed -e 's/[ \t]*nullok_secure/ try_first_pass nullok_secure /' > /etc/pam.d/common-auth.fingerprint"

Configure login (at the terminal) for fingerprint:

sudo sh -c "sed 's/common-auth/common-auth.fingerprint/' /etc/pam.d/login.backup > /etc/pam.d/login"

To test the configration, press CTRL+ALT+F5 and type your username. Then swipe your finger and you should see output like this:

n10j login: grocer   
Fingerprint Login 0.11   
Authenticating grocer   
Swipe your finger or type your password:    

To get back to the graphical environment press ALT+F7.

Configure GDM to use the fingerprint reader:

sudo sh -c "sed 's/common-auth/common-auth.fingerprint/' /etc/pam.d/gdm.backup | sed -e 's/auth[ /t]*requisite[ /t]*' > /etc/pam.d/gdm"   
sudo sh -c "echo '[daemon]\nAutomaticLoginEnable=false\nAutomaticLogin=\nTimedLoginEnable=false\nTimedLogin=\n\n[greeter]\nBrowser=false' > /etc/gdm/gdm.conf"

Try logging out to see if GDM will work with the fingerprint reader. You don't need to type your username.

Configure su for fingerprint (NOT recommended since it has problems with gksu):

sudo sh -c "sed 's/common-auth/common-auth.fingerprint/' /etc/pam.d/su.backup > /etc/pam.d/su"

Configure sudo:

sudo sh -c "sed 's/common-auth/common-auth.fingerprint/' /etc/pam.d/sudo.backup > /etc/pam.d/sudo"

Configure gnome-screensaver:

sudo sh -c "sed 's/common-auth/common-auth.fingerprint/' /etc/pam.d/gnome-screensaver.backup > /etc/pam.d/gnome-screensaver"   
sudo sh -c "echo '#Device upek\nATTRS{idVendor}==\\"147e\\", ATTRS{idProduct}==\\"1000\\", MODE=\\"0664\\", GROUP=\\"plugdev\\"' >> /etc/udev/rules.d/z60_libfprint0.rules"

Set up user settings for gnome-screensaver (each user must run this):

gconftool-2 -t bool -s /apps/gnome-screensaver/embedded_keyboard_enabled TRUE   
gconftool-2 -t string -s /apps/gnome-screensaver/embedded_keyboard_command "/usr/local/bin/fingerprintPlugin -d"

Reload some stuff so that gnome-screensaver works without a reboot:

sudo /etc/init.d/udev restart   
sudo modprobe -r uhci_hcd   
sudo modprobe uhci_hcd

DO NOT allow the screensaver to run (or lock your screen with Fn+Space) until you are positive that your login configuration is working correctly. It will prevent you from getting to the terminal.

If something goes wrong, to undo the configuration run these commands (use CTRL+ALT+F2 if necessary):

sudo cp /etc/pam.d/su.backup /etc/pam.d/su   
sudo cp /etc/pam.d/login.backup /etc/pam.d/login   
sudo cp /etc/pam.d/sudo.backup /etc/pam.d/sudo   
sudo cp /etc/pam.d/gdm.backup /etc/pam.d/gdm   
sudo cp /etc/pam.d/gnome-screensaver.backup /etc/pam.d/gnome-screensaver   
sudo cp /etc/gdm/gdm.conf.backup /etc/gdm.conf   
sudo rm /etc/udev/rules.d/*fprint*.rules   
sudo cp ~/*fprint*.rules /etc/udev/rules.d/   
gconftool-2 -t bool -s /apps/gnome-screensaver/embedded_keyboard_enabled FALSE   
gconftool-2 -t string -s /apps/gnome-screensaver/embedded_keyboard_command ""

Delays Resolving Hostnames or Lookup Failures Edit

Your router is most likely at fault, but there is a workaround. IPv6 DNS lookups will timeout before falling back to an IPv4 lookup thus causing the delay or failure. For Firefox (or Iceweasel), you can disable IPv6 lookups by setting network.dns.disableIPv6 to true in about:config. If you want to disable IPv6 across your entire system see this post.

Hotkeys and Fn+F10 Mute Doesn't Work Edit

All of the Fn+F1 through Fn+F12 hotkeys now work out of the box (see the exception below for mute).

Fn+C is bound to XF86Launch1 and Fn+V is bound to XF86WebCam. These do not have any actions associated by default and can be assigned in System->Preferences->Keyboard Shortcuts.

If Fn+F10 doesn't work for mute, please update to kernel 2.6.30 or later and acpi-support 0.123-1 or later. If you are not able to upgrade, here is a workaround:

cd /etc/acpi/events   
sudo mv asus-volume-mute asus-volume-mute.x   
sudo mv asus-volume-up asus-volume-up.x   
sudo /etc/init.d/acpid restart

Magnify and Power Mode Buttons Edit

The power mode button (right next to the power button) is hard coded to KEY_SCREENLOCK, and the magnify button (to the left) is not enabled at all. First make a backup of the file we are going to be changing (do not skip this):

cp /usr/src/linux-`uname -r`/drivers/platform/x86/asus-laptop.c /usr/src/linux-`uname -r`/drivers/platform/x86/asus-laptop.c.orig

The following commands will patch and recompile the asus_laptop module. The power mode button will now be bound to XF86AudioNext and the magnify button will be bound to XF86AudioPlay. (If you would rather have other functions for these keys, see /usr/share/acpi-support/key-constants and replace NEXTSONG [right button] and PLAYPAUSE [left button] in the first line below):

sed 's/SCREENLOCK/NEXTSONG/' /usr/src/linux-`uname -r`/drivers/platform/x86/asus-laptop.c.orig | sed 's/{KE_END, 0},/{KE_KEY, 0xba, KEY_PLAYPAUSE},\n\t{KE_END, 0},/' > /usr/src/linux-`uname -r`/drivers/platform/x86/asus-laptop.c
cd /usr/src/linux-`uname -r`
make drivers/platform/x86/asus-laptop.ko
sudo cp drivers/platform/x86/asus-laptop.ko /lib/modules/`uname -r`/kernel/drivers/platform/x86/
sudo modprobe -r asus_laptop
sudo modprobe asus_laptop

Startup, Suspend and Resume Issues Edit

Reloading modules with scripts will solve problems with LEDs and wireless not associating after resume.

Note: The startup script below should not be needed anymore. Use it only if you need to. To remove it:

sudo update-rc.d -f asus_laptop remove

First the startup script. The space and period in the last command line is not a typo.

sudo sh -c "echo '#\041/bin/bash\nmodprobe -r asus_laptop\nmodprobe asus_laptop' > /etc/init.d/asus_laptop" 
 sudo chmod +x /etc/init.d/asus_laptop 
 sudo update-rc.d asus_laptop start 99 2 .

Now the resume script (unlike the startup script, this is still needed):

sudo sh -c "echo '#\041/bin/bash\n\ncase \$1 in\n\thibernate)\n\t\tmodprobe -r asus_laptop\n\t\tmodprobe -r ath9k\n\t;;\n\tsuspend)\n\t\tmodprobe -r asus_laptop\n\t\tmodprobe -r ath9k\n\t;;\n\tthaw)\n\t\tmodprobe ath9k\n\t\tmodprobe asus_laptop\n\t;;\n\tresume)\n\t\tmodprobe ath9k\n\t\tmodprobe asus_laptop\n\t;;\n*) ;; esac' > /etc/pm/sleep.d/"
 sudo chmod +x /etc/pm/sleep.d/

Note: If you are using ath5k for an a/b/g card instead of ath9k for a wireless N card (lsmod | grep ath) make sure to edit to reflect this.

If your wireless still doesn't come back after resume it's a different problem. This should not happen very often. Open a terminal and run:

killall nm-applet    
sudo /etc/init.d/dbus restart    
nm-applet &

If you lose your desktop icons after the above, run:


If you cannot enter standby, run:

sudo pm-suspend

Preload: The Adaptive Readahead Daemon Edit

The preload package is useful to keep frequently used programs and data in memory for faster access and improved load times. See this article for more details.

CPU Frequency Scaling Edit

After installing the custom kernel from Part 1, right click on the gnome-panel (taskbar) and select Add to Panel... and add CPU Frequency Scaling Monitor. Left click on its icon to change modes.

Optimizing GRUB2 and TTY resolution Edit

By default grub and tty are running at 640x480. You can change the resolution of both with a few simple edits. In a terminal run:

sudo gedit /etc/default/grub

and you should see something like this:

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'

change #GRUB_GFXMODE=640x480 to GRUB_GFXMODE=1024x600. Save and close, then run:

sudo gedit /etc/grub.d/00_header

look for lines like these and change accordingly:

if [ "x${GRUB_DEFAULT}" = "x" ] ; then GRUB_DEFAULT=0 ; fi
if [ "x${GRUB_DEFAULT}" = "xsaved" ] ; then GRUB_DEFAULT='${saved_entry}' ; fi
if [ "x${GRUB_TIMEOUT}" = "x" ] ; then GRUB_TIMEOUT=5 ; fi
if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=1024x600 ; fi

if you want to change your tty console resolution look for these lines in the 00_header file:

if loadfont `make_system_path_relative_to_its_root ${GRUB_FONT_PATH}` ; then
  set gfxmode=${GRUB_GFXMODE}
  set gfxpayload=keep
  insmod gfxterm
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm

you will have to add gfxpayload=keep here so it will tell the kernel to keep the same resolution as grub.

to apply these settings run:

sudo update-grub

Dyson Audio Compressor Edit

Now you may be asking yourself what this is and what it does. The too long; didn't read version is here.

The simple explanation is if the audio signal is too loud it would normally cause distortion, but with the limiter it normalizes the audio signal. How does this help? Say you are watching a movie and someone is talking really quietly, so you boost the volume, right after you do that there is a huge explosion and scares the fecal matter right out of you, with the compressor it will average the sound out so you don't have super loud spots or too quiet spots.

Note this applies to all linux systems using alsa, not just the N10.

You will need a package called swh-plugins, you can install it by running:

sudo apt-get install swh-plugins

You will need to create a file in your home directory called .asoundrc so open up your favorite text editor and save the fallowing to ~/.asoundrc

pcm.ladcomp {
     type plug
     slave.pcm "ladcomp_compressor";
pcm.ladcomp_compressor {
     type ladspa
     slave.pcm "ladcomp_limiter";
     path "/usr/lib/ladspa";
     plugins [
             label dysonCompress
             input {
                 #peak limit, release time, fast ratio, ratio
                 controls [0 1 0.5 0.99]
pcm.ladcomp_limiter {
     type ladspa
     slave.pcm "plughw:0,0";
     path "/usr/lib/ladspa";
     plugins [
             label fastLookaheadLimiter
             input {
              #InputGain(Db) -20 -> +20 ; Limit (db) -20 -> 0 ; Release time (s) 0.01 -> 2
              controls [ 20 0 0.8  ]

Next time you want to watch anime/movie in mplayer you can use the dyson compressor with this command

mplayer -ao alsa:device=ladcomp somevideo.mkv

Note: if you want to output sound through hdmi change the plughw:0,0 to plughw:0,3 in the .asoundrc

NVIDIA Tweaks Edit

Color Accuracy [NVIDIA] Edit

james- has created an ICC profile using a Spyder3Pro which can be downloaded here: [2]

To use it, first install the Argyll Color Management System package.

For Ubuntu Karmic Koala 9.10 and Debian Squeeze (testing) or Sid:

apt-get install argyll

For Ubuntu Jaunty Jackalope 9.04 or Debian Lenny 5.0.x, grab the .debs and install it manually:

Then apply the color profile:

dispwin -I /path/to/Spyder3Pro.icm

Redraw Issues with Compiz [NVIDIA] Edit

This is apparently the result of a race condition between Xorg and compiz.

AVI Videos Look Purple/Blue (Hues Shifted) [NVIDIA] Edit

Totem and GStreamer based players may have this problem - there is a cheap workaround. Hit Alt+F2 to get to the 'Run Application' dialog, type gksudo nvidia-settings and hit Enter. 'NVIDIA X Server Settings' will open, close it and switch back to the player window and the video will look right. There's more info here about the underlying cause of this bug.

HDMI Audio [NVIDIA] Edit

Note: This section is redundant if you run a custom built kernel, having followed the section #Kernel_Upgrade.

To get audio working over HDMI after installing the official NVIDIA driver package, it may be necessary to install an updated version of ALSA with a patch. Note that HDMI audio will only work when the NVIDIA GPU is enabled. This now includes support for 7.1 surround (thanks to dragilla for posting a link to the original patch).

First make sure you have the required build dependencies:

sudo apt-get update   
sudo apt-get build-dep alsa-base alsa-utils alsa-lib
cd ~
tar xvvf alsa-driver-
cd alsa-driver-
wget -O ./sound/pci/hda/patch_nvhdmi.c
sudo make install

Now build alsa-lib:

cd ..   
tar jxvf alsa-lib-1.0.22.tar.bz2   
cd alsa-lib-1.0.22  
sudo make install

Now build alsa-utils:

cd ..   
tar jxvf alsa-utils-1.0.22.tar.bz2   
cd alsa-utils-1.0.22   
sudo make install

Now restart ALSA:

sudo alsa force-reload

HDMI audio will now show with aplay -l (lowercase L).

In your mixer app (gnome-alsamixer, kmix, alsamixergui, etc) make sure IEC958 is switched on. If you do not see it there open the mixer app's preferences and make the IEC958 switches visible.

Once you have hooked up your HDMI cable run gksudo nvidia-settings and detect displays. If you are hooked up to a TV you will need to set it to TwinView or Separate X screen and hit Apply before it will play any audio.

To force ALSA to use the HDMI out for mplayer:

mplayer -ao alsa:device=hw=0.3 file.avi

To force ALSA to use the HDMI out for all applications:

echo 'pcm.!default hdmi:Intel' >> ~/.asoundrc

To undo the previous (unforce HDMI audio):

rm .asoundrc

If it doesn't work try installing pavucontrol:

sudo apt-get install pavucontrol

Start it, then change settings to Digital HDMI Output.

To get back to netbook speakers, change settings to Analog Stereo Output.

HD Video Decoding [NVIDIA] Edit

The NVIDIA GPU supports hardware decoding of HD video with the use of recent NVIDIA drivers and VDPAU enabled applications. MPlayer now has full VDPAU support. First make sure you have subversion and the right libraries installed before attempting to compile.

sudo apt-get update   
sudo apt-get install subversion   
sudo apt-get build-dep mplayer   
cd ~   
svn checkout svn:// mplayer   
cd mplayer   
sudo make install

once you have compile mplayer with VDPAU, insert the fallowing into your ~/.mplayer/config


it will decode video with 2 threads instead of 1. The performance will enable you to play 720p h.264 mkv with no audio desync.

Appendices Edit

Building MadWifi for the Stock Kernel Edit


This method only applies to Debian and is not recommended. Instead, please follow #Kernel_Upgrade to build a custom kernel.

If you are running anything but Lenny (stable), add the following lines to the bottom of /etc/apt/sources.list before continuing. If you are running Lenny you must add contrib and non-free to your APT sources list if you haven't already.

deb lenny main contrib non-free   
deb-src lenny main contrib non-free

Update the list of available packages and make sure module assistant is installed:

sudo apt-get update   
sudo apt-get install module-assistant

Build and install the driver modules:

sudo m-a a-i madwifi-source

Wireless should now work:

sudo iwconfig wlan0

If you are not running Lenny, please make sure to now remove its lines from sources.list.

Removing the detectgpu Startup Script Edit

sudo update-rc.d -f detectgpu remove

The original location of this guide is: