Gentoo Wiki


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



What works completely:

What doesn't work:

This is by far the best experience I've had installing Linux on a <1 month-old laptop model. The hardware is better supported in Linux than in Vista! (e.g. two-finger scrolling on the touchpad). This laptop rocks!

-- Tapted 2008-03-31

Asus M50SN is a very similar model with more more RAM a bigger HDD and Blu-Ray, so probably has a similar level of support.


The audio card is an Intel High Definition Audio card and works very well with the snd-hda-intel kernel module, however you must add the following to /etc/modprobe.d/alsa or when you plug in headphones, the main speakers will not mute.

Code: /etc/modprobe.d/alsa
 options snd-hda-intel model=haier-w66

However, alsa-drivers <= 1.0.15 (gentoo-sources <= 2.6.24) do not have a switch for controlling the headphone jack. If you can't wait, download >= 1.0.16 alsa-drivers from (, extract, do ./configure --with-cards=hda-intel then

Code: Manual alsa-drivers install
sudo make modules-install
depmod -a
/etc/init.d/alsasound restart

Then a "headphone" switch should show up in alsamixer.

Code: lspci
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)

Code: lsmod
snd_rtctimer            3744  1
snd_seq                49472  1
snd_seq_device          7316  1 snd_seq
snd_pcm_oss            40096  0
snd_mixer_oss          15296  1 snd_pcm_oss
snd_hda_intel         330468  1
snd_pcm                74376  2 snd_pcm_oss,snd_hda_intel
snd_timer              20552  3 snd_rtctimer,snd_seq,snd_pcm
snd                    51304  10 snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_hda_intel,snd_pcm,snd_timer
snd_page_alloc          8656  2 snd_hda_intel,snd_pcm

The driver can be located in the kernel (I tested only from 2.6.23):

Linux Kernel Configuration: ALSA driver for Intel High Definition Audio
Device Drivers  --->
    Sound  --->
        <*> Sound card support
            Advanced Linux Sound Architecture  --->
                <M> Advanced Linux Sound Architecture
                <M>   Sequencer support
                <M>     Sequencer dummy client
                <M>   OSS Mixer API
                <M>   Sequencer support
                <M>     Sequencer dummy client
                <M>   OSS Mixer API
                <M>   OSS PCM (digital audio) API
                [*]     OSS PCM (digital audio) API - Include plugin system
                <M>   RTC Timer support
                [*]     Use RTC as default sequencer timer
                PCI devices  --->
                    <M> Intel HD Audio


The video card is a nVidia GeForce 9500M GS that work very well with uvesafb (from the kernel) and with the proprietary drivers x11-drivers/nvidia-drivers version 169.09-r1 or greater.

Code: lspci
01:00.0 VGA compatible controller: nVidia Corporation Unknown device 0405 (rev a1)
Linux Kernel Configuration: uvesafb and nVidia drivers
 Device Drivers  --->
     Graphics support  --->
         <*> Support for frame buffer devices
         <*>   Userspace VESA VGA graphics support
         < >   nVidia Framebuffer Support
         < >   nVidia Riva support
         Console display driver support  --->
             <*> Framebuffer Console support
             [*]   Support for the Framebuffer Console Decorations

Then your kernel line in grub.conf might look like:

kernel /vmlinuz root=/dev/sda7 video=uvesafb:1440x900-32@60,mtrr:3,ywrap
Warning: Be sure that nVidia Framebuffer and nVidia Riva supports are disabled, otherwise the proprietary drivers will not work correctly!

SATA Controller

The SATA Controller is an Intel that work with the ahci kernel module. I preferred to built this one directly into the kernel instead to build it as module.

Code: lspci
00:1f.2 SATA controller: Intel Corporation Mobile SATA AHCI Controller (rev 03)
Linux Kernel Configuration: Intel SATA AHCI Controller
 Device Drivers  --->
     <*> Serial ATA (prod) and Parallel ATA (experimental) drivers  --->
         <*>   AHCI SATA support

Ethernet controller

See this guide.

Wireless controller

See this guide.

Fingerprint reader

The fingerprint reader is a USB device that are recognized as AuthenTec AES1610 from the libfprint.

Code: lsusb
Bus 002 Device 004: ID 08ff:1600 AuthenTec, Inc.

Unfortunately, libfprint and its tools is not in portage, but we need an overlay that can be installed using layman.

After you have emerged layman, give the command

layman --add wschlich-testing

then emerge libfprint. You can emerge fprint_demo to have an utility for testing the fingerprint reader and pam_fprint to use it as PAM module. (I only tested it as PAM, but for now I don't use it as unique PAM module. Moreover it doesn't work with KDE for now.)

USB controller

The USB controller is used through the ehci_hcd and uhci_hcd kernel modules.

Code: lspci
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Contoller #4 (rev 03)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 03)

There are no need for special configurations.

MMC/SD Card reader

The MMC/SD Card reader works perfectly with the kernel modules mmc_core and sdhci without any special configuration.

Code: lspci
08:01.1 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 22)
08:01.2 System peripheral: Ricoh Co Ltd Unknown device 0843 (rev 12)
08:01.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 12)
08:01.4 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 12)


The Firewire controller works with the kernel modules ohci1394 and ieee1394.

Code: lspci
08:01.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 05)

I tested it only with a DV Camera and the dvgrab software. I never tested it with an external HD box.


The Bluetooth is a normal bluetooth USB adapter that can be connected/disconnected using the switch and the Fn+F2 hotkey and that works perfectly with the kernel modules bluetooth, hidp, rfcomm and l2cap.

Code: lsusb
Bus 001 Device 003: ID 0b05:1712 ASUSTek Computer, Inc.


The webcam is a Syntek that until recently was a pain to get going. But The M50SV has a model that supports the USB Video Class, so

echo 'media-video/linux-uvc ~amd64' >> /etc/portage/package.keywords
emerge linux-uvc
modprobe uvcvideo
mplayer tv:// -tv driver=v4l2:width=320:height=240:fps=25:outfmt=yuy2:device=/dev/video0 

And see if you get some action.

Code: lsusb
Bus 002 Device 002: ID 174f:5a31 Syntek 

ACPI controller

Hotkeys come through ACPI, which is sometimes good, sometimes bad.

emerge laptop-mode-tools
/etc/init.d/laptop_mode start
rc-update add laptop_mode default

This installs handlers for lid switch, battery and ac-adapter that work well. Gnome-power-manager gets the LCD on/off button.

I've written ACPI actions and events for the brightness buttons, volume, mute and music control (play/pause/stop/next/prev). The brightness action checks whether the light sensor is enabled and adjusts the correct brightness level appropriately. I've also included a light_sensor init script in the tarball to remember the brightness state from the last reboot. Volume and mute use alsactl. The media keys try to use mpc if mpd is running or audtool if audacious is running -- you want to run these as a user, so make sure you edit /etc/acpi/actions/ and put the user you want them to run as in. These also need wrapper scripts that are installed in /usr/local/bin.

Code: tar -ztf m50sv_acpi.tar.gz

LCD auto-brightness light sensor

This works! Don't use the acpi4asus ebuild OR the old ACPI_ASUS. kernel >= 2.6.24 have an ASUS_LAPTOP module, and udev should autoload it as asus_laptop. Make sure you disable the old ACPI_ASUS or ASUS_LAPTOP won't show up (Depends on !ACPI_ASUS):

Symbol: ASUS_LAPTOP [=m]
 Prompt: Asus Laptop Extras (EXPERIMENTAL) 
  Defined at drivers/misc/Kconfig:95
    -> Device Drivers 
      -> Misc devices (MISC_DEVICES [=y])
        <M>   Asus Laptop Extras (EXPERIMENTAL)   

Currently however, when udev loads the module, the light sensor gets enabled and gets reset to the lowest setting in /sys/devices/platform/asus-laptop/ls_level . This will make your screen go dark on boot.

There are some scripts to regulate the level on boot (and remember the state) in the m50sv_acpi.tar.gz tarball linked above AND to link up the hotkeys to alter the appropriate brightness level, depending whether the light sensor enable switch is on or not.

The you should

rc-update add light_sensor boot

So that the init script gets called shortly after udev does coldplugging (which will fade your screen to dark).

Retrieved from ""

Last modified: Wed, 27 Aug 2008 20:38:00 +0000 Hits: 4,231