Gentoo Wiki


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



The M6VA is a compact desktop replacement laptop, marketed by Asus as a barebones system (i.e., without RAM, HDD or CPU). It is also sold as the Z70VA, and since in fact that's the model I own, I'll refer to this laptop throughout as the Z70VA.

The Z70VA is built around Intel's Sonoma platform, comprising a Pentium M CPU, a 915PM chipset, and an 2915ABG wireless network interface. Appearance-wise, it is identical to the earlier Z70V model, but internally it sports an on-board ATI Mobility Radeon X700 graphics card with 128Mb of dedicated video RAM. With the laptop's immense 1680 x 1050 LCD panel, the graphics card makes the Z70VA a great gaming machine. All in all, I've been extremely satisfied with running Gentoo Linux on this laptop.

This guide documents the steps I've found necessary to get each hardware component functioning properly on the Z70VA. Please note that the guide shouldn't be used as a substitute for the ordinary Gentoo installation and usage documentation; it serves a different purpose. Also note that some of the laptop components (esp. the modem) require a recent (>=2.6.16) kernel to function properly, so bear that in mind if you're installing/running an older system.


The hardware components of the Z70VA, and their status under Linux, are summarized in the following table:

Component Model Status Notes
Motherboard Intel Pentium M / DDR2-533 / PCI-E works
IDE Drive(s) Intel ICH6 IDE works Requires boot parameter to support UDMA66 and above
DVD/CD-RW Unknown works
Ethernet Marvell 88E8001 Gigabit works
Wireless Intel PRO/Wireless 2915ABG works
Sound Intel High Definition Audio works
Graphics ATI Mobility X700 works Requires special xorg.conf parameters to prevent lockups
PC Card Ricoh RL5C476 II works
USB Intel ICH6 UHCI works
USB 2.0 Intel ICH6 EHCI works
Firewire Ricoh R5C552 IEEE 1394 works
Modem Conexant HSF Softmodem works Requires commercial/free Linuxant driver
Card Reader Ricoh R5C552 SD/SDIO/MMC/MS/MSPro works Works out of the box with latest kernels
Sensors National Semiconductor LM85 works Requires Sleep States disabled for kernels 2.6.18 and 2.6.19
ACPI National Semiconductor LM85 works Requires kernel patch to support Asus extras
Suspend-to-Disk/RAM N/A works Requires suspend2-sources kernel
Media Bay N/A works
CD Buttons N/A works
Code: lspci
00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 04)
00:01.0 PCI bridge: Intel Corporation Mobile 915GM/PM Express PCI Express Root Port (rev 04)
00:1b.0 Audio device: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (rev 04)
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 04)
00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 04)
00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 04)
00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 04)
00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 04)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d4)
00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 04)
00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 04)
00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 04)
01:00.0 VGA compatible controller: ATI Technologies Inc M26 [Radeon Mobility X700]
02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 13)
02:01.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b3)
02:01.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 08)
02:01.2 Class 0805: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 17)
02:01.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 08)
02:01.4 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 03)
02:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG Network Connection (rev 05)



The Z70VA is built around the second-generation Dothan series of Pentium M CPUs, sporting a huge 2Mb of low-latency level-2 cache. To enable Pentium M optimizations during kernel compilation, use the following kernel setting:

Linux Kernel Configuration: Network controller
Processor type and features  --->
   Processor Family (Pentium M)  --->

Dothan CPUs supports frequency/voltage scaling, which can have a significant effect on battery life. The following kernel settings enable CPU frequency/voltage scaling.

Linux Kernel Configuration: Network controller
Power management options (ACPI, APM)  --->
   CPU Frequency scaling  --->
      [*] CPU Frequency scaling
      <*> Intel Enhanced SpeedStep
      [*]   Use ACPI tables to decode valid frequency/voltage pairs

The ACPI tables option is to allow the kernel to figure out what frequency and voltage pairs the CPU supports. This information isn't hardwired into the kernel because there are actually four different Dothan sub-variants, each having different frequency/voltage configurations. Note that to actually change CPU frequency, you'll need to fiddle around with some virtual files. For instance, to set the frequency down to 800 MHz:

echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

Alternatively, you can install a program to automatically manage the CPU frequency. There are a variety available; cpufreqd works very well. CPU frequency management is discussed in greater depth at the Gentoo Power Management Guide.


The Z70VA supports up to 2Gb of DDR2-533 RAM in two slots, one under the keyboard and one accessible via the underside of the machine. To use the full 2Gb, you will need to enable HIGHMEM using the following kernel settings:

Linux Kernel Configuration: RAM
Processor type and features  --->
        High Memory Support (4GB)  --->
   [*] Allocate 3rd-level pagetables from highmem

PCI Express

The Z70VA is a PCI Express-based system. To enable PCI Express support, use the following kernel setting:

Linux Kernel Configuration: PCI
Bus Options (PCI, PCMCIA, EISA, MCA, ISA)  --->
   [*] PCI Express support

IDE Drives

The Z70VA has a single IDE channel, supporting a primary hard drive, and either a secondary hard drive, or a DVD/CR-RW drive. These devices require the following kernel settings:

Linux Kernel Configuration: Hard Drive
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
      <*>      SCSI emulation support
      <*>      PCI IDE chipset support
      [*]           Generic PCI bus-master DMA support
      [*]           Use PCI DMA bgy default when available
      [*]           Intel PIIXn chipsets support

However, even with these parameters, the maximum transfer mode that can be set using hdparm is only UDMA33. Usually, the kernel won't enable speeds above UDMA33 unless it detects that the IDE controller is connected to drives using an 80-wire cable. However, the Z70VA erroneously reports that a 40-wire cable is being used - hence the need for this boot paramter. Getting beyond this limit, up to UDMA100, requires a kernel boot parameter:



The primary hard drive identifies itself as a Toshiba MK8032GAX, but since the Z70VA is a barebones system, it could potentially be assembled with any 2.5" HDD. The drive shows up as /dev/hda. With the kernel parameter above, I can set the drive transfer mode to UDMA100, which gives an average buffered disk read speed of 31 MB/s.

The secondary hard drive, when installed in the media bay, shows up as /dev/hdb. I obtain similar read speeds as the primary HDD.


The DVD/CD-RW drive sits in the media bay, and when installed shows up as /dev/hdb. It identifies itself as a TSST Corp. TS-L532U. So far, I've confirmed that it plays multi-region DVDs and writes single-layer DVDs without any problem. I don't have any rewritable or dual-layer media, so I haven't been able to confirm that functionality yet.


See this guide.


To enable support for the Intel High Definition audio controller, use the following kernel settings:

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

Then, follow the Gentoo Linux ALSA Guide to set things up properly.

PC Card

See this guide.


The Z70VA has four external USB sockets, supporting both USB 1 and USB 2 devices. To enable support for USB, use the following kernel settings:

Linux Kernel Configuration: Hard Drive
Device Drivers  --->
   USB support  --->
      [*] Support for Host-side USB
      [*] USB device filesystem
      <*> EHCI HCD (USB 2.0) support
      <*> UHCI HCD (most Intel and VIA) support


The modem is supported by the hsfmodem. See this guide.


The Z70VA contains a National Semiconductor LM85 hardware sensor, that can be used to monitor temperatures and fan speeds. To enable sensors support, enable the following kernel settings:

Linux Kernel Configuration: Sensors
Device Drivers  --->
   I2C support  --->
      <M> I2C support
      <M>   I2C device interface
            I2C Hardware Bus support  --->
               <M> Intel 82801 (ICH)
            Miscellaneous I2C Chip support  -->    
               <M> EEPROM reader  
   Hardware Monitoring support  --->
      <M> Hardware Monitoring support
      <M> National Semiconductor LM85 and compatibles

Then, install the lm_sensors package and configure it.

# emerge lm_sensors
# sensors-detect

Add lm_sensors to your default runlevel and you should be all set.

# rc-update add lm_sensors default

Note: The default /etc/sensors.conf configuration file created by sensors.conf may require editing to fix a problem. If you find that the kernel ACPI daemon, kacpid, is taking up huge amounts of CPU time, look for the following line.
File: /etc/sensors.conf
chip "lm85c-*" "adm1027-*" "adt7463-*" "lm85-*" "lm85b-*"

Look for the first occurrence of the following line after the above line and comment it out.

File: /etc/sensors.conf
#set in1_min

Note: Kernels 2.6.18 and 2.6.19 require Sleep States to be disabled in the kernel for sensors to work correctly.



Coming from my previous laptop (an Acer Travelmate 4502), I was refreshingly surprised to find that most of the ACPI functionality in the Z70VA -- especially the stuff related to power management -- worked out of the box with no nasty hacking required. To enable ACPI support, use the following kernel settings:

Linux Kernel Configuration: ACPI
Power management options (ACPI, APM)  --->
   ACPI (Advanced Configuration and Power Interface) Support  --->
      [*] ACPI Support
      [*]   Sleep States
      <*>   AC Adapter
      <*>   Battery
      <*>   Button
      <*>   Video
      <*>   Fan
      <*>   Processor
      <*>     Thermal Zone
      <*>     ASUS/Medion Laptop Extras


The primary battery shows up in the /proc/acpi/battery/BAT0/ directory, and the secondary battery (if installed in the media bay) in /proc/acpi/battery/BAT1/. All modern battery-monitoring applications are able to parse the info and state files in these directories, and extract the required information.

Unfortunately, however, the alarm file is unsupported by the Z70VA, because the _BTP method is missing from the laptop's differentiated system definition table (DSDT). What this means is that it's not possible to set a low-battery threshold and have an ACPI event automatically generated when this threshold is reached. Instead, you'll have to use a battery-monitoring script. I find that the batteryd script from the Gentoo suspend2 Wiki to be very useful; this script triggers a suspend-to-disk when the battery is low.


ACPI events are generated both by changes in the power status (e.g., on/off AC power), and by certain key presses. These events can be processed using the acpid daemon, to trigger various management tasks. The event strings are as follows (this list isn't exhaustive):

Event StringEvent
ac_adapter AC0 00000080 00000001On AC power
ac_adapter AC0 00000080 00000000Off AC power
button/lid LID 00000080 NNNNNNNNLid open/shut
button/sleep SLPB 00000080 NNNNNNNNSleep button
button/power PWRF 00000080 NNNNNNNNPower button
hotkey ATKD 00000061 NNNNNNNNLCD/External monitor button
hotkey ATKD 00000034 NNNNNNNNLCD on/off key (off)
hotkey ATKD 00000033 NNNNNNNNLCD on/off key (on)
hotkey ATKD 00000032 NNNNNNNNMute/unmute key
hotkey ATKD 00000031 NNNNNNNNVolume down key
hotkey ATKD 00000030 NNNNNNNNVolume up key
hotkey ATKD 0000004c NNNNNNNNCD power key

Here, NNNNNNNN indicates a counter; each time the indicated event is generated, this counter ticks up by one.

Asus Extras


I've been very sucessful using Nigel Cunningham's suspend2 functionality to enable the laptop to suspend-to-disk (STR; also known as hibernate). The patches for suspend2 haven't made it into mainstream kernels yet, but fortunately Gentoo provides the suspen2-sources ebuild, which contains pre-patched kernel. To enable suspend2 in one such kernel, use the following kernel settings:

Linux Kernel Configuration: Suspend
Power management options (ACPI, APM)  --->
   [*] Suspend2  --->
      [*] Swap Writer

You will also need the hibernation scripts that come with suspend2.

# emerge hibernate-script

Media Bay

The media bay in the Z70VA houses either the DVD/CD-RW drive, a second hard drive, or a second battery. I've tested all of these, and they work flawlessly without any exta effort. The battery shows up as BAT1 in /proc/acpi/battety, while the drives both show up as /dev/hdb. You might want to use udev to create a device-dependent symlink; the following file will place appropriate symlinks in the /dev/bay directory:

File: /etc/udev/rules.d/10-local-bay.rules
# Bay devices
BUS=="ide", DRIVER=="ide-cdrom", KERNEL=="hdb", SYMLINK="bay/cdrom"
BUS=="ide", DRIVER=="ide-disk", KERNEL=="hdb*", SYMLINK="bay/disk%n"

Run the following udevstart after creating this file.

# udevstart

CD Buttons


At the side of the laptop, there are buttons that control playback on the CD player when the laptop is off, and that can be configured to control your favorite media player (e.g., xmms) when the laptop is on. These buttons create the following keycodes:

Button Keycode
Rewind 144
Stop 164
Play/Pause 162
Forward 153

To use these buttons in X, you'll have to bind them to a keysym, and then bind the keysym to an action. The first step is done using an .Xmodmap file, which should be placed in your home directory:

File: ~/.Xmodmap
keycode 144 = KP_F1
keycode 164 = KP_F2
keycode 162 = KP_F3
keycode 153 = KP_F4

Here, I've bound the keys to the keypad function keysyms, which are unused on modern keyboards. For the next step, we need a program that will execute commands when these keysyms are received. I myself use xbindkeys, with the following configuration file:

File: ~/.xbindkeysrc
"xmms --rew"
"xmms --stop"
"xmms --play-pause"
"xmms --fwd"

This allows me both to start xmms, and to control it when it's running.

CD Power Switch

Underneath the CD playback buttons is a slider-type power button, used to switch on the CD player when the laptop is off (a nice feature). When pressed, this button creates ACPI hotkey events with a value of 4c, which can be processed using acpid (see the above section on ACPI).

Retrieved from ""

Last modified: Thu, 14 Aug 2008 04:54:00 +0000 Hits: 12,273