Search:  
Gentoo Wiki

Asus_A6U

This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related

Contents

Introduction

This is information gathered about Gentoo Linux on the Asus A6U laptop. These laptops come in a few different configurations as they are, "barebones units," in the words of ASUS, that are configured by the reseller. This one has been equiped with the Turion ML-37, 1G Ram, and an 80G HD as well as a recently added, after market, Intel 2915 miniPCI wireless adapter (installed this one myself). One of the main purposes of this laptop will be audio work. This wiki entry will be modified as I continue to configure and customize my Gentoo installation to get the best audio station I can out of it.

I must say that in my years of experience with Linux I have owned a few laptops before and helped others install Linux on theirs and I have never seen one that was more compatible with Linux ever. I have yet to run into a single device on this system that is not Linux supportable in its full capacity. I have not yet used them all, the little camera in the LCD for instance, but I have always run into problems long before now in the past. I am very happy with this choice. I am not yet ready to give it a full 100% thumbs up, but I am pretty close.

Hardware

Code: lspci output
0000:00:00.0 Host bridge: Silicon Integrated Systems [SiS] 760/M760 Host (rev 03)
0000:00:01.0 PCI bridge: Silicon Integrated Systems [SiS] SG86C202
0000:00:02.0 ISA bridge: Silicon Integrated Systems [SiS] SiS964 [MuTIOL Media IO] (rev 36)
0000:00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev 01)
0000:00:02.6 Modem: Silicon Integrated Systems [SiS] AC'97 Modem Controller (rev a0)
0000:00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] Sound Controller (rev a0)
0000:00:03.0 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)
0000:00:03.1 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)
0000:00:03.2 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)
0000:00:03.3 USB Controller: Silicon Integrated Systems [SiS] USB 2.0 Controller
0000:00:0a.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ac)
0000:00:0a.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ac)
0000:00:0a.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 04)
0000:00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
0000:00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
0000:00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
0000:00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
0000:00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
0000:01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 661FX/M661FX/M661MX/741/M741/760/M760 PCI/AGP

What works

So far I have tested the following components and found them to be Linux compatibly 100% (all features supported)

The following items I have not tested all features but all features I have tested worked:

The following items I have not tested or have not figured out what to do to configure:

What doesn't work

3D acceleration doesn't work.

There are some minor issues with the ehci-hcd driver that I'm sure can be worked out.

Hard Drive Optimization

So far all I have done to optimize the hard drive throughput is to include the correct driver in the kernel and this improved the overall system responsiveness quite a bit; imagine that... You can see that the IDE controller is an SiS 5513 in the above lspci listing.

Linux Kernel Configuration: Device Drivers -> ATA/ATAPI/MFM/RLL Support
[*] PCI IDE chipset support
...
[*] Generic PCI bus-master DMA support
...
[*] Use PCI DMA by default when available
...
<*>   SiS5513 chipset support

Warning

Take care when picking up this unit. I picked up my laptop a little carelessly and my grip was where the HD is. The plate covering the HD is not strong enough to protect the HD inside. When I picked up the laptop the weight of the unit and the leverage on my fingers created enough pressure to push the heads into the platters and totally killed the hard drive. This did give me a chance to install Gentoo in 32 bit mode instead of 64 to see if some of the issues noted here are 64 bit related, such as the ehci-hcd driver locking up the kernel from time to time under certain reliable circumstances.

Sound

This laptop can be used as an audio station though it of course lacks a professional grade sound card and has a little more latency than a desktop system. I was able to get a system capable of working as a portable DAW, for my limited needs anyway, with some gruntwork and some help on the LAU list.

ALSA

The SiS sound card included in the A6U is Linux compatible. The snd-intel8x0 module will operate the sound card. Simply put snd-intel8x0 and snd-seq into the appropriate file in your modules.autoload.d directory and make sure you enable them in the kernel, along with any other sound options you wish to include.

Linux Kernel Configuration: Advanced Linux Sound Architecture
<M> Advanced Linux Sound Architecture
<M>   Sequencer support
< >     Sequencer dummy client
<M>   OSS Mixer API
<M>   OSS PCM (digital audio) API
[*]   OSS Sequencer API
Linux Kernel Configuration: PCI Devices
<M> Intel/SiS/nVidia/AMD/ALi AC97 Controller

Realtime Modifications

This system had a bit more latency issues than my AMD64 desktop so I had to delve much farther into realtime setup in Linux and specifically with the AMD64. There are three options that I could find so far. I have decided to try sticking with 2.6.13-rc7 w/ realtime-preempt applied.

2.6.14

I applied the realtime patch to 2.6.14 vanilla with great results. Currently setting jackd to frames of 16 and periods to 2 with almost 0 xruns and great latency (or lack thereof).

Kernel 2.6.11 w/ realtime-lsm and realtime-preempt

Applying the realtime patch for 2.6.11-final to the 2.6.11.12 kernel did work even though it isn't the correct patch as there isn't one. The resulting kernel did compile and function. There seems to be no copy of the RLimits patch available for download even for older kernels now that it is included in 2.6.12-rc4 and later. So, after building the 2.6.11 kernel simply emerge realtime-lsm to get the realtime module and follow the instructions given in the Jack HOWTO; just ignore the part about preemptable kernel not being necissary as it certainly is on this machine.

Kernel 2.6.13-rcX w/ no additional patches

All of the newer 2.6.13 kernels have a partial inclusion of the realtime patch. This inclusion is not complete, but it may be good enough. Preliminary testing showed that it might have been ok, but I still got some xruns. The new kernel introduces these options:

Linux Kernel Configuration: Processor type and features
Preemption Model (Preemptible Kernel (Low-Latency Desktop))  --->│
Linux Kernel Configuration: Preemption Model
          ( ) No Forced Preemption (Server)
          ( ) Voluntary Kernel Preemption (Desktop)
          (X) Preemptible Kernel (Low-Latency Desktop)

However, applying the patch adds much more. Unfortunately for rc6 it doesn't seem to work out to well for the compiler though...

Once you have done this you can follow some directions at tapas - ugh!. You will also need to apply the RLimits patch to PAM and configure your limits.conf file to allow users to make use of the realtime stuff...keep reading...

Kernel 2.6.13-rc7 w/ realtime-preempt

The kernel was the best to patch in my bout of testing. The patch applied cleanly and the kernel compiled. I got it here and it was called patch-2.6.13-rc7-rt3 at the time of this writing. Simply download the vanilla 2.6.13-rc7 kernel from kernel.org or use ACCEPT_KEWYORDS="~amd64" emerge vanilla-sources, making sure your portage tree is up to date before hand.

Once you have applied the realtime patch you will be able to configure the kernel:

Linux Kernel Configuration: Processor type and features
Preemption Mode (Complete Preemption (Real-Time))  --->
--- Thread Softirqs
--- Thread Hardirqs
--- Preemptible RCU
Linux Kernel Configuration: Preemption Mode
( ) No Forced Preemption (Server)
( ) Voluntary Kernel Preemption (Desktop)
( ) Preemptible Kernel (Low-Latency Desktop)
(X) Complete Preemption (Real-Time)

You will also need to patch and configure PAM for RLimits, which are already in the kernel, and you may want to adjust the priority of certain threads, which you can read about here

The soundcard in my laptop (may be different in others of same model) appears as:

Code: /proc/interrupts

177: 0 IO-APIC-level SiS SI7012

Patching PAM for rlimits

PAM must be patched to allow the use of the RLimits patch that is now part of the official kernel (since 2.6.12-rc4). There is a website that used to have the patch that also has directions on how to use it, but the patch no longer seems to be available at that site. So, after much hunting in Google I managed to find this patch:

Code: RLimits PAM Patch - Won't apply to emerge pam anymore, need to find alternative
--- Linux-PAM-0.77/modules/pam_limits/pam_limits.c.rtprio	
2005-03-13 16:15:07.000000000 +0100
+++ Linux-PAM-0.77/modules/pam_limits/pam_limits.c	2005-03-13
16:27:54.000000000 +0100
@@ -39,6 +39,11 @@
 #include <grp.h>
 #include <pwd.h>
 
+/* Hack to test new rlimit values */
+#define RLIMIT_NICE	13
+#define RLIMIT_RTPRIO	14
+#define RLIM_NLIMITS	15
+
 /* Module defines */
 #define LINE_LENGTH 1024
 
@@ -293,6 +298,10 @@
     else if (strcmp(lim_item, "locks") == 0)
 	limit_item = RLIMIT_LOCKS;
 #endif
+    else if (strcmp(lim_item, "rt_priority") == 0)
+	limit_item = RLIMIT_RTPRIO;
+    else if (strcmp(lim_item, "nice") == 0)
+	limit_item = RLIMIT_NICE;
     else if (strcmp(lim_item, "maxlogins") == 0) {
 	limit_item = LIMIT_LOGIN;
 	pl->flag_numsyslogins = 0;
@@ -360,6 +369,18 @@
         case RLIMIT_AS:
             limit_value *= 1024;
             break;
+        case RLIMIT_NICE:
+            if (limit_value > 39)
+		limit_value = 39;
+	    if (limit_value < 0)
+		limit_value = 0;
+            break;
+        case RLIMIT_RTPRIO:
+            if (limit_value > 99)
+		limit_value = 99;
+	    if (limit_value < 0)
+		limit_value = 0;
+            break;
     }
 
     if ( (limit_item != LIMIT_LOGIN)

To apply the patch I simply saved it as pam.patch in my home directory and added an epatch line to the apply_pam_patches function in the pam-0.78-r2.ebuild file. Then I ran the command ebuild /usr/portage/sys-libs/pam/pam-0.78-r2.ebuild digest to allow me to run emerge on pam - otherwise it won't because the ebuild file does not match the MD5 stamp for the file that used to be there.

Jack

A great combination for working with jack is the jack-connection-kit and qjackctl. Emerge both. Run the qjackctl program and alter the settings so that it runs jackd directly instead of with jackstart. Set it to use realtime, etc...

One thing I have noticed is that changing the CPU frequency while jackd is running can confuse it a great deal.

Power Management

I haven't done much in this area yet. I made sure to compile in all the appropriate kernel options and put the neat little cpufreq gnome applet in my panel so I can adjust the cpu speed. But there is much I haven't established, including suspension and battery run levels. A great explanation appears to be the Gentoo Power Management Guide. Also, there are many sources of information regarding PowerNow! and ACPI here in this wiki. This is just one topic I haven't gotten to yet.

Note: In working with the above mentioned Power Management Guide I have noticed that using the ondemand governor with cpufreqd results in rapid frequency fluctuations from lowest to highest. The ondemand governor by itself does not seem to do this. There could be another conflict going on that I have not found but I don't recall setting up any other frequency daemon. Probably just creating a script that goes in the battery runlevel to switch governors is a better, simpler, and cleaner option.

Suspend to RAM

I got suspend to ram working with ACPI! These steps are necessary:

[*] Legacy Power Management API
[*] Power Management Debug Support
[ ] Software Suspend
[*] ACPI Support
[*] Sleep States

(This information was not reproducible by Mattias Guns 22:03, 13 February 2007 (UTC), read below to make it work with s2ram)

Suspend to RAM with s2ram

On the other hand the following works:

Sensors

lm-sensors

The module is 'it87' but doesnt give meaningfull values.

acpi

In /proc/acpi you can find a temperature measure: /proc/acpi/thermal_zone/THRM/temperature. There also is a fan/ dir in the acpi dir, but the state appears to be 'off'.

X Window System

This system comes with an SiS M741 with TV-Out. Also of interest to X is the touchpad and USB mouse, and a nice female mouse with a shorter cord comes with the laptop.

Module Order and Synaptics Driver

First things first, get the synaptics driver for the touchpad: emerge synaptics.

Also, if you want to be able to use both USB mouse and the touchpad, and you want to be able to start X without the USB mouse plugged in on powerup, you need to make sure that the touchpad is always recognized first. So, load the psmouse module before you load the usbhid module.

Code: modules.autoload.d/kernel-2.6
usbcore
psmouse
ohci-hcd
usbhid

You do this so that the touchpad is always in the same place in the /dev/input/ directory. If you load the usbhid module first then the usbmouse will be event1 when plugged in on boot, and event2 when not, whereas the touchpad will be event2 if the mouse is plugged in and event1 if not. Doing it this way makes life easier even though I did run into some pages that said to do it exactly the opposite way, but I didn't run into any of the problems they mentioned would happen.

TV Out

This laptop has an SVideo output plug and came with an SVideo to Composite cord. Assuming you configure X to use the sis driver, not much else seems to be needed to enable TV-Out immediately. All you need to do is emerge a program called sisctrl which is of course masked due to a lack of keyword. I simply added ~amd64 to the list of keywords in the ebuild file, ran ebuild /usr/portage/x11-misc/sisctrl/sisctrl-0.0.20050618.ebuild digest, and emerged the program. Initially it could not find xf86vmode.h so I ended up using this command line to install: ACCEPT_KEYWORDS="~amd64" INCLUDES="-I/usr/X11R6/include" emerge sisctrl

Once this was done I can change the mode of my screen and various things until I got output on the TV that matched the desktop on the LCD. This is how I use my laptop as a DVD in XP so I believe that at least this option is available in Linux as well. There may be more, and in fact the sisctrl program complained that I need to upgrade the driver...I may just do that.

The program did do some wierd things to my computer when I pressed reset. I could not control anything on the display. I pressed Ctrl-Alt-F1 and got a blank screen. However, pressing Ctrl-C and then running startx brought my desktop back. My virtual terminals are still buggered up though and I will probably have to reboot to get them back.

The sisctrl program and sis drivers appear to come from this website. Just go to the X.org/XFree86/Linux and SiS/XGI graphics chipsets link.

More to come...

xorg.conf

There are many things I haven't studied enough yet and many things I haven't configured, including certain touchpad options, but here is my xorg.conf file for a starting point. I just used xorgconfig to begin with and went from there, it worked right off but then I changed things wrt the mouse and such.

Code: xorg.conf

Section "Module"
    Load        "dbe"  	# Double buffer extension
    SubSection  "extmod"
      Option    "omit xfree86-dga"   # don't initialise the DGA extension
    EndSubSection

    Load        "type1"
    Load        "freetype"

    Load "synaptics" # For touchpad
EndSection

Section "Files"


    RgbPath	"/usr/X11R6/lib/X11/rgb"


    FontPath   "/usr/share/fonts/misc/"
    FontPath   "/usr/share/fonts/TTF/"
    FontPath   "/usr/share/fonts/Type1/"
    FontPath   "/usr/share/fonts/75dpi/"
    FontPath   "/usr/share/fonts/100dpi/"
    FontPath   "/usr/share/fonts/local/"

EndSection


Section "InputDevice"

    Identifier	"Keyboard1"
    Driver	"kbd"
    Option "AutoRepeat" "500 30"
    Option "XkbRules"	"xorg"
    Option "XkbModel"	"pc104"
    Option "XkbLayout"	"dvorak"

EndSection


Section "InputDevice"
    Identifier	"Touchpad"
    Driver	"synaptics"
    Option "Protocol"    "event"
    Option "Device"      "/dev/input/event1"
    Option "SendCoreEvents"
    Option "SHMConfig" "on"
    Option "Emulate3Buttons"
EndSection


 Section "InputDevice"
    Identifier  "USB Mouse"
    Driver      "mouse"
    Option	"Name" "Autodetection"
    Option      "Protocol"      "IMPS/2"
    Option      "Device"        "/dev/input/mice"
    Option "ZAxisMapping" "4 5"
 EndSection
Section "Monitor"

    Identifier  "My Monitor"
    HorizSync   31.5 - 64.3
    VertRefresh 50-100

EndSection


Section "Device"
    Identifier	"Standard VGA"
    VendorName	"Unknown"
    BoardName	"Unknown"
    Driver     "vga"

EndSection

# Device configured by xorgconfig:

Section "Device"
    Identifier  "** SiS (generic)                      [sis]"
    Driver      "sis"
EndSection

Section "Screen"
    Identifier  "Screen 1"
    Device      "** SiS (generic)                      [sis]"
    Monitor     "My Monitor"
    DefaultDepth 24

    Subsection "Display"
        Depth       24
        Modes       "1280x800"
        ViewPort    0 0
    EndSubsection
EndSection

Section "ServerLayout"
    Identifier  "Simple Layout"
    Screen "Screen 1"

    InputDevice "Touchpad" "CorePointer"
    InputDevice "Keyboard1" "CoreKeyboard"
    InputDevice "USB Mouse" "SendCoreEvents"

EndSection

I took out the comments and such to make the above shorter.

Network

This laptop has a Realtek ethernet device integrated into it. Simply use the 8139too module to drive this device and use ifconfig and/or dhcpcd as you normally would.

Linux Kernel Configuration: 8139too Device
  <M> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support

In the future I want to configure it so that it recognises when it is connected to a network and attempts to join in automatically. For now I just open an xterm and join with dhcpcd.

WLAN

See this guide.

USB

This system uses the ohci-hcd module to drive the USB.1 hardware. Use the ehci-hcd module to drive USB.2 hardware. You will need both modules loaded to have access to both types of USB devices; ehci-hcd alone does not appear to work.

Also, I have had trouble with the ehci-hcd driver hanging if loaded during the boot process. Getting it to come back would require that a USB.2 device be plugged in along with power. Simply loading the driver after the boot is finished doesn't do this. It is an oddity that I haven't quite figured yet. It appears to affect kernel 2.6.14. When switching back to 2.6.12 it never hangs on loading EHCI.

This laptop has 4 USB1/2 ports in the back.

Note: having the ehci-hcd driver loaded when you try suspend to disk seems to hang the system on shutdown and/or startup. A powerdown and restart comes up ok but you loose the session that way.

IEEE 1394

I do not own any firewire devices at this time so I haven't tested the integrated IEEE 1394 port yet. This laptop has one of the mini, four pin type connection ports for firewire devices.

PC Card

See this guide.

VGA output to Samsung LE-40S81B LCD TV

I was (accidentaly) able to configure LCD 40' TV for native 1360 x 768 resolution, here are my xorg.conf: Section "Monitor"

       # Block type: 2:0 3:fd
       # Block type: 2:0 3:fc
       Identifier "SAMSUNG"
       VendorName "SAM"
       ModelName "SAMSUNG"
       # Block type: 2:0 3:fd
       HorizSync 30-61
       VertRefresh 60-75
       # Max dot clock (video bandwidth) 90 MHz
       # Block type: 2:0 3:fc
       # DPMS capabilities: Active off:yes  Suspend:no  Standby:no
       Mode    "1360x768"      # vfreq 60.015Hz, hfreq 47.712kHz
               DotClock        85.500000
               HTimings        1360 1424 1536 1792
               VTimings        768 771 777 795
               Flags   "+HSync" "+VSync"
       EndMode
       Mode    "1024x768"      # vfreq 60.004Hz, hfreq 48.363kHz
               DotClock        65.000000
               HTimings        1024 1048 1184 1344
               VTimings        768 771 777 806
               Flags   "-HSync" "-VSync"
       EndMode
       # Block type: 2:0 3:fd
       # Block type: 2:0 3:fc

EndSection

Using sisctrl set your laptop 15'4 widescreen resolution to 1280x768 and surpricing you will have 1360x768 at VGA output to Samsung TV :)

Retrieved from "http://www.gentoo-wiki.info/Asus_A6U"

Last modified: Fri, 03 Oct 2008 06:05:00 +0000 Hits: 28,347