HARDWARE Asus M50SV
From Gentoo Linux Wiki
| Laptops • TV Tuner Cards • Wireless • Servers • Storage • Other Hardware • Motherboards • Related |
Contents |
[edit] Summary
What works completely:
- Audio
- Video
- SATA Controller
- Ethernet controller
- Wireless controller
- Fingerprint reader
- USB controller
- MMC/SD Card reader
- Firewire
- Bluethooth
- Webcam
- ACPI controller (acpid actions and events linked below for brighness, volume, mute and media keys)
- LCD auto-brightness light sensor (with the asus-laptop kernel module and a light_sensor init script linked below)
- Touchpad (pointing works well and two-finger scrolling etc. works with x11-drivers/synaptics)
- New mail and touchpad enable LEDs (with the in-tree asus-laptop kernel module)
What doesn't work:
- Dual-mode Touchpad (No LED switch for the light under the touchpad as yet)
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.
[edit] Audio
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 http://www.alsa-project.org/ (ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.16.tar.bz2), extract, do ./configure --with-cards=hda-intel then
| Code: Manual alsa-drivers install |
make 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
|
[edit] Video
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
[edit] 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
|
[edit] Ethernet controller
The ethernet controller is a Marvell 88E8055 PCI-E Gigabit Ethernet Controller that works with the sky2 kernel module.
| Code: lspci |
02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8055 PCI-E Gigabit Ethernet Controller (rev 13) |
| Linux Kernel Configuration: Marvell 88E8055 PCI-E Gigabit Ethernet Controller |
Device Drivers --->
[*] Network device support --->
[*] Ethernet (1000 Mbit) --->
<M> SysKonnect Yukon2 support
|
[edit] Wireless controller
The wireless ethernet controller is unrecognized by the lspci command, but is a Intel Wireless 4965 PCI-Express card that works with the iwlwifi driver.
| Code: lspci |
07:00.0 Network controller: Intel Corporation Unknown device 4229 (rev 61) |
| Linux Kernel Configuration: Intel Wireless 4965 PCI-Express card and 802.11 |
Device Drivers --->
[*] Network device support --->
Wireless LAN --->
[*] Wireless LAN (IEEE 802.11)
|
The driver is not present in kernel 2.6.23 and should be installed with the net-wireless/iwlwifi that is masked on portage, but that works well.
| Code: /etc/portage/package.keyword |
=net-wireless/iwlwifi-1.2.23 |
| Code: /etc/portage/package.use |
net-wireless/iwlwifi ipw4965 |
[edit] 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
| Code: |
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.)
[edit] 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.
[edit] 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) |
[edit] Firewire
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.
[edit] Bluetooth
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. |
[edit] Webcam
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 |
[edit] 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/musickeys.sh and put the user you want them to run as in. These also need wrapper scripts that are installed in /usr/local/bin.
http://www.it.usyd.edu.au/~tapted/files/m50sv_acpi.tar.gz
| Code: tar -ztf m50sv_acpi.tar.gz |
/etc/acpi/events/brightness /etc/acpi/events/hotkbtn0 /etc/acpi/events/ignore /etc/acpi/events/musickeys /etc/acpi/events/mute /etc/acpi/events/touchpad /etc/acpi/events/vol_up /etc/acpi/events/vol_down /etc/acpi/actions/brightness.sh /etc/acpi/actions/hotk0.sh /etc/acpi/actions/ignore.sh /etc/acpi/actions/musickeys.sh /etc/acpi/actions/mute.sh /etc/acpi/actions/swtouchpad.sh /etc/acpi/actions/vol.sh /usr/local/bin/mpc /usr/local/bin/audtool /etc/init.d/light_sensor /etc/conf.d/light_sensor |
[edit] 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
Depends on: MISC_DEVICES && X86 && ACPI && EXPERIMENTAL && !ACPI_ASUS
Location:
-> 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).
