Gentoo Wiki ArchivesGentoo Wiki

Asus_A6T

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

Contents

Introduction

This is a simple guide for making hardware on Asus A6T, A6Tc, Z92t, and A6M work.

It is assumed you do know how to install Gentoo Linux and Linux kernel on a notebook and you have a basic ‘Linux skills’.

This guide also might be very useful for ones running other Linux distribution but some procedures might differ and some issues might have been fixed by the distribution vendor.

Hardware

Type Name Status
CPU AMD Turion64 1,6 GHz X2 TL50
or
AMD Sempron 3200+
works
Motherboard nVidia C51 works
GPU nVidia GeForce Go 7600 256 MiB built-in (up to 512 MiB)
or
nVidia GeForce Go 7300 64 MiB built-in (up to 256 MiB)
or
nVidia GeForce Go 6100 without built-in RAM (up to 128 MiB)
works
Display WXGA ASUSTek LCD of some kind 1280×800 works
Hard Disk Drive 100 GB Fujitsu MHV2100AH PL
or
100 GB Seagate Momentus 5400.2
or
100 GB Hitachi Travelstar 5K100
works
Optical Disk Drive Matshita DVD±RW DL UJ-850S
or
TSSTcorp CD/DVDW TS-L632D
works
Ethernet Realtek RTL8111/8168B works
Wireless Broadcom BCM4318 [AirForce One 54g] 802.11g works
Sound nVidia MCP51 HDA works
USB nVidia MCP51 works
PC Card Ricoh RL5c476 ? works
FireWire (IEEE 1394) Ricoh R5C552 works
Card Reader Ricoh SD/SDIO/MMC/MS/MSPro Card Reader SD works
Infrared Unknown SIR chip (on some models only) does not work
Bluetooth ASUSTek USB (made by CSRbetween) works
Modem nVidia Si3054 works
Webcam Syntek DC-1125 works
Touchpad Synaptics-compatible works

CPU

In order to make the CPU running both cores and supports PowerNow!, you need to disable APIC or ACPI IRQ on the kernel command line (it cannot be disabled via kernel configuration which confuses me). Moreover only the 2.6.17 and 2.6.18 kernels seems to support the PowerNow! function of X2 Turions excluding the ‘no-sources’ (well, to be perfectly honest, ‘no-sources’ does not boot with the ‘noapic’ boot parameter). On 2.6.19 kernel I have successfully booted without any additional parameters.

Well, you can use also kernels that does not support the PowerNow!, but then the CPUs will tweak with no report to the kernel and you’ll often see the message that CPU changed its speed.

Linux Kernel Configuration: Enable PowerNow!
Power management options  --->
    CPU Frequency scaling  --->
        [*] CPU Frequency scaling
            <*> AMD Opteron/Athlon64 PowerNow!
            <*> ACPI Processor P-States driver

There is still no support for C-States on neither A6T nor A6Tc, thus there are no ‘hlt’ instructions on idle cycles. That's why the CPU runs constantly at higher temperatures than in Windows. Just check ‘/proc/acpi/processor/CPU1/info’ and ‘/proc/acpi/processor/CPU1/power’ to see that. This problem does not occur on A6M.
There is a bugzilla entry at kernel.org: ASUS A6Tc - no C-States for the processor, HIGH temperatures. Last update on this case states what: AMD SMP machines do not support C2/C3. BIOS enters an enhanced C1E mode if all cores are set to C1.

Motherboard

The ASUSTek / nVidia motherboard is well supported with the recent kernels including sensors. The only thing I can’t make working is fan control but I don’t know if this is supported by the motherboard itself. However, the CPU likes warm, so the fan should be very silent. In fact, there’s no problem to get it has over 80 ? and the highest speed of the fan is used when the CPU has over about 75 ? (50 to 60 ? is a normal working temperature, the fan turns on on 60 ?). [These are NOT normal temperatures. In Windows you get about 10? lower even at full load]

Linux Kernel Configuration: Selecting sensors drivers
Device Drivers  --->
    I2C support  --->
        <M> I2C support
            <M> I2C device interface
                I2C Hardware Bus support  --->
                    <M> Nvidia nForce2, nForce3 and nForce4
                Miscellaneous I2C Chip support  --->
                    <M> EEPROM reader
    Hardware Monitoring support  --->
        <M> Hardware Monitoring support
            <M> National Semiconductor LM90 and compatibles
Warning: A6T is shipped with 0301 or 0401 BIOS which is very buggy (the bugs occur when your kernel uses APIC and ACPI). This problem has been reported even on Windows! I strongly recommend updating to newer one (0601 or preferably 0701). You can flash it from DOS using the AFLASH2 utility. Do not install this BIOS until you’re sure you’re running A6T!

GPU

In order to make the GPU running, you need the testing (~amd64 or ~x86) nVidia proprietary driver (x11-drivers/nvidia-drivers). After that it works nicely without any problems even with hibernating while running 3D accelerated stuff (like Beryl or Quake 4); this is supported only when agpgart in kernel is disabled and the driver uses its own AGP stuff. The only problem I found is that borrowing memory from RAM is not supported. To disable agpgart on 2.6.18+ kernels you need to manually edit arch/x86_64/Kconfig to first allow you to disable IOMMU and then agpgart: [1]. This does not seem to effect nvidia related Xorg freezing issues.

Linux Kernel Configuration: Disabling the agpgart
Device Drivers  --->
    Character Devices  --->
        < > /dev/agpgart (AGP Support)
Note: Disabling agpgart is not required but can prevent future problems when you forget to select nVidia’s AGP in ‘xorg.conf’.
Warning: In order to use nVidia’s AGP you must have ‘agpgart’ module neither loaded nor compiled into the kernel.

I don’t know whether this nVidia chipset is supported by the X.org nv driver, but according to other user’s posts on the web, it’s not. In order to use nVidia’s proprietary driver, you have to install the ‘nvidia-drivers’ package; I strongly recommend unmasking the Beta driver, because it supports hibernation, Compiz and Beryl, Composite with GLX, and this newer chipset. I haven’t tested whether the stable nVidia driver supports this chipset in X.org but loading the kernel driver makes problems (loading usually either hangs or fails).

File: /etc/X11/xorg.conf
Section "Device"
    Identifier         "nVidia GeForce Go 7600"
    Driver             "nvidia"
    VideoRam           524288
    Option             "NvAGP"                        "1"
    Option             "AddARGBGLXVisuals"            "true"
    Option             "AllowGLXWithComposite"        "true"
EndSection
Section "Extensions"
    Option             "Composite"                    "true"
EndSection

For framebuffer console you should use the VESA VGA driver with ‘vga=792’ (1024×768×32) option (‘vga=791’ option – 1024×768×16 – seems to conflict with the nVidia proprietary driver sometimes). You can run console in the native resolution when using ‘nvidiafb’ framebuffer driver; this driver conflicts with nVidia proprietary driver however so I recommend this only when you don‘t need 3D acceleration.

Note: I found that testing (~amd64) X.org’s extensions ‘Composite’ and ‘Damage’ are more stable on this GPU when running Beryl.
Note: When using the 9742 nVidia BETA drivers, you’ll need to restart Beryl every time you switches to console or runs accelerated game because it either makes unuseable or even no picture. This bug is not present in older BETA drivers versions, but they are unstable when running 3D accelerated games from Beryl. I hope these bugs will be fixed soon.
Note: nVidia GeForce Go 7300 can run only 256 MiB of video RAM. nVidia GeForce Go 6100 can run only 128 MiB of video RAM.

With nVidia proprietary driver you can use TV Out. See nVidia proprietary documentation for more information.

If you suffer random glitches (screen blinks for a fraction of second), you may have to add this:

File: /etc/modprobe.d/nvidia

options nvidia NVreg_RegistryDwords="PerfLevelSrc=0x2222"

Afterwards run update-modules.

Issues with the nVidia driver and X.org locking up: It may go black for about 30 seconds then the desktop will be visible again and the mouse will be drawn on the screen but nothing will respond. A number of suggestions from http://www.nvnews.net may or may not help.

Display

The LCD attached to this laptop works perfectly; when you select to support Backlight controls, the backlight automatically turns off when you turn the screen off by xset dpms force off.

Linux Kernel Configuration: Lowlevel Backlight controls enabled
Device Drivers  --->
    Graphics support  --->
        [*] Backlight & LCD device support  --->
            <*> Lowlevel Backlight controls

If you experience problems when switching to 640×480 (bottom part of the screen is cut off), set the following in your xorg.conf:

File: /etc/X11/xorg.conf
Section "Monitor"
ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 +HSync +VSync
EndSection

TV-out

If you want to enable TV-out for a standard PAL-TV video signal, add the following:

File: /etc/X11/xorg.conf
 Option      "TVStandard" "PAL-B"
 Option      "UseDisplayDevice" "TV"
 Option      "TVOutFormat" "SCART"

Hard Disk Drive & Optical Disk Drive

Works with no problem with some S.M.A.R.T. features (no acoustic management, no performance management).

Both uses IDE/ATA drivers, so enable them in your kernel:

Linux Kernel Configuration: Hard Disk Drive & Optical Disk Drive enabled
Device Drivers  --->
    ATA/ATAPI/MFM/RLL support  --->
        <*> ATA/ATAPI/MFM/RLL support
            <*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
                <*> Include IDE/ATA-2 DISK support
                <*> Include IDE/ATAPI CDROM support
                [*] PCI IDE chipset support
                    [*] Generic PCI bus-master DMA support
                        [*] Use PCI DMA by default when available
                            [ ] Enable DMA only for disks
                        <*> AMD and nVidia IDE support

It's also possible(and suggested with newer kernels, because Enhanced IDE/MFM/RLLsupport is going to be deprecated) to use new libata drivers (stable in >=2.6.22 kernels). You will need:

Linux Kernel Configuration: Hard Disk Drive & Optical Disk Drive with libata
Device Drivers  --->
    SCSI device support  --->
        <*> SCSI disk support 
        <*> SCSI CDROM support
    <*> Serial ATA (prod) and Parallel ATA (experimental) drivers  --->
        <*>   AMD/NVidia PATA support

And, (ONLY) in this case you can turn off Enhanced IDE/MFM/RLL support.The laptop will boot with no problems

Linux Kernel Configuration: Hard Disk Drive & Optical Disk Drive enabled
Device Drivers  --->
    ATA/ATAPI/MFM/RLL support  --->
        <*> ATA/ATAPI/MFM/RLL support
            < > Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support

If you have everything configured fine, you should get about 45 MiBps when reading from the hard disk.

Don’t forget that spinning down and up your hard drive may eventually destroy it (? 300,000 for a laptop drive). Use ‘laptop_mode’ instead of the power management provided by ‘hdparm -B’ so that the kernel optimizes disk accesses.

Warning: Power management is by default on on Seagate, and it causes some strange head Load_Cycle_Counts. You may notice 2 Load_Cycle_Count every 1-5 minutes (use smartctl or just hear the clicks), which is way too much. When your laptop has Seagate hard drive, it is recommended to partially disable power management on boot. Just add hdc_args="-B192" to your hdparm configuration file. Don't use 254, or it will run very hot.

TSSTcorp CD/DVDW TS-L632D optical drive (which is an OEM drive from Samsung) shipped in some derivates of this laptop is rather tricky. It doesn’t like when program hal-addon-stor from sys-apps/hal polls it and simply hangs up. The symptoms are major slowdown with high CPU load with IDE drivers and messages like this:

Code: Example error message
 
ata1.00: qc timeout (cmd 0xa0)
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata1.00: cmd a0/00:00:00:00:20/00:00:00:00:00/a0 tag 0 cdb 0x0 data 0
res 51/20:03:00:00:00/00:00:00:00:00/a0 Emask 0x5 (timeout)
ata1: port is slow to respond, please be patient (Status 0xd1)
ata1: device not ready (errno=-16), forcing hardreset
ata1: soft resetting port
ata1.00: configured for UDMA/33
ata1: EH complete
  

in dmesg with libata showing transfer mode gradually decaying to PIO0.

Note: You should not experience this if your laptop is shipped with the Matshita drive.

There are a few ways to address it:

1. Disable hal polling

 hal-disable-polling  --device /dev/sr0
 for libata or
 hal-disable-polling  --device /dev/hda
 for IDE

2. Patch kernel with this patch:

Code: Patch to prevent transfer mode decay
 
--- ./drivers/ata/libata-eh.c.old       2007-07-09 03:32:17.000000000 +0400
+++ ./drivers/ata/libata-eh.c   2007-08-24 01:59:09.000000000 +0400
@@ -1279,7 +1278,7 @@ static unsigned int ata_eh_speed_down_ve

        if (arg.nr_errors[2] + arg.nr_errors[3] > 3)
                verdict |= ATA_EH_SPDN_NCQ_OFF;
-       if (arg.nr_errors[1] + arg.nr_errors[2] > 3 || arg.nr_errors[3] > 10)
+       if (arg.nr_errors[1] + arg.nr_errors[2] > 7 || arg.nr_errors[3] > 15)
                verdict |= ATA_EH_SPDN_SPEED_DOWN;

        /* scan past 3 mins of error history */
@@ -1287,7 +1286,7 @@ static unsigned int ata_eh_speed_down_ve
        arg.since = j64 - min(j64, j5mins);
        ata_ering_map(&dev->ering, speed_down_verdict_cb, &arg);

-       if (arg.nr_errors[1] + arg.nr_errors[2] + arg.nr_errors[3] > 10)
+       if (arg.nr_errors[1] + arg.nr_errors[2] + arg.nr_errors[3] > 15)
                verdict |= ATA_EH_SPDN_FALLBACK_TO_PIO;

        return verdict;
  

and rebuild it. It will relax constraints regarding error frequency and the transfer mode won’t decay.

3. The most efficient way is to cross-flash the drive with recent firmware from Samsung (found on Ubuntu mail list)

Warning: This procedure is very dangerous and can permanently damage your drive! Use it on your own risk! You may also void the warranty! For the TSSTcorp drive only; never flash the Matshita drive with this firmware!

There is also a way to do it without Windows, see Launchpad.

Ethernet

Ethernet is supported by Realtek’s ‘r8168’ driver that can be dowloaded from [2] (version 8.003). It works fine on A6T.

The gigabit ‘r8169’ interface driver included in 2.6.18 and newer kernels works with this network card too, though it still has some issues. Latest development patches for this driver are available at [3]. It is not present in 2.6.17 or older kernels. Sometimes it may not detect the card (I’m not sure what causes this).

You may have to use the ‘acpi=noirq’ kernel boot parameter if you experience xorg lockups when you're uploading fullspeed.

You may try to use the ‘pci=nomsi‘ kernel boot parameter if you experience link detection problem and network always down.

The "Use Rx and Tx Polling" option below might solve the issues where the card freezes during full upload.

Linux Kernel Configuration: Enabling the ‘r8169’ module
Device Drivers  --->
    Network device support  --->
        Ethernet (1000 Mbit)  --->
            <M> Realtek 8169 gigabit ethernet support
                [*]   Use Rx and Tx Polling (NAPI) (EXPERIMENTAL)
                [ ]   VLAN support
Warning: If the ‘r8169’ driver does not work and you use the ‘r8168’ driver, you should have the ‘r8169’ driver neither loaded nor compiled into the kernel otherwise their ‘cooperation’ happens to crash kernel’s network stack and thus raise kernel panic.

Wireless

See the Broadcom 43xx article.

Sound

The nVidia MCP51 HDA can be used with the ’snd-hda-intel’ driver (support has been added in Linux 2.6.20 but works even before).

Linux Kernel Configuration: Enabling sound
Device Drivers  --->
    Sound  --->
        <*> Sound card support
            Advanced Linux Sound Architecture  --->
                <*> Advanced Linux Sound Architecture
                    PCI devices  --->
                        <M> Intel HD Audio

You may need to put ‘alsactl restore’ in your ‘/etc/conf.d/local.start’ and ‘alsactl store’ in ‘/etc/conf.d/local.stop’ in order to have a working KMix/alsamixer from the start.

OSS on A6M works out of the box with ’snd-pcm-oss module’, on A6T after loading it you have to put direct flag to alsa with ‘echo "YourOssAppName 0 0 direct" >/proc/asound/card0/pcm0p/oss’.

And now couple of words about mixer, first check [4] on page 11 and start crying. With ‘model=asus’ options to ’snd-hda-intel’ on new ALSA, you get fully working Line in, Mic in and CD in. There’s no output volume amplifier on this card however so only hope is to fully move to ALSA and its software amplifier to change volume. You can’t in any way change volume for OSS, so only choice is either using ALSA’s OSS emulation (sadly without multi-process mixer) or proper wrapper command: ‘aoss’, ‘artsdsp’, or ‘esddsp’ respectively.

USB

Usualy works with no problem at all. Sometimes EHCI devices cannot be plugged after USB initiation or does not work at all (see Appendix A for more information). Uses standard USB modules.

PC Card

See this guide. The socket is yenta-compatible.

FireWire (IEEE 1394)

Works with no problem. Uses standard 1394 modules.

Card Reader

SD works with no problem, other card formats not tested but should work too (didn’t work with Memory Stick Pro for me). Uses ‘mmc-block’ and ‘sdhci’ modules.

Linux Kernel Configuration: Enabling the ‘mmc-block’ and ‘sdhci’ modules
Device Drivers --->
    MMC/SD Card support  --->
        <M> MMC support
            <M> MMC block device driver
            <M> Secure Digital Host Controller Interface support

Infrared

Does not work. I even don’t know the chip it uses. The only think I’m sure is that it’s SIR (according to ASUS User’s Manual).

Bluetooth

Works. Requires ‘hci_usb’ module.

Linux Kernel Configuration: Enabling the ‘hci_usb’ module
Networking  --->
    <M> Bluetooth subsystem support  --->
        Bluetooth device drivers  --->
            <M> HCI USB driver


The bluetooth interface is enabled and discoverable by default. You usually don’t want this, both for security and powersaving reasons.

If you have compiled the kernel with the ASUS ACPI extension, Bluetooth can be enabled/disabled by echoing ‘0’ or ‘1’ to ‘/proc/acpi/asus/bluetooth’ (it should be safe to disable it with a startup script, for example ‘/etc/conf.d/local.start’):

Code: Disable Bluetooth interface

echo 0 > /proc/acpi/asus/bluetooth

To enable it, simply echo a ‘1’. You also get a free Bluetooth LED activation.

If you don’t have ‘/proc/acpi/asus/bluetooth’, you may try to copy the latest ‘asus_acpi.c’ to your ‘/usr/src/linux/drivers/acpi/’ directory from ACPI4ASUS project, and recompile the kernel (backup the original ‘asus_acpi.c’ because the latest one may not compile on some kernels).

Modem

Works with net-dialup/slmodem in ALSA mode.

One have to use the latest slmodem-driver. Use version >=20070813. You also must use the latest stable alsa-sound architecture. It is the version 1.0.14. There are some patches for the hda_codec included so it works properly.

I have tested it on my own Asus A6T laptop and it works. I'm using net-dialup/wvdial for dialing in.

That's my /etc/wvdial.conf

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
#Init2 = ATQ0 X3 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
ISDN = 0
Phone = 0191771
Modem = /dev/ttySL0
Username = Tiscali
Carrier Check = no
Password = Tiscali
Baud = 460800
Carrier Check  =  no

Then you have to do the following as root:

slmodemd -c COUNTRY_NAME --alsa hw:0,1
though there have been cases of  hw:0,6

for example

slmodemd -c GERMANY --alsa hw:0,6

Finally

wvdial

It is a Motorola Si3054 modem. Great work and thanks to Marvin Stodolsky

Webcam

The driver for it has been released. It works fine and seems to be stable.

You can download the driver from it's SourceForge files site.

You can also download the latest development/unstable driver with Subversion (emerge subversion):

svn co https://syntekdriver.svn.sourceforge.net/svnroot/syntekdriver syntekdriver
cd syntekdriver/trunk/driver
make -f Makefile.standalone all
modprobe videodev
insmod stk11xx.ko

You can test it with:

Here are some commands:

viewing

mplayer tv:// -tv driver=v4l:width=640:height=480:outfmt=rgb24:device=/dev/video0:noaudio -flip

Grabbing without sound:

mencoder tv:// -tv driver=v4l:width=640:height=480:outfmt=rgb24:device=/dev/video0:noaudio -flip -nosound -ovc lavc -o out.avi

Grabbing with sound:

mencoder tv:// -tv driver=v4l:width=640:height=480:outfmt=rgb24:device=/dev/video0:forceaudio:adevice=/dev/dsp \ 
> -flip -ovc lavc -oac mp3lame -lameopts cbr:br=64:mode=3 -o out.avi

Be sure to have v4l/v4l2 compiled in the kernel (or as a module).

Touchpad

Synaptics-compatible one. Works fine with ‘psmouse’ module and ‘synaptics’ X.org driver. Padlock (the key left to power button) does not lock the touchpad on its own (as Acers do); see Appendix B.

Kernel

Kernel flavour ‘vanilla-sources’ works without problems. I got over 60 days on 2.6.19 and 14 days.Even 2.6.20 to 2.6.20.6 kernels work without problems.

Flavour ‘mm-sources’ works except for 2.6.20-mm2. 2.6.21-rc2-mm1 works fine and comes with new and much better wireless network stack. Patching with Suspend2 and fbsplash is quite creepy but possible.

Flavour ‘ck-sources’ generally works. Other kernel flavours may work as well.

Warning: Kernels using Gentoo patches (tested all 2.6.17, 2.6.18, and 2.6.19 based) comes with a bug when running in SMP that may cause them panic under heavy load.

‘no-sources’ does not support disabling APIC so PowerNow! does not work in it (it works on the CPU but does not talk to kernel).

Note: When kernel has no information about PowerNow! the CPU changes its speed on its own and the kernel may become confused (writing information about losing ticks to dmesg). This makes no harm however.

‘beyond-sources’ that you can find at http://iphitus.loudas.com/beyond.html works perfectly in 2.6.20 version. They’re based on gentoo-patchset with bootsplash, ck-patchset, mm-patchset and some other various and exoteric patchsets.

Hibernation (suspend to disk)

I use Suspend2 for hibernating the kernel.

Warning: Hibernation causes kernel panic if NUMA is selected, so make sure NUMA is not selected:
Linux Kernel Configuration: NUMA not selected
Processor type and features  --->
    [ ] Non Uniform Memory Access (NUMA) Support

I also had problems with hibernation when RCU was preemptable, so I advise you to select classic way of handling RCU (only in kernels where RCU preemption is selectable):

Linux Kernel Configuration: Classic RCU
Processor type and features  --->
    RCU implementation type  --->
        (X) Classic RCU
        ( ) Preemptable RCU
Note: In order to use hibernation you need to remove the ‘nvidia’ from /etc/hibernate/blacklisted-modules
Warning: Hibernation is not supported with the stable nVidia proprietary driver but you should use the Beta driver anyway.

Suspend to RAM

Suspending to RAM works normally with 2.6.19-gentoo-r1 patched by suspend2-2.2.8.5-for-2.6.19-rc5.patch and with nvidia-drivers-1.0.9629. Also works with 2.6.20 and 2.6.20.1 vanilla kernels with proper Suspend2 patch.

On older kernels: It works but after turning the computer on the kernel freezes. I think this could be a problem with the dual core CPU that causes kernel panic on resume before the video is enabled, but I’m not sure. As far as I know, nVidia proprietary driver does support STR, so there should not be the problem there.

Standby

There is a problem that fan stays in the state it were when switching to standby (ie. on or off).

Warning: When the fan is off when you switch to standby, it won’t turn on even when temperature of the CPU raises above very high values. This may cause damage to the CPU or other components of the laptop such as the hard drive.

ACPI

General information about how to modify a DSDT and load it at startup can be found on ACPI/Fix common problems page.

This section mainly refers to the 0807 A6Tc BIOS. Anyone who would like to adapt the following patch may be interested by the original DSDT: it can be found at http://jm.xdns.eu/~jm/trac/browser/laptop/linux/dsdt-0807.dsl (Lcld)

Warning: The contents of a DSDT table may vary according to parameters such the amount of RAM. Therefore, you must rebuild your custom DSDT whenever the BIOS produces a different DSDT. Of course, you should always build it manually from '/sys/firmware/acpi/tables/DSDT', and never use a downloaded one.

Lid

ACPI daemon (‘acpid’) has on some laptops problems with lid. When your lid is closed, the ACPI generates lid close events repeatedly (reported on 0601 and maybe also on 0701 BIOSes; not reported on 0301 and 0401 BIOSes).

The problem is, in fact, not related to acpid, but to the BIOS. This can be fixed by modifying the DSDT.

You can get a fixed DSDT for BIOS 0702 at Linux ACPI project page. It also contains a fix for the fan problem mentioned below.

Warning: Use it at your own risk.
Note: This problem is also fixed in BIOS 0806: this version generates one event when closing the lid and another one when opening it, so it’s perfectly useful. For some models there’s no 0806 BIOS however.

Fixing DSDT errors

This section only describes what modifications must be made to a disassembled DSDT in order to recompile it.

Indeed, the quality of the BIOS is so terrible that the DSDT doesn't even decompile properly, but once DSDT errors are fixed, it will be possible to fix functional bugs like the fan keeping spinning at startup.

BIOS 0807 for A6Tc

Once disassembled, the first thing to do is to suppress the 4 lines at the beginning. They look like:

ACPI Error (psloop-0225): Found unknown opcode FD at AML address 0x68b494 offset 5C90, ignoring [20061109]
ACPI Error (psloop-0225): Found unknown opcode FD at AML address 0x68b543 offset 5D3F, ignoring [20061109]
ACPI Error (psloop-0225): Found unknown opcode FD at AML address 0x68b494 offset 5C90, ignoring [20061109]
ACPI Error (psloop-0225): Found unknown opcode FD at AML address 0x68b543 offset 5D3F, ignoring [20061109]

Next, here is a patch that fix all errors:

--- dsdt.dsl
+++ dsdt.dsl
@@ -3972,7 +3972,7 @@
                 {
                     Device (AMW0)
                     {
-                        Name (_HID, "*pnp0c14")
+                        Name (_HID, EisaId ("PNP0C14"))
                         Name (_UID, 0x00)
                         Name (_WDG, Buffer (0x3C)
                         {
@@ -6257,8 +6257,9 @@
             And (Local2, 0x80, Local2)
             If (LEqual (Local2, 0x00))
             {
-                Return (Stall (0x0F))
+                Return ()
             }
+            Stall (0x0F)
 
             Decrement (Local1)
             If (LEqual (Local1, 0x00))
@@ -6337,13 +6338,10 @@
                 0x05, 
                 0x00, 
                 0x00000000, 
-                0x000000FD
+                0x000000FD,
+                2
             }
         })
-        Zero
-        Zero
-        Zero
-        0x00000002
     }
 
     Scope (\_PR.CPU2)
@@ -6398,13 +6396,10 @@
                 0x05, 
                 0x00, 
                 0x00000000, 
-                0x000000FD
+                0x000000FD,
+                2
             }
         })
-        Zero
-        Zero
-        Zero
-        0x00000002
     }
 
     Name (A009, Buffer (0x33)

I think fixing warnings only to fix them is a bad idea, so we should stop here. The above patch even adds one warning (void return): I'd rather keep what Asus originally wrote (the error at that line was due to their compiler).

The fan

Several people running A6Tc reported that sometimes, the fan isn't stopped at startup if the CPU is cold enough. In that case, it keeps running as long as it does not exceed 60 ? (and, of course, go back under 55 ?). This problem has been reported on neither A6T nor A6M.

Code: Patch for BIOS 0807 (A6Tc)
--- dsdt.dsl
+++ dsdt.dsl
@@ -2670,6 +2670,7 @@
                     Name (CNNN, 0x01)
                     Name (LFAN, 0x72)
                     Name (MFID, 0x00)
+                    Name (INI, 0x01)
                     Method (KELV, 1, NotSerialized)
                     {
                         And (Arg0, 0xFF, Local0)
@@ -2942,6 +2943,12 @@
                                 }
                             }
 
+                            If (INI)
+                            {
+                                Store (0, INI)
+                                \_GPE._L02 ()
+                            }
+
                             Return (KELV (Local0))
                         }
                     }

First CPU temp. threshold

You may be interested in keeping your CPU at a lower temperature, by triggering the fan sooner. Your hard disk will appreciate. Here is a patch to lower the first threshold by 5/7 ?:

Code: Patch for BIOS 0807 (A6Tc)
--- dsdt.dsl
+++ dsdt.dsl
@@ -2593,7 +2593,7 @@
                 {
                     Name (HTTL, Package (0x08)
                     {
-                        0x39, 
+                        0x32, 
                         0x3F, 
                         0x44, 
                         0x49, 
@@ -2605,7 +2605,7 @@
                     Name (LTTL, Package (0x08)
                     {
                         0x00, 
-                        0x32, 
+                        0x2D, 
                         0x3A, 
                         0x3F, 
                         0x44, 

Function keys

Function keys can be handled by app-laptop/acpi4asus (can be used by user) or ACPI daemon (needs configuration from root).

Note: I wasn‘t able to compile the kernel module, because in kernel there already is one, so I emerged it, terminated emerge, and compiled and installed the ‘asus_acpid’ from ‘/var/tmp/portage/acpi4asus-0.30/work/acpi4asus-0.30/asus_acpid’.

Function keys for adjusting brightness and switching the LCD backlight works at their own.

You can adjust volume, toggle mute, and sleep you screen (Fn + F1) using the following script for ACPI daemon (x11-libs/xosd and KMix required):

File: /etc/acpi/default.sh
initialization stuff here

 export DISPLAY=:0
 PATH=$PATH:/usr/kde/3.5/bin
 su your_user_name -c 'xhost +local${DISPLAY}' >/dev/null 2>&1
 
 case "$group" in
     button)
         case "$action" in
             power)
                 your way of handling power button, eg. /usr/sbin/hibernate
                 ;;
             sleep|lid)
                 xset dpms force off
                 ;;
             *)  log_unhandled $* ;;
         esac
         ;;
     other ACPI events stuff here
     hotkey)
         case "$device" in
             ATKD)
                 case "$id" in
                     00000030)
                         killall osd_cat
                         dcop --user your_user_name kmix Mixer0 increaseVolume 1
                         osd_cat -d 1 -A center -p bottom -c blue -P `dcop --user your_user_name \
                                 kmix Mixer0 volume 1` -T Volume -b percentage &
                         ;;
                     00000031)
                         killall osd_cat
                         dcop --user your_user_name kmix Mixer0 decreaseVolume 1
                         osd_cat -d 1 -A center -p bottom -c blue -P `dcop --user your_user_name \
                                 kmix Mixer0 volume 1` -T Volume -b percentage &
                         ;;
                     00000032)
                         killall osd_cat
                         dcop --user your_user_name kmix Mixer0 toggleMute 0
                         if [ `dcop --user your_user_name kmix Mixer0 mute 0` = false ]; then
                             echo "Sound is on" | osd_cat -l 2 -d 1 -A center -p bottom -c blue &
                         else
                             echo "Sound is off" | osd_cat -l 2 -d 1 -A center -p bottom -c blue &
                         fi
                         ;;
                     *)  log_unhandled $* ;;
                 esac
                 ;;
             *)  log_unhandled $* ;;
         esac
         ;;
     *)  log_unhandled $* ;;
 esac

You can also map the other function buttons to useful applications:

File: /etc/acpi/default.sh


0000005c)
	su - your_user_name -c "export DISPLAY=:0.0;/usr/kde/3.5/bin/konsole --schema Linux --type su -  &"
	;;
00000050)
	su - your_user_name -c "export DISPLAY=:0.0;/usr/kde/3.5/bin/kcalc &"
	;;
00000051)
	su - your_user_name -c "export DISPLAY=:0.0;firefox &"
	;;
0000006a)
	su - your_user_name -c "export DISPLAY=:0.0;/usr/kde/3.5/bin/kdict &"
	;;

      

APPENDIX A: Kernel Command Line Examples

Note: These examples apply only to 64-bit kernels.
Code: Command line for 2.6.17 or older kernel
acpi=noirq pci=assign-busses reboot=cold pci=routeirq vga=792 quiet
Code: Command line for 2.6.18 kernel
acpi=noirq pci=assign-busses reboot=cold vga=792 quiet
Code: Command line for 2.6.19,2.6.20,2.6.21
pci=assign-busses apicmaintimer reboot=cold vga=792 quiet
Code: Command line for 2.6.22 or newer kernel
 vga=792 pci=assign-busses apicmaintimer acpi=noirq idle=poll

‘acpi=noirq’

The ‘acpi=noirq’ option is required for pre-2.6.19 kernels because they does not work with the APIC of this laptop. Since 2.6.19 it should be omitted because it may cause many BIOS incompatibilities. Without `acpi=noirq’ however 2.6.19 kernel after reboot (even with ‘restart=cold’ or ‘restart=cold,hard’ option) have some APIC timer problems at boot time (which result in kernel panic), since BIOS doesn't reinitialize the APIC timer properly (probably doesn't do it at all). Without this option you may also experience xorg lockups when you have full upstream bandiwidth usage for your ethernet interface (see discussion and bugs).

You can use ‘noapic’ option instead but it makes problems with USB when this is used (as far as I know the problem conserns all EHCI devices; it causes them not to be hotpluggable). Several people reported problem with USB at all when using the ‘noapic’ option.

‘pci=assign-busses’

The ‘pci=assign-busses’ option is somehow required. Without it you may experience system freezes or hardware malfunctions.

‘apicmaintimer’ or ‘apicpmtimer’

One of those options is higly recomended as without it you’ll encounter a lot of timer problems, especially without ‘noapic’ and ‘acpi=noirq’ options. It allows to run SMP without serious IRQ problems (should also help for uniprocesor timer problems described above). This options does not work with 2.6.21-rc2-mm1 ‘mm-sources’ but I discovered no IRQ problems on it.

Note: It seems that setting in the kernel the timer frequency at 250HZ (300hz not tested yet),as the help says on SMP-Cpu's, will end all apic-timer troubles

‘reboot=cold’ or ‘reboot=cold,hard’

The ‘reboot=cold’ option is not required, however it makes hardware initialization after reboot better. It is required without ‘noapic’ and ‘acpi=noirq’ options (otherwise you’ll need to turn your computer off, wait few seconds, and turn it on again when rebooting).

‘pci=routeirq’

The ‘pci=routeirq’ option is required on older kernels because they cannot handle IRQs correctly and therefore you may experience some hardware malfuntions (the one who experienced this: please specify this more exactly). It is necessary when booting Gentoo 2006.1 (or older) media. It is not necessary since kernel 2.6.18.

‘vga=792’

The ‘vga=792’ option tells kernel to boot in 1024×768×24 framebuffer. It is not native resolution (native resolution is 1280×800×24) but native resolution is not supported by framebuffer at the moment. It is not necessary.

‘idle=poll’

Added, as said in GPU section, because it seems to improve stability of the system.

‘quiet’

The ‘quiet’ option tells kernel not to print so much text about what it does. It is not necessary.

Other options

You may need to append other options such as ‘root’, ‘resume’ or ‘resume2’, or ‘theme’. Please refer to Gentoo Handbook for them.

APPENDIX B: Keycodes and ACPI Events Generated by Special Keys

Key Name Key Shortcut Keycode (xev) ACPI Event
Zz Fn + F1 none button/sleep SLPB 00000080
Radio Tower Fn + F2 none hotkey ATKD 00000088 (works with acpi4asus-0.42-cvs and BIOS ver. 0806 on A6Tc)
Filled Sun Fn + F5 none hotkey ATKD 0000001x*
Open Sun Fn + F6 none hotkey ATKD 0000002x*
LCD Fn + F7 none hotkey ATKD 0000003x+
LCD/Monitor Fn + F8 none hotkey ATKD 00000061
Speakers Fn + F10 none hotkey ATKD 00000032
Speaker Down Fn + F11 none hotkey ATKD 00000031
Speaker Up Fn + F12 none hotkey ATKD 00000030
Power4 Gear none none hotkey ATKD 0000005c
Email none none hotkey ATKD 00000050
Internet none none hotkey ATKD 00000051
Padlock none none hotkey ATKD 0000006a
Power none none button/power PWRF 00000080
CD disc none none none
Rewind none 144 none
Fast Forward none 153 none
Stop none 164 hotkey ATKD 00000043
Play/Pause none 162 hotkey ATKD 00000045
none Fn + 1 none hotkey ATKD 00000052
none Fn + 2 none hotkey ATKD 00000053
none Fn + 3 none hotkey ATKD 00000054
none Fn + 4 none hotkey ATKD 00000055
none Fn + 5 none hotkey ATKD 00000056

* ‘x’ is from ‘0’ to ‘f’, where ‘0’ is for darkest, ‘f’ for brightest.

+ ‘x’ is ‘3’ when LCD is turned on, ‘4’ when off.

Links

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

Last modified: Sun, 14 Sep 2008 01:44:00 +1000 Hits: 30,591

Created by NickStallman.net, Luxury Homes Australia
Real estate agents should list their apartments, townhouses and units in Australia.