site map · index a-z · search   


· Today's Best Promo Codes.

Linux on the ASUS M2400N/M2400Ne Laptop

Recently I had some mid-level complications configuring Debian Woody on a new ASUS M2400N laptop. I am posting this in hope some will find it useful, with all the usual disclaimers. I did not hurt my laptop (yet).

New CPU Revision

ASUS now ships this Centrino laptop based on the Dothan CPU. The machine is now named for example M2420NEB, the downloadable firmware for BIOS upgrades is called M2Ne (current version: 0203). See below for more information.

Changes in the M2400Ne Series

Mostly two things need new/updated drivers to run this machine properly:

  • Updated driver for cpufreq. The current driver in 2.6.[78] is not aware of the B0 stepping of the Dothan CPU, so these times you need this updated speedstep-centrino driver. Copy this file to <src>/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c and recompile the kernel.
    You also should include the latest release of the ACPI patch from 20040715 which fixes a problem when the speedstep module tries to get data from the DSDT.
  • New driver for wireless LAN: IPW2200. Luckily, the current version 0.4 of the free driver from Intel seems to work on this machine. Do not forget to download the firmware!

The rest seems to work as usual with kernel 2.6.7.

Here is a (maybe incomplete) list of model names, for which this instructions apply: M2420NEB, M2420NEBH, M2420NEBP, M2442NB, M2442NBH, M2442NBP, M2442NW, M2442NWH, M2442NWP, M2443NBP, M2443NWP, M2456NW, M2456NWH, M2456NWP. Note: All machines with an "E" in the suffix come with Pentium-M Dothan and 54Mbit WLAN, the others are equipped with Pentium-M Banias and 11Mbit WLAN.

The Good

  • XFree 4.3 works out of the box;
  • touchpad works;
  • switching to VGA output works (but see below);
  • both DMA and ACPI can work together after some effort (see below).

The Bad

  • Lucent AMR softmodem does not work. I tried slmodem (all versions), but it does not support the ICH4 chipset found on the ASUS. I am sending this from Windows (aargh).
    Addendum: the softmodem works, but see below in the modem section.


ASUS has released a new BIOS (M2N0208A), grab it from here. Some instructions can be found on nenie.org. You also might consider to use FreeDos and the utility provided by ASUS.


1) install plain woody. X will not work, because woody carries XFree 4.1, which does not support the i855GM graphics chip on the Centrino platform.

2) get linux-2.4.21.tar.bz2 from Linux Kernel, patch it with acpi-20030619-2.4.21.diff and acpi-dsdt-initrd-patch-v0.3-2.4.21.diff , in that order.
Addendum: you do not need the acpi-dsdt-initrd-patch anymore and you can forget about the whole initrd process if you use a recent version of the acpi patch, that is e.g. release 20040126. and you should also install at least kernel 2.4.26 or 2.6.7 due to some security issues with older kernels.

3) when configuring the kernel, answer Y (not M) to 'ramdisk support' (CONFIG_BLK_DEV_RAM) and 'initial ramdisk support' (CONFIG_BLK_DEV_INITRD) in the section 'Block Devices'. Then go to 'General Setup--->ACPI Support', answer Y to 'ACPI Support' and 'Read DSDT from initrd', then M to everything from 'AC Adapter' to 'ASUS Laptop Extras'.

4) compile/install kernel/modules and reboot.

5) Now do cat /proc/acpi/dsdt > dsdt.aml. This will give a binary file, which needs to be disassembled by Intel's iasl compiler. The version of iasl on Intel's site is compiled against glibc 2.3, while Woody has glibc 2.2.5. Use iasl-linux-20021002.tar.gz, which luckily still exists on the net. So: $ iasl -d dsdt.aml > ASUS-M2400N.asl will give you a very long file ASUS-M2400N.asl, which you need to repair a little: comment out the block

Scope (\_GPE)
     Method (_L00, 0, Serialized)
	 \_TZ.TCHG ()
	 Notify (\_TZ.THRM, 0x80)

using /*....*/ (like in C), or just erase it. Now compile the changed file: $ iasl -on ASUS-M2400N.asl, which will produce a file DSDT.aml, after some warnings, which you can ignore (if there are errors, something is wrong, and don't ask me what).

6) Put the file DSDT.aml somewhere where you can find it :), and add a line initrd=... pointing to it in the image section of lilo.conf, viz.


This assumes you do not have an initrd line already, for some other purpose. If you do, and it reads 'initrd=/path/to/myinitrdfile' (say), do $ echo "INITRDDSDT123DSDT123" >> /path/to/myinitrdfile $ cat DSDT.aml >> /path/to/myinitrdfile

7) execute /sbin/lilo, and reboot. If all went well, you will find something like the following lines:

    Looking for DSDT in initrd ... found at beginning!
    ACPI-0292: *** Info: Table [DSDT] replaced by host OS

when you execute dmesg.

8) Check that DMA works: $ hdparm -t /dev/hda
should give a transfer rate of about 20 MB/second. It happened to me once that it did not work, but it did after a reboot - I never understood what happened.

9) Check that ACPI works: put the lines


into /etc/modules, and look for the module messages in dmesg.

10) Now for X. There is a woody backport of XFree 4.3 on the net. Get it and install everything. There will be some circular dependency problems, which you may need to break by force.

11) Install the synaptics package. Follow the instructions to patch the XF86Config-4 file. There is only one gotcha: the touchpad section contains the option CorePointer, if you want to use the USB mouse as well, the corresponding option in the mouse section must read SendCoreEvents, not CorePointer. Use the i810 driver, without the framebuffer.


  1. I am not sure how much ACPI really works. For example, I have not been able to step the processor manually. The battery monitor by kdelaptop works, and power really goes down, which is enough for me.
  2. The erased lines from the ASUS-M2400N.asl file refer to reporting some thermal events. I don't know how important this is. The laptop seems to work normally, and the fan turns itself on during lengthy compilations or calculations, then off again. If those lines are left in, keventd will eat up all the cpu time.
  3. Patching the kernel as above results in some problem with the agpgart module, from dmesg:
       Linux agpgart interface v0.99 (c) Jeff Hartmann
       agpgart: Maximum main memory to use for agp memory: 431M
       agpgart: no supported devices found.
       [drm:drm_init] ERROR Cannot initialize the agpgart module.
    But X11 still works, so I did not investigate further.
  4. To be able to switch between the LCD screen and the CRT screen on the VGA output, you need to enable it in the BIOS: there is a 'Display' section, with options for LCD only, CRT only, and both. This is set to LCD only by default, but Windows has some sort of workaround, so the Fn-F8 sequence will work with Microsoft-Windows, but not Linux, until you change the BIOS setting to both.


To get gimp and xft going, SuSE 9.1 and 9.2 requires you to enter the size of the display: 287x215 mm (X/Y).


Could not get the internal modem to work by trying all available drivers [SH].
Addendum: It works with a slightly patched version 2.7.10 of slmodem, available from SmartLink (non-free, without cost). The trick is to modify line 75 of the file amrmo_init.c by changing the value of PCI_DEVICE_ID_ICH3 from 0x2486 to 0x24C6. Yes, there already exists an entry for PCI_DEVICE_ID_ICH4 and it sounds reasonable to remove the comment in the device table in line 281, but that still does not work. Just re-label ICH3 and ignore the warning when loading the modules. To be honest, it does not seem to be too stable. When calling a local ISP, the connection attempts were rejected with sometimes BUSY and sometimes NO CARRIER as a failure report, though perhaps this was due to some other problem (a/b-converter of ISDN?). Sometimes the connection was made successfully.
Addendum: The softmodem works with the current slmodem driver 2.9.5 or later. check the ftp-server from smartlink for the latest driver. At least version 2.9.9 even makes the dial-in process audible, a great feature missed by most internal modems. Unfortunately, the ALSA driver (snd-intel8x0m) does not seem to work, so you have to use the proprietary driver (slamr).

Wireless LAN

Finally, Intel has put up a working driver available from ipw2100.sourceforge.net which seems quite useable, even with WEP. driverloader or ndiswrapper do not seem necessary anymore.

A company called Linuxant has developed a technology to use the drivers for Windows XP in Linux. Unfortunately, it is deeply non-free, though Linuxant asks the hardware vendors to support them, so that the product will be at least given to the users without charging them. Currently (October 2003), you get, after a registration process, a 30 day trial license which seems to be hardcoded to the MAC-address of your WLAN card.

The ndiswrapper project supports that chip, too. ndiswrapper is under GPL and does more or less the same as driverloader from Linuxant.
The necessary MicroSoft-Windows files (e.g. w70n51.inf are provided by ASUS via FTP ftp://ftp.asuscom.de/pub/NOTEBOOK/M2x00N/INTEL_Calexico/PROW7100.ZIP or on the shipped CD in the directory: /intel_calexico/prow7100/winxp/

PCMCIA Passive Adapter: SmartMedia, MMC/SD, MemoryStick

The adapter doesn't work with Linux, because it works in passive mode only. You may use an active 4in1 PCMCIA-Card Adapter *C4RWC made by ConcepTronic instead.

Extra Keys

To make the hotkeys at the top available, you should install a recent ACPI-patch and activate the option CONFIG_ACPI_ASUS, which leads to the built of asus_acpi. You can grab the patch alternatively from acpi4linux.
The patch also makes the control-keys for CD available, which can be found at the front of the laptop. You have to configure acpid accordingly to use them, otherwise they are just dead meat (except when starting the machine in CD-Player mode).[SH]


People who have upgraded to kernel 2.6 might have noticed, that IrDA (SIR or FIR) does not work anymore. This is due to some interrupt problems, as the IrDA drivers do not want to share interrupts and 2.6 somewhat distributes them differently than 2.4. here is what to do:

  • use the latest ACPI (e.g. from 20040126)
  • compile your ps/2 mouse driver as a module (psmouse).
  • use the following kernel parameters:
    acpi_irq_balance acpi_irq_isa=3,12
  • irda-utils 0.9.15 suffice, at least irattach and irdadump do their job.

Afterwards, SIR and FIR (nsc-ircc) work. To see some sort of history, how all of this came together, check this thread at irda-users.

"I am running kernel 2.6.6, irda-utils 0.9.16 on two ASUS M2N here. they can both see each other as seen in the output of irdadump.
It seems to be necessary to echo the lower baud rate to the proc-file (echo 115200 > /proc/sys/net/irda/max_baud_rate) for real connections. to get a nice network connection between the two Linux boxes I used the "irnet" (kernel module):

To start a PPP connection on the server:
/sbin/pppd /dev/irnet 115200 local noauth nolock nodetach passive

To start a PPP connection on the client:
/sbin/pppd /dev/irnet 115200 local noauth nolock nodetach

Afterwards i can ssh into the other box just fine. of course, all other network-related services should be working as well." [SH]


It works, but not sufficiently: after resume LAN and WLAN both are somewhat dead and the machine cannot shut down properly afterwards. First, also the hardware clock was reset, but that problem has vanished after some time (?). The kernel and config shipped by Georg Greve (see below) keeps the LAN alive but shows the same behaviour as described above, although Georg says it works on his machine just fine.
echo -n "mem" > /sys/power/state initiates the processkernel-wise, but you should setup a custom script to stop/start services, unload/load modules, etc. which depends on your distribution, laptop and software-setup. That script should at least unload USB modules.

Suspend-to-Disk (SWSUSP2)

After fiddling around for quite some time, SWSUSP2 somewhat works on that machine with kernel 2.6.1, albeit there are some issues to be resolved where it does not work always perfectly after resume (PCMCIA, ALSA, KLaptopdaemon). Grab the sources from swsusp.sf.net, the core patch and the latest kernel-specific patch for 2.6.1 (2.6.1-rev6) and patch your kernel. Do not forget to download the latest suspend script (0.18). If you use a modified suspend.conf, then it should work for a SuSE 9.0. Users of other distributions might have to change names of services. There is one major drawback: there is no 3D acceleration for XFree86 possible at the moment when you want to use SWSUSP2 due to problems with agpgart/i830 on resume.
Check this thread on swsusp-devel to learn more about my attempts. Addendum: kernel 2.6.7 with swsusp and latest ACPI seems to work reliably if you configure your system properly. The graphics's problems seem to have been resolved.

Patched Kernel 2.4.24

At the moment, it seems best to use the latest 2.4 kernel, because you will not have the problems with IrDA as mentioned above and even SWSUSP2 works, so you can hibernate. This patch for 2.4.24 contains CPUfreq, ACPI, ACPI4ASUS, cryptoloop, laptop-mode and SWSUSP2. You might be interested in the Kernel config file for 2.4.24, too.

Patched Kernels >=2.6.4

Get a vanilla Kernel 2.6.4. Apply this patch and this config file. It contains current ACPI, SWSUSP2, Bootsplash, Laptop-Mode2, AES Assembler-Implementation and USB-UHCI resume fix. There is also a patch for 2.6.7 and complete Debian packages for 2.6.9 and 2.6.10 (this one is a courtesy of Georg F. Greve).

Bugzilla Entries

There is also a Debian Kernel Package 2.6.7 available, including patches like ipw2100-0.51 and current ACPI. For ACPI see this thread in the ACPI mailing list. Note: Please install appropriate versions of depmod, insmod et.al. you may install the Debian/GNU Linux package module-init-tools to achieve that. Also the boot option nolapic is required.

Additionally a Debian Kernel Package 2.6.9. I made the experience that, with SWSUSP2 2.1, 3D is broken after resume. You would have to restart the XServer to make it work again. you also need an updated hibernate-script, also please check carefully whether SpeedStep works on your machine afterwards, a

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

and an

lsmod | grep speedstep

should suffice. If SpeedStep doesn't work apply the latest BIOS from ASUS.

Software on the Net

Where I learned all this:

Some Notes about SuSE 9.1

How to get the hotkeys running?
1) deinstall powersave, kpowersave packages
2) install acpid package
3) additionally to make the battery icon run again edit /opt/kde3/share/services/kded/klaptopdaemon.desktop and set X-KDE-Kded-load-on-demand=true.

Other Resources


This report is a courtesy to TuxMobil by Denis Sunko <asus_at_hi.htnet.hr>.
Addendums for BIOS, Modem, ACPI, IrDA, Suspent-To-RAM, SWSUSP2 and WLAN by Sebastian Henschel.
Kernel 2.4.24, 2.6.4 and Bugzilla stuff from Georg C. F. Greve.

TuxMobil: Linux with Laptops, Notebooks, PDAs, Mobile Phones and Portable Computers

print · i-mode · WAP · PDA
contact · imprint · privacy (P3P) · sponsors · RSS

© Werner Heuser 1997-2015 · http://tuxmobil.org/asus_m2400n.html · last change Mon Aug 31 2009