Linux on an Acer Aspire 3003WLMi

Posted on . Updated on .

Things that probably work

I bought an Acer Aspire 3003WLMi in September 2005 with the intention of using it as my main computer, which means that I was going to install Linux on it. So far, I haven’t had any problems with it, but I must mention first what I have not tested:

  1. Bluetooth.

They are supposed to work. Most Live-CDs I tried loaded some bluetooth modules, and didn’t spit out any errors. I guess it just works.

Things known to work for sure

I’ll try to be as distribution-independent as possible in this section. I use Slackware Linux, but most Linux distributions are the same these days and, after all, all of them ship the same kernel (yes, with patches, I know :P) and the same tools. If it works under Slackware, it should work in your distribution. I won’t comment on installation instructions for specific distributions either. Partly, this is because I installed Linux in a very unorthodox way. I simply copied my desktop installation to the Linux partitions I made in the laptop. Directly, with cp -a. Of course, before rebooting I changed the fstab, the X11 configuration file and a few more system-dependent files, and copied a new kernel compiled specifically for the laptop. Both GRUB and LILO loaded the kernel fine, so you can choose whichever boot manager you prefer.

The 15.4" screen and the external VGA connector

This is the first thing you notice when you reach your desktop. You need to use a proper widescreen resolution or it looks bad. The native resolution is 1280x800 and is available as one of the sis screen resolutions. By the way, sis is the proper driver you should use with this laptop. Long story short, here are a few snippets from my X11 configuration file:

        Section "Monitor"
            Identifier  "LaptopMonitor"
            # Recent releases of Xorg don't need this.
            # HorizSync   28-96
            # VertRefresh 50-75
            Gamma       0.8
        EndSection

        ...

        Section "Device"
            Identifier  "SiSVideoCard"
            Driver      "sis"
            Option "EnableSiSCtrl" "yes"
            Option "UseSSE" "yes"
            Option "ScaleLCD" "no"
            Option "CenterLCD" "yes"
        EndSection

        ...

        Section "Screen"
            Identifier  "LaptopScreen"
            Device      "SiSVideoCard"
            Monitor     "LaptopMonitor"
            DefaultDepth 24
            Subsection "Display"
                Depth       24
                Modes       "1280x800" "1024x768" "800x600"
                ViewPort    0 0
            EndSubsection
        EndSection

Please note that the identifiers such as SiSVideoCard or LaptopMonitor are user-chosen. You can use the identifiers you want as long as they match through the whole file. Notice that I also lowered the default monitor gamma from 1.0 to 0.8. In the device section, I activated the sisctrl interface to be able to use that program to activate the external VGA output when needed. It’s very useful, so please donate money to the author of it and the sis driver if you can. If you use sisctrl, you should first check if it’s packaged for your distribution.

DRI is not available on the M760GX graphics chipset this laptop has. Read more about it on the Xorg SiS driver DRI information page. Try Google if the link is broken. Tips for MPlayer and playing DVDs in general: MPlayer prior to 1.0rc2 won’t know about your 15.4" screen unless you tell it. You should set the monitorpixelaspect option to 1 (default value starting at 1.0rc2) from the command line or put it in the MPlayer configuration file. Second, and very important, this laptop has a very crappy video card with shared memory that is too slow for fullscreen DVD playback at 1280x800. You may notice flickering horizontal lines from time to time. This sucks but is easy to solve. Use Ctrl+Alt+NumPlus or Ctrl+Alt+NumMinus or xrandr or, if you use KDE, the always handy krandrtray application to switch to a lower resolution before you play a DVD. In my experience, you can play a DVD fullscreen at 800x600 and you won’t notice image quality problems. At that resolution you won’t see the flickering lines. You probably won’t see them at 1024x768 either but that would put you on the limit and I suppose you could see some horizontal lines depending on the workload the computer has and your kernel configuration. Shame on the hardware. This is not a software problem. This is a video memory bandwidth problem. It also happens in MS Windows.

Touchpad

Everything works perfectly with the synaptics touchpad driver for XFree/Xorg. There should be a package for it in your distribution. Try Google if the link is broken.

Soundcard

Sure, it works with the snd_intel8x0 ALSA kernel module which is included in 2.6 kernels and in the alsa-drivers package and which is supposed to be loaded automatically by the hotplug system.

USB

Works, of course.

DVD writer

Yes, it works with cdrecord and cdrdao and similar programs. I use K3B to burn my CDs and I haven’t detected any problem about it. I had some minor problems when burning my first DVD+R discs, but I think the problems disappeared when I changed the burning speed from "Auto" to "2x", the highest speed K3B allowed me to choose. I also had to click the "Force" button in the media detection screen (that’s something you don’t have to do if you use the tools directly from the terminal prompt, AFAIK), but it worked and my DVD+R discs were recorded perfectly, so at least I know it can be done properly :). I didn’t lose a single disc because all errors happened before the burning process started.

Ethernet card

It also works perfectly with the sis900 kernel module. It must be noted, however, that this module was completely broken in kernels 2.6.21 and 2.6.21.1 during about one month. The problem was fixed on 2.6.21.2. Recently I had to add the boot parameter "acpi=noirq" to the kernel, or else there would be a problem with the interrupts that prevented the Ethernet card from working at normal speeds.

PC Card slot

I didn’t test it personally, but Adam Baker reported it to be working without any problems, not taking into account the card you insert in it may have drivers or not. The slot itself works.

Wireless networking

Important: The future lies in the bcm43xx module which will be included for the first time in kernel 2.6.17 and the DeviceScape 802.11 stack, that will probably replace the in-kernel 802.11 stack at some point in the future (update: it was included for the first time in kernel 2.6.22). The original section text is kept below because it may be useful for some users.

While I haven’t tried this one myself because I lack a test environment, several people have reported that they got it working more or less easily. You need, AFAIK, ndiswrapper and the Windows driver you can download from the Acer website. I know you can use unencrypted networks and WEP-encrypted ones. A Suse user reported he had no problems using WPA and WPA2 in PSK mode. You need wpa_supplicant configured with ndiswrapper.

Paul Byrne e-mailed me and said he was having problems with both the wireless card and battery monitoring before fixing the DSDT. I, honestly, don’t remember if I tried the wireless card before or after fixing the DSDT. If you have problems with it, read the Battery monitoring section at the end of this document.

Another user, Adam Baker, reported wireless networking and battery monitoring working out of the box with Suse and the BIOS version 3A27. You will have to see it for yourself.

Winmodem

Surprisingly, it works! You need the snd_intel8x0m ALSA module loaded and the slmodemd package. As always, please check first if there’s a slmodemd package for your distribution.

PowerNow

You can also save battery using the powernow-k8 kernel module and one of the non-default governors. At least in my case, the ondemand governor seems to work better than any other. And yes, you need the powernow-k8 module. The kernel mentions it’s for Athlon64 and Opterons but K8 includes the Sempron 3000+ this laptop has.

Software suspend

Update 3: s2ram works without problems in vanilla kernels too. Update 2: Today I started to use kernel 2.6.20 with the Con Kolivas patches and I tried s2ram, a program which is part of the uswsusp project. It’s also included in SuSE and other distributions and as part of other powersaving packages (pm-utils, powersaved, …). It successfully suspended to RAM and resumed. I didn’t do anything special. My kernel had sleep states support, I wasn’t using the console framebuffer and it worked. The snd_intel8x0m module and slmodemd suffer the same problem as when suspending to disk. The former section text is kept below. Update: I have also tried the in-kernel swsusp and it also works without any problems. Suspend to RAM doesn’t work. It apparently suspends correctly, but it’s unable to resume. I have tried using the noapic kernel boot parameter, without any change in the outcome. The original section text is kept below.

Adam Baker reported he was able to suspend to disk under Suse without any trouble. Depending on the distribution, this can be easy to test (Suse) or require more work on your side (in my case, Slackware). I finally downloaded the suspend2 kernel patches and the hibernate script to test it. It worked as it was supposed to work. The suspend2 patches may be integrated in the vanilla kernel in the future. At the moment I’m writting this (kernel 2.6.16.16 is out), it’s not included (but your distribution kernel may have them applied!) and there are issues with some modules not behaving correctly after resuming. For example, the winmodem module (snd_intel8x0m) needs to be reloaded. I am able to resume directly to an X session (that’s pretty neat) and the touchpad keeps working. The external USB mouse keeps working too thanks to /dev/input/mice. Overall, this is very nice. I hibernate the computer and get back to my KDE desktop, all aplications running in place, in about 30 seconds. Very handy as a general method to boot fast.

Battery monitoring

Update: This is a somehow long story. Months ago I received a report from Adam Baker saying he had everything working out of the box under Suse, and when he sent me the computer specs I saw his model featured 768 MB of RAM memory, while my model had 1 GB and needed high memory support. Some days ago I tried the Con Kolivas kernel patches, which let you select different memory splits instead of the default one, so that you won’t need high memory support if you have 1 GB of RAM. When I tried to boot this new kernel I got several errors derived from the DSDT having been generated for a computer with different memory parameters. I thought the quickest way to fix this problem was to boot a kernel without a modified DSDT and once I had it running, get the new DSDT, fix it and replace it like I did before. To my surprise, when I booted the new kernel with the default DSDT, everything was working, including battery monitoring. This makes me believe the two concepts are related. If you have this laptop model and read this, please drop me an email. If you have less than 1 GB of RAM, I’d like to know if everything works for you out of the box without needing to replace the DSDT or not, and the same if you have 1 GB of RAM. I’ll keep the original section text below, because it may still prove to be useful, and because not everyone can/wants to use the Con Kolivas kernel patches.

This may not work out of the box and I spent some time at Google and reading webpages to make it work. In the end, I spent about 45 or 50 minutes setting this up. I’ll try to sum up my experience in a few lines in an attempt to put you quickly in the right path to follow. The ACPI BIOSes have something called the DSDT or Differentiated System Description Table. It’s a piece of data containing instructions about how to access the computer hardware and is read by the kernel when it boots. Unfortunately, due to the fact that many vendors use a MS compiler to generate the DSDT, many buggy DSDTs are included with BIOSes, preventing you (or your kernel) from accessing and using the computer hardware properly. This is because the MS compiler is not very strict and allows buggy tables to compile and, later, work under Windows.

How can this be solved? Using a fixed DSDT for you BIOS, telling the kernel to use that fixed piece of data instead of reading it from the BIOS, hence overriding the BIOS DSDT. There are several ways to override the DSDT and I must say that I used the less novice-friendly one to load mine. I specified a statically generated DSDT from the kernel menuconfig. You should search in Google and ask someone with your distribution if you want to override the DSDT.

First, you must fix your DSDT or get an already fixed version. Furthermore, the DSDT is specific to the BIOS version. My laptop shipped with the 3A18 version, and the fixed DSDT is available at the ACPI website. Please, read the DSDT section at that website carefully, because it has further information on the matter and a couple of links to some very useful guides about getting your DSDT, compiling DSDTs and virtually everything you need to know about this. Paul Byrne also contributed a fixed version of the 3A26 BIOS. Adam Baker sent me the 3A27 DSDT for 768MB and I fixed and uploaded it too. All of them are available in the Aspire 3003WLMi section at the ACPI website. I fixed the DSDT, uploaded it to the ACPI website and, later, I realised there were other DSDTs that may have worked. Remember to check that the DSDT you use matches your model and BIOS version! Due to the fact that the DSDT is partly generated by the BIOS at boot time, it also depends on the amount of memory your computer has. My laptop shipped with 1GB, and the 3A18 DSDT in the website corresponds to that amount of memory. Be careful. In any case, time has shown us that all those BIOS revisions include the same mistakes. Read the "Interpreter fix" entry for revision 3A18 and you’ll probably know how to fix any future version.

All those DSDTs should be compiled with the Intel compiler. Please, read the instructions and documentation from the ACPI website on how to proceed about this matter, because I’m not going to be very helpful apart from the "I fixed the DSTD, compiled it with the Intel compiler and indicated that file path from the kernel menuconfig" story. What I could do, as I mention in the ACPI website, is fix other BIOSes you may have in this laptop model if they’re not available for download. All of this provided the errors present are mostly the same ones my BIOS had, because I’m completely ignorant of the programming language used in DSDTs and solved the problems by searching in Google and copying what other people did :P.


comments powered by Disqus