Introduction

This page describes how to install (Gentoo) Linux on the Asus UL-30A laptop. Due to software updates and possibly additional devices and features that I manage to configure successfully over time, this page will be subject to continuous change. Please refer to the modification history on this page to see what has changed.

Summary

This laptop works like a charm with Linux. It is fast, response, and has an incredible value for money. Sound is fully supported, as well as 3D graphics (Compiz Fusion) with transparency works as smoothly as possible. Network and hibernation are fully supported as well.

Table 1. Hardware

Type Device Model Driver State
Processor Intel Core 2 Duo CULV Genuine Intel(R) CPU U7300 @1.30GHz acpi-cpufreq Works on both its frequencies, namely 800 MHz and 1.3 GHz
Hard drive S-ATA HD 320 GB, 5.400 r/pm Intel Corporation ICH9M/M-E SATA AHCI Controller ahci Works as /dev/sda
Wireless WiFi link Atheros Communications 802.11a/g/n WiFi card Atheros Communications Inc. ath9k Works flawlessly from kernel versions 2.6.32 and up.
Frequently drops wlan0 interface for high network throughputs in 2.6.31 kernels.
Network card Gigabit Ethernet PCI Express Ethernet controller: Attansic Technology Corp. atl1c Experimental Atheros L1C driver seems to work fine for kernels 2.6.32-rc8 and up.
Freezes computer after network plug-in for kernels 2.6.31 and older.
Graphics card Intel GMA 4500 MHD Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller agpgart-intel, i915 Works out of the box with xf86-intel-video driver and kernel boot parameter i915.modeset=1
Sound chip Intel HD audio Intel Corporation 82801I (ICH9 Family) HD Audio Controller snd-hda-intel Works with the snd-hda-intel driver
USB Controller Intel: 3xUSB UHCI, 1xUSB2 EHCI 82801I (ICH9 Family) uhci-hcd, ehci-hcd Works out of the box
Bluetooth     btusb, bluetooth Not yet tested
Webcam     ??? Not yet tested
Firewire     ??? Not yet tested
Mouse, Touchpad       Works, touchpad even with two and three finger extensions!

Installation

It is described to how configure Gentoo Linux with kernel 2.6.32-rc8. Note that older kernels may suffer serious flaws in the wireless driver module (ath9k), so I won't guarantee wireless for kernels older than 2.6.32-rc8.

Lacking an optical drive, I used a bootable USB to bootstrap the system. In order to make booting from USB possible, enter your BIOS by pressing <F2> during boot and

  • Set boot from USB first in your boot sequence
  • Set the hard drive type to USB in your FIXME: menu

Gentoo configuration

My current /etc/make.conf is reproduced below.
Caveat:the SYNC variable is specific to my configuration at home, as are the GENTOO_MIRRORS and CAMERAS variables.

  
CFLAGS="-O2 -march=core2 -msse4.1 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j3"
GENTOO_MIRRORS="http://ftp.snt.utwente.nl/pub/os/linux/gentoo 
#SYNC="rsync://rsync.nl.gentoo.org/gentoo-portage"
SYNC="rsync://it-essence/gentoo-portage"
LINGUAS="en nl us"
USE="-ipv6 -oss -kde -gnome -cups -minimal -qt3 -qt4 -apm laptop acpi dri madwifi X branding dbus hal lock session startup-notification thunar ln_sensors java6 java alsa usb dvd xvmc mmx mmxext sse mp3 mp2 aac xv win32codecs vorbis real quicktime nsplugin exif xcb gif png tiff svg jpeg"
CAMERAS="canon ptp2"
VIDEO_CARDS="intel"
INPUT_DEVICES="keyboard mouse evdev synaptics"
  

Kernel configuration

You may download my complete .config file here. This may not be the perfect configuration (yet), it certainly comprises a smoothly working kernel that supports most features. Please feel free to mail any modifications or enhancements to me (see contact section in my home page).

Partitioning the harddisk

Most users probably won't want to erase the pre-installed Windows 7. The machine arrives with the harddisk partitioned in three partitions, one of which is the famous (or must I say notorious) hidden rescue partition. The second partition is reserved for windows and the third immediately confiscated by Linux, of course.

I created a new extended partition that replaced the original empty third partition and created on this extended partition a boot, swap and root partition like so:

  
Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xd9b3496e

   Device Boot      Start         End      Blocks   Id  System
   /dev/sda1               1        1912    15356928   1c  Hidden W95 FAT32 (LBA)
   /dev/sda2   *        1912       21369   156288540+   7  HPFS/NTFS
   /dev/sda3           21370       38913   140922180    5  Extended
   /dev/sda5           21370       21501     1060258+  83  Linux
   /dev/sda6           21502       22024     4200966   82  Linux swap / Solaris
   /dev/sda7           22025       38913   135660861   83  Linux
  

Note that the drive shows up as sda instead of hda. I chose to have a 4 Gig swap (/dev/sda6), a 1 Gig /boot (/dev/sda5) and the leave the remainder for the root partition (/dev/sda7). With this partition scheme, the Grub bootloader was installed with:

  
default 0
timeout 30
splashimage=(hd0,4)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.32-rc8
root (hd0,4)
kernel /boot/linux-2.6.32-rc8 root=/dev/sda7 i915.modeset=1

title Windows 7
rootnoverify (hd0,1)
makeactive
chainloader +1

Processor

Part of the kernel processor configuration is listed below. You may download my complete .config file here.


Processor type and features --->
  [ ] Tickless System (Dynamic Ticks)
  [ ] High Resolution Timer Support
  [*] Symmetric multi-processing support
  [ ] Support sparse irq numbering
  [*] Enable MPS table
 [ ] Support for big SMP systems with more than 8 CPUs
  [ ] Support for extended (non-PC) x86 platforms
  [*] Single-depth WCHAN output
  [ ] Paravirtualized guest support  --->
  [ ] Memtest
  Processor family (Core 2/newer Xeon)  --->
  [*] Generic x86 support
  [*] Supported processor vendors  --->
  [ ] HPET Timer Support
  [*] Enable DMI scanning
      (2) Maximum number of CPUs
  [*] SMT (Hyperthreading) scheduler support
  [*] Multi-core scheduler support
  Preemption Model (Voluntary Kernel Preemption (Desktop)) --->
  [ ] Reroute for broken boot IRQs
  [*] Machine Check / overheating reporting
  [*]   Intel MCE features
  [ ]   AMD MCE features
  [ ]   Support for old Pentium 5 / WinChip machine checks
  
  

To enable CPU frequency scaling, select


Power management and ACPI options  --->
  CPU Frequency scaling  --->

    [*] CPU Frequency scaling
    [ ]   Enable CPUfreq debugging
    < >   CPU frequency translation statistics
    Default CPUFreq governor (performance)  --->
    -*-   'performance' governor
    <M>   'powersave' governor
    <M>   'userspace' governor for userspace frequency scaling
    <M>   'ondemand' cpufreq policy governor
    <M>   'conservative' cpufreq governor
    *** CPUFreq processor drivers ***
    <M>   ACPI Processor P-States driver
    < >   AMD Mobile K6-2/K6-3 PowerNow!
    < >   AMD Mobile Athlon/Duron PowerNow!
    < >   AMD Opteron/Athlon64 PowerNow!
     >   Cyrix MediaGX/NatSemi Geode Suspend Modulation
    < >   Intel Enhanced SpeedStep (deprecated)
    < >   Intel Speedstep on ICH-M chipsets (ioport interface)
    < >   Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
    < >   Intel Pentium 4 clock modulation
    < >   nVidia nForce2 FSB changing
    < >   Transmeta LongRun
    < >   VIA Cyrix III Longhaul
    < >   VIA C7 Enhanced PowerSaver (DANGEROUS)
  
  

You also need to emerge the package cpufrequtils to enable CPU frequency scaling and execute $ rc-update add cpufrequtils default to your default startup to obtain on demand frequency scaling between 800 MHz en 1.3 GHz, see the Gentoo HOWTO CPU Frequency Scaling page.

Using Xfce4 as my window manager, I installed the xfce4-cpu-freq plug-in to keep an eye on the current CPU frequency.

Power management (ACPI)

The ACPI support seems to works completely, since

  • ACPI events are recognized by acpid
  • Suspend to RAM works
  • Battery indicator works (in XFCE)
  • CPU speedstep works

Power management and ACPI options  --->

   [*] Power Management support
   [ ]   Power Management Debug Support
   [*] Suspend to RAM and standby
   [*] Hibernation (aka 'suspend to disk')
   (/dev/sda6) Default resume partition
   [*] Run-time PM core functionality
   [*] ACPI (Advanced Configuration and Power Interface) Support  --->
   [ ] SFI (Simple Firmware Interface) Support  --->
   < > APM (Advanced Power Management) BIOS support  --->
   CPU Frequency scaling  --->
   -*- CPU idle PM support

  

For the ACPI options I took:

  
Power management and ACPI options  --->
  CPI (Advanced Configuration and Power Interface) Support  --->

     [*]   Deprecated /proc/acpi files
     [*]   Deprecated power /proc/acpi directories
     < >   ACPI 4.0 power meter
     [*]   Future power /sys interface
     [*]   Deprecated /proc/acpi/event support
     <M>   AC Adapter
     <M>   Battery
     -*-   Button
     -*-   Video
     <M>   Fan
     -*-   Dock
     <M>   Processor
     <M>     Processor Aggregator
     <M>     Thermal Zone
     (0)   Disable ACPI for systems before Jan 1st this year
     [ ]   Debug Statements
     < >   PCI slot detection driver
     [ ]   Power Management Timer Support
     {M}   Container and Module Devices (EXPERIMENTAL)
     < >   Smart Battery System
  
  

Graphics card

Introduction

Support for the Intel Mobile GM 4500

  1. Configure the kernel properly:
    
    Loadable Module Support --->
     Device Drivers --->
       Graphics support --->
         <*> /dev/agpgart (AGP Support)  --->
         [*] VGA Arbitration
         <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  --->
         -*- Lowlevel video output switch controls
         -*- Support for frame buffer devices  --->
         [*] Backlight & LCD device support  --->
         Display device support  --->
         Console display driver support  --->
         Bootup logo  --->
    
    
    where
    
    --- /dev/agpgart (AGP Support)
          < >   ALI chipset support
          < >   ATI chipset support
          < >   AMD Irongate, 761, and 762 chipset support
          < >   AMD Opteron/Athlon64 on-CPU GART support
          <*>   Intel 440LX/BX/GX, I8xx and E7x05 chipset support
          < >   NVIDIA nForce/nForce2 chipset support
          < >   SiS chipset support
          < >   Serverworks LE/HE chipset support
          < >   VIA chipset support
          < >   Transmeta Efficeon support
    
    
    and
    
    --- Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
          < >   3dfx Banshee/Voodoo3+
          < >   ATI Rage 128
          < >   ATI Radeon
          < >   Intel I810
          <*>   Intel 830M, 845G, 852GM, 855GM, 865G (i915 driver)  --->
                 i915 driver
          [*]       Enable modesetting on intel by default
          < >   Matrox g200/g400
          < >   SiS video cards
          < >   Via unichrome video cards
          < >   Savage video cards
    
    
    and
    
    --- Support for frame buffer devices
          [*]   Enable firmware EDID
          [ ]   Framebuffer foreign endianness support  --->
          -*-   Enable Video Mode Handling Helpers
          [ ]   Enable Tile Blitting Support
          *** Frame buffer hardware drivers ***
          < >   Cirrus Logic support
          < >   Permedia2 support
          .
          .
          .
          < >   nVidia Riva support
          <M>   Intel 810/815 support (EXPERIMENTAL)
          .
          .
          .
    
    
    The remainder of the settings are not crucial and may be choosen to your liking. However you may use my .config file here.
  2. Install xorg-server with emerge -av xorg-server. I'm currently running
    
    [ebuild   R   ] x11-base/xorg-server-1.6.3.901-r2  USE="hal nptl xorg -debug -dmx -ipv6 -kdrive -minimal -sdl -tslib" 0 kB
    
    
  3. Make sure you get the most recent Intel drivers by installing x11-drivers/xf86-video-intel drivers ~x86.
  4. Add i915.modeset=1 to your boot parameters!
  5. Configure the /etc/X11/xorg.conf:
    
    Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
    EndSection
    
    Section "Files"
        ModulePath   "/usr/lib/xorg/modules"
        FontPath     "/usr/share/fonts/misc/"
        FontPath     "/usr/share/fonts/TTF/"
        FontPath     "/usr/share/fonts/OTF"
        FontPath     "/usr/share/fonts/Type1/"
        FontPath     "/usr/share/fonts/100dpi/"
        FontPath     "/usr/share/fonts/75dpi/"
    EndSection
    
    Section "Module"
        Load  "extmod"
        Load  "dri2"
        Load  "dbe"
        Load  "record"
        Load  "glx"
        Load  "dri"
    EndSection
    
    Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
    EndSection
    
    Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option        "Protocol" "auto"
        Option        "Device" "/dev/input/mice"
        Option        "ZAxisMapping" "4 5 6 7"
    EndSection
    
    Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
    EndSection
    
    Section "Device"
            ### Available Driver options are:-
            ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
            ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
            ### [arg]: arg optional
            #Option     "NoAccel"                # [<bool>]
            #Option     "SWcursor"               # [<bool>]
            #Option     "ColorKey"               # <i>
            #Option     "CacheLines"             # <i>
            #Option     "Dac6Bit"                # [<bool>]
            #Option     "DRI"                    # [<bool>]
            #Option     "NoDDC"                  # [<bool>]
            #Option     "ShowCache"              # [<bool>]
            #Option     "XvMCSurfaces"           # <i>
            #Option     "PageFlip"               # [<bool>]
        Option      "AccelMethod" "exa"
            Option      "MigrationHeuristic" "greedy"
            Option      "ExaNoComposite" "false"
        Identifier  "Card0"
        Driver      "intel"
        VendorName  "Intel Corporation"
        BoardName   "Mobile 4 Series Chipset Integrated Graphics Controller"
        BusID       "PCI:0:2:0"
    EndSection
    
    Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
            Viewport   0 0
            Depth     1
        EndSubSection
        SubSection "Display"
            Viewport   0 0
            Depth     4
        EndSubSection
        SubSection "Display"
            Viewport   0 0
            Depth     8
        EndSubSection
        SubSection "Display"
            Viewport   0 0
            Depth     15
        EndSubSection
        SubSection "Display"
            Viewport   0 0
            Depth     16
        EndSubSection
        SubSection "Display"
            Viewport   0 0
            Depth     24
        EndSubSection
    EndSection
    
    Section "DRI"
        Mode 0666
    EndSection
    
    Section "Extensions"
        Option "Composite" "Enable"
    EndSection
    
    
  6. Start X. Depending on your favourite window manager, you may have to invoke X appropriately. I'm running Xfce4, which is lightweight, fast and responsive (in conjunction with Compiz Fusion). To this extent, I have set XSESSION="Xfce4" in my /etc/rc.conf
  7. For installation of Compiz fusion, see the HOWTO compiz-fusion from Gentoo.
  8. Finally, I installed fusion-icon and added it to my start-up session of Xfce4, so that Compiz Fusion is now started automatically.

Network

Interfaces

The output of lspci shows us two network interfaces:

02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
03:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)

The wired ehternet controller shows up as eth0 and the wireless network controller shows up as wlan0.

Wired network

Getting the Gigabit ethernet NIC working, enable the following options in the kernel:

  
Device drivers --> 
 Network device support --->
  Ethernet (1000 Mbit) --->
    .
    .
    .
    < >   QLogic QLA3XXX Network Driver Support
    < >   Atheros/Attansic L1 Gigabit Ethernet support
    < >   Atheros L1E Gigabit Ethernet support (EXPERIMENTAL)
    <M>   Atheros L1C Gigabit Ethernet support (EXPERIMENTAL)
  

Futher configuration of the network is standard practice.

Wireless network

To get the wireless network adapter working, I followed the FIXME: rest

  
Device drivers --> 
 Network device support --->
   --- Wireless LAN (IEEE 802.11)
     -- Atheros Wireless Cards
       < >   Atheros 5xxx wireless cards support
       <M>   Atheros 802.11n wireless cards support
       [ ]     Atheros ath9k debugging
       < >   Atheros AR9170 802.11n USB support 

Sound

The output of lspci tells us the HD audio controller type:

00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)

This HDA (High-Definition Audio) Intel soundcard is supported by the snd-hda-intel module.


Device Drivers --->
  <M> Sound card support  --->
    [*]   Preclaim OSS device numbers                                | |  
    <M>   Advanced Linux Sound Architecture  --->                    | |  
    < >   Open Sound System (DEPRECATED)  --->

where


--- Advanced Linux Sound Architecture
      <M>   Sequencer support
      < >     Sequencer dummy client
      <M>   OSS Mixer API
      <M>   OSS PCM (digital audio) API
      [*]     OSS PCM (digital audio) API - Include plugin system
      [*]   OSS Sequencer API
      <M>   RTC Timer support
      [*]     Use RTC as default sequencer timer
      [ ]   Dynamic device file minor numbers
      [*]   Support old ALSA API
      [ ]   Verbose procfs contents
      [ ]   Verbose printk
      [ ]   Debug
      [*]   Generic sound devices  --->
      [ ]   ISA sound devices  --->
      [*]   PCI sound devices  --->
      [*]   USB sound devices  --->
      < >   ALSA for SoC audio support  --->

and


Device Drivers --->
  Sound card support --->
    Advanced Linux Sound Architecture --->
      PCI sound devices --->
        --- Intel HD Audio 
	  [*]   Build hwdep interface for HD-audio driver
	  [ ]     Allow dynamic codec reconfiguration (EXPERIMENTAL)
	  [ ]   Support digital beep via input layer
	  [ ]   Support jack plugging notification via input layer
	  [ ]   Support initialization patch loading for HD-audio
	  [*]   Build Realtek HD-audio codec support
	  [*]   Build Analog Device HD-audio codec support
	  [*]   Build IDT/Sigmatel HD-audio codec support
	  [*]   Build VIA HD-audio codec support
	  [*]   Build ATI HDMI HD-audio codec support
	  [*]   Build NVIDIA HDMI HD-audio codec support
	  [*]   Build INTEL HDMI HD-audio codec support
	  [*]   Build Cirrus Logic codec support
	  [*]   Build Conexant HD-audio codec support
	  [*]   Build Creative CA0110-IBG codec support
	  [*]   Build C-Media HD-audio codec support
	  [*]   Build Silicon Labs 3054 HD-modem codec support
	  [*]   Enable generic HD-audio codec parser
	  [*]   Aggressive power-saving on HD-audio
	  (0)     Default time-out for HD-audio power-save mode

Harddisk

The output of lspci tells us the HD controller type:


00:1f.2 SATA controller: Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03)

As mentioned before, the harddisk shows up as /dev/sda. In the kernel, I activated the associated options like so:


Device Drivers --->
  <*> ATA/ATAPI/MFM/RLL support  ---> 
  SCSI device support  --->
  <*> Serial ATA (prod) and Parallel ATA (experimental) drivers  --->

where


--- ATA/ATAPI/MFM/RLL support
  *** Please see Documentation/ide/ide.txt for help/info on IDE drives ***
  Support for SATA (deprecated; conflicts with libata SATA driver)
  <*>   generic ATA/ATAPI disk support
  [*]     ATA disk support
  [ ]     ATAPI floppy support
  < >   Include IDE/ATAPI CDROM support
  .
  .
  .

and


Serial ATA (prod) and Parallel ATA (experimental) drivers
  [*]   Verbose ATA error reporting
  [*]   ATA ACPI Support
  [*]   SATA Port Multiplier support
  <*>   AHCI SATA support
  < >   Silicon Image 3124/3132 SATA support
  [ ]   ATA SFF support
<pre>
<![CDATA[

Luckily, the DMA is recoginzed as well, giving (IMHO) a very decent I/O performance of the 5400 RPM 320Gig harddisk:


/dev/sda:
 Timing cached reads:   3054 MB in  2.00 seconds = 1527.00 MB/sec
 Timing buffered disk reads:  208 MB in  3.02 seconds =  68.87 MB/sec

Bluetooth

I tried to configure my wireless bluetooth mouse from my older W2W. Although the bluetooth seems to work fine (I can ping my bluetooth device), I still haven't got my mouse working. However, I list my kernel settings below:


Networking support--->

<*> Bluetooth subsystem support  --->

--- Bluetooth subsystem support
<M>   L2CAP protocol support
<M>   SCO links support
<M>   RFCOMM protocol support
[*]     RFCOMM TTY support
<M>   BNEP protocol support
[*]     Multicast filter support
[*]     Protocol filter support
<M>   HIDP protocol support

Bluetooth device drivers  --->
<M> HCI USB driver
<M> HCI UART driver
  [ ]   UART (H4) protocol support
  [ ]   BCSP protocol support
  [ ]   HCILL protocol support
< > HCI BCM203x USB driver
< > HCI BPA10x USB driver
< > HCI BlueFRITZ! USB driver
< > HCI VHCI (Virtual HCI device) driver
< > Marvell Bluetooth driver support

USB

The output of lspci tells us the HD audio controller type:

00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)

Nothing special here, just see the section with my kernel configuration parameters.