Asus M6Va
From Gentoo Linux Wiki
| Laptops • TV Tuner Cards • Wireless • Servers • Storage • Other Hardware • Motherboards • Related |
Contents |
[edit] Introduction
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.
[edit] Hardware
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) |
[edit] Motherboard
[edit] CPU
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.
[edit] RAM
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
|
[edit] 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 |
[edit] 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:
ide0=ata66
[edit] HDD
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.
[edit] DVD/CD-RW
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.
[edit] Ethernet
See this guide.
[edit] Sound
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.
[edit] PC Card
See this guide.
[edit] USB
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
|
[edit] Modem
The modem is supported by the hsfmodem. See this guide.
[edit] Sensors
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
| 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 |
[edit] ACPI
[edit] General
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
|
[edit] Battery
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.
[edit] Events
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 String | Event |
| ac_adapter AC0 00000080 00000001 | On AC power |
| ac_adapter AC0 00000080 00000000 | Off AC power |
| button/lid LID 00000080 NNNNNNNN | Lid open/shut |
| button/sleep SLPB 00000080 NNNNNNNN | Sleep button |
| button/power PWRF 00000080 NNNNNNNN | Power button |
| hotkey ATKD 00000061 NNNNNNNN | LCD/External monitor button |
| hotkey ATKD 00000034 NNNNNNNN | LCD on/off key (off) |
| hotkey ATKD 00000033 NNNNNNNN | LCD on/off key (on) |
| hotkey ATKD 00000032 NNNNNNNN | Mute/unmute key |
| hotkey ATKD 00000031 NNNNNNNN | Volume down key |
| hotkey ATKD 00000030 NNNNNNNN | Volume up key |
| hotkey ATKD 0000004c NNNNNNNN | CD power key |
Here, NNNNNNNN indicates a counter; each time the indicated event is generated, this counter ticks up by one.
[edit] Asus Extras
[edit] Suspend-to-Disk/RAM
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
[edit] 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
[edit] CD Buttons
[edit] Playback
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" KP_F1 "xmms --stop" KP_F2 "xmms --play-pause" KP_F3 "xmms --fwd" KP_F4 |
This allows me both to start xmms, and to control it when it's running.
[edit] 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).
