MSI S270 with Linux

Picture of the laptop
Note to german: Dieses HOWTO ist in Englisch weil so einfach mehr Leute den Text lesen können.
The S270 is long gone... In fact, it got defective 2007 and was replaced by an S262 (which as of 2017 is still operational). There usually everything worked out of the box under Linux, so no need to make a new howto. This text is therefore kept for historic reasons.
This is just another guide how to install Linux on a MSI S270 Laptop. There are some other guides already around but they do not contain every information or have a sightly different hardware configuration. So I decided to write one myself. As Linux distribution I used Kubuntu 5.10 (Breezy Badger) first but in the meantime I upgraded to Kubuntu 6.06 (Dapper Drake). The hardware and what I got working of it:
Hardware Type Status
Ethernet Card RTL-8139/8139C/8139C+ works
DVD Burner Hitachi-LG GCA-4080N works
USB ATI works
System clock
works
Sound Card ATI IXP works
Bluetooth
works
X-Server ATI Radeon XPRESS 200M works
Hardware 2D acceleration ATI Radeon XPRESS 200M works
Hardware 3D acceleration ATI Radeon XPRESS 200M works
Wireless Network Card INPROCOMM IPN 2220 Wireless LAN Adapter useable but sometimes crashes the system
Powernow
works
PCMCIA Card Slot RL5c476 II works
Firewire R5C552 IEEE 1394 Controller seems to work
External VGA output
clone screen works
Special function keys
works
Modem ATI untested
Reading Voltage, Battery, Temperature etc
partly works
Build-in Cardreader RL5c476 II highly experimental driver available
With Kubuntu 6.06 mostly works without problems, however not everything. Moreover since I used Kubuntu 5.10 before where many things did not works directly, I will describe how the hardware works on both versions. In my opinion by comparing the two versions you can see how impressive fast the development of Linux go on. But some components still need some manual work to get them going. You do everything described here on your own risk. If you want to continue reading how to get the parts working which do not work out of the box, I expect you to have some Linux knowledge, so I will not explain each step in detail. Moreover you should know what you are doing with your system and not blindly follow this guide! The installation of Kubuntu 5.10 worked without problems, so I guess the installation of 6.06 will be too. I did not use the 6.06 installer because I upgraded from the previous version without a new installation.

Ethernet Card

The Ethernet card worked perfectly out of the box.

DVD Burner

Reading and writing of CDs and DVDs works without any trouble with K3B. I did not test burning Double Layer DVDs.

USB

Dapper Drake release: Works without problems.
Breezy Badger release: After installing, USB first worked well. But after some software upgrades (kernel and udev update, removing of hotplug) it did not work any longer. The solution was to add irqpoll as boot parameter to the /boot/grub/menu.lst . With newest kernel (2.6.16) you did not need irqpoll any longer.

System clock

Dapper Drake release: Works without problems.
Breezy Badger release: By default the clock goes as twice as fast as it should. This has some strange effects. The cursor flickers twice as fast, holding a key is twice as fast (annoying when pressing backspace) a download displays half the data rate than it is in reality. I don't know which effects this might have in multiplayer games... Might be useable for cheating ;-) So we should change that. The solution is to add a next boot option called noapic to your /boot/grub/menu.lst . For kernels 2.6.14 and newer disable_timer_pin_1 can be used as alternative to noapic. Here is was the thread discussing this bug: http://bugme.osdl.org/show_bug.cgi?id=3927
The newest 2.6.16 kernel detects this problem automatically and correct it. So no boot option is necessary with this kernel.

Sound

Dapper Drake release: Works out of the box
Breezy Badger release: With a 2.6.13 and older kernel you hear music only in the headphone jack and the volume is not controllable. There are some solutions for these kernel versions around in the other howtos about this laptop. But they solved this problem in the 2.6.14 kernel so in my point of view upgrading the kernel is the best solution. After I upgraded music is working nice here.

Bluetooth

The build-in bluetooth device is connected simply by USB. Press the button right to the power button so that a LED in the front starts lighting green.
Dapper Drake release: Works without problems.
Breezy Badger release: If you get some error messages after pressing the button as described above, you might have to run sudo /etc/init.d/bluez-utils start to start the service manually.

X-Server

Dapper Drake: Works instantly with 2D acceleration.
Breezy Badger: After installing Kubuntu, the X-Server (Version 6.8) starts successfully showing me a login screen but nearly every click on a button results in a system crash. The solution is to add Option "noaccel" into Section "Device" of the /etc/X11/xorg.conf file. Then the x-server is working but without hardware acceleration scrolling or moving a window is slow and uses a lot of cpu power. Moreover every try to play a video results in a crash of the x-server (you can restart the x-server immediately). But beside this, the x-server runs stable.

Hardware 2D Acceleration

Dapper Drake: No problems.
Breezy Badger: Since I was not very happy with software rendering and missing video-playback. I manually upgraded to X.org version 6.9 as soon as it was out (this was not easy).

Hardware 3D acceleration

Dapper Drake release: It is working, however every re-installing of the fglrx driver, seem to result in new problems. I think could fill a whole page like this with the various problems I had with the fglrx driver on this notebook and on my PC within the past two years. But once the driver runs, it runs well (until the next kernel update...).
If you experience a wrong drawing of the screen you have to set Option "OpenGLOverlay" to "off"
Since the Kernel in Dapper is new enough so than no manual upgrade is necessary you might use a compiled fglrx module directly from Dapper. that was just one problem. I did not wrote down all the other problems with Dapper (and I don't want to).
Breezy Badger release: If you would like to play ppracer or some other nice games on this laptop you have to install the driver from ATI. This was not simple but at least easier than the upgrade from x.org 6.8 to 6.9 above. I did the following after I already upgraded to X.org 6.9. I don't know whether this works with x.org 6.8 too or not (I can not test this). First simply install the driver (I used version 8.22.5-i386). The graphical installer from ATI will report that the installation was successfully but it is not - do not call the aticonfig (newer installers) or fglrxconfig (older installers). If modprobe fglrx works for you (run this as root without a running x-server) - fine you do not need the next steps. On my system modprobe fglrx did not work because something prevented the module from being build (there simply was no module fglrx). Go to the directory /lib/modules/fglrx/build_mod and run ./make.sh watch out what prevent the module from being build. In my case it was the script that believed I hat the wrong kernel version since the source code reported 2.6.15 and my kernel reported 2.6.15-mybuild04 but in fact it is the right source code since -mybuild04 was a name extension I had choosen to indicated that I build the kernel myself (the fourth I compiled so far). As simple workaround I deactivated the comparison of the versions by adding a hit=1 after line 247 in the make.sh script. Then retry ./make.sh. I was now able to build the fglrx module but not the agpgart module, however we do need only the fglrx one. Go into /lib/modules/fglrx and execute ./make_install.sh to copy the fglrx module to the right place. Perhaps the script complains that the module could not load successfully. On my system the reason was that the running x-server already used the hardware and the fglrx module could not use it at the same time. Test the module without a x-server running modprobe fglrx. It should work now.
Now we have to adapt the /etc/X11/xorg.conf file. Make a backup of that file before editing it! Remember the current BusID in the old Section Device and then replace the section with:
Section "Device"
Identifier "ATI"
Driver "fglrx" # this is the important bit
# If X refuses to use the screen resolution you asked for,
# uncomment this; see "Bugs and Workarounds" for details.
#Option "NoDDC"
# === Video Overlay for the Xv extension===
Option "VideoOverlay" "on"
# === OpenGL Overlay ===
# Note: When OpenGL Overlay is enabled, Video Overlay
# will be disabled automatically
Option "OpenGLOverlay" "on"
# === Use internal AGP GART support?===
# If OpenGL acceleration doesn't work, try using "yes" here
# and disable the kernel agpgart driver.
Option "UseInternalAGPGART" "no"
BusID "PCI:1:5:0"
EndSection

Adapt the BudID to the value you remembered from the old config. Moreover in Section "Screen" the Device should be "ATI" (the same name as the Identifier from Section "Device"). Note: Do not set UseInternalAGPGART to "yes" since we did not build the module. Restart the x-server and hope it is working. If not, copy back the backup of your previous xorg.conf. If ppracer is running nice but tuxkart not, you have to add tmpfs /dev/shm tmpfs defaults 0 0 to your /etc/fstab and mount it.

Wireless Network Card

Yes, the card is usable, but it is a pain. First, as far as I know there are no driver for Linux available but there are possible some under development - I am unsure about that. For me it looks like the manufacture of the wireless chipset might be bankrupt because you do not find a homepage with a search engine but some links directing to a domain which is for sale. Moreover you find the the homepage in archive.org with some information sheets about this chipset. You have to use the driver developed for the operating system from Redmond with ndiswrapper. If you use the kernel supplied from Kubuntu, ndiswrapper is available as package.
The version of ndiswrapper which comes with Breezy Badger is outdated. Dapper Drake comes already with a somewhat newer ndiswrapper. If you use a custom compiled kernel you have to compile ndiswrapper anyway. Then you need the drivers. One possibility is to use the driver from your laptop driver CD. On my system the .ini file from the 32bit version did not work, but the .ini from the 64bit directory worked. Since I have a 32bit system I used the .ini file from the 64bit directory and the .dll from the 32bit directory and renamed it so that it match the name of the 64bit dll. As alternative Acer put a .deb package with the right dll and ini file somewhere on their website. Both methods worked for me meaning that I did not notice a difference at the amount of system crashes...
I tried do figure out under which conditions the system crashes and under which not. I found some evidence but I am still not fully aware of random crashes.
With the old ndiswrapper version (from Kubuntu) the 2.6.12 kernel I would say there was a average chance of around 50% that a modprobe ndiswrapper results in a kernel panic crashing the full system. A 33% chance that loading the driver worked properly and in the rest of the cases the driver could not load but the system did not crash fully and a normal reboot was possible. The procedure how to initialize the driver was the same every time. Moreover sometimes the system crashed during the driver had already been loaded and I was surfing in the net, sometimes it took five minutes until it crashes, sometimes it worked two hours and longer without problems.
With a newer ndiswrapper version (1.7) and the 2.6.12 kernel the behavior seemed to be the same but I did not test this combination long.
With the newer ndiswrapper version (1.7), kernel 2.6.15, irqpoll (see USB section above) and disable_timer_pin_1 (see system clock section above) crashes seem to be rare. Until now the system never crashed during the loading of the driver. It crashed two times while I surfed in the net at a location with a very bad connection. It crashed once while trying to unload the module - this was my first and last try to unload it so far. Moreover once the connection breaks down I am not able to reconnect (I do not get an IP) until I reboot.
The crash of the system while unloading the module seems to be fixed in version 1.9 of ndiswrapper.
Currently I am using ndiswrapper 1.37 together with kernel 2.6.20.1 and with the irqpoll boot options. The cashing problem seem to be solved.
Note: I only tested the wireless connection at my university, so it might behave completely different with other remote stations. I read on a mailing list, that someone was planning to write an open source driver for this card. Moreover there is a native Linux closed source driver from the vendor somewhere on the net. It is a compiled object file for 2.4 (embedded) kernel used as access point.

Powernow

Breezy & Dapper: The Sempron 2800+ build in my notebook supports powernow, meaning that it is possible to reduce core frequency and core voltage to reduce power consumption and heat resulting in a more silent laptop. In theory a kernel module called powernow-k8 provides the interface to switch frequency and voltage. The powernow-k8 module needs some appropriate values for the processor which it load from a table (called DSTD) provided by the BIOS. Unfortunately these values are somewhere wrong which the module recognizes and does not want to work. I added some commands to the kernel module to see the values which are reported by the BIOS. Then I looked into the documentation for my processor and compared the values. It looks like that only one value from the BIOS did not fit with the specs. The maximum allowed voltage has to be 0,05V higher than reported by the BIOS according to the documentation I found in the net. I tried to change this value directly within the sourcecode of the kernel module, however my first attempt did not work. Warning: Modifying this values is risky. Slightly wrong values or programming could result in overheating due higher voltage. Much too wrong values might even damage the processor immediately.
Some time later, figured out how to make a copy of this DSDT file and decompile it. By trying to compile the table again I saw which errors the table contains. It was exactly one error. I searched in the net how to fix this one and found a page describing this error. I fixed the error according to this page and compiled the table again. After that I had to tell the kernel to use my file instead of the table from the BIOS. Now my processor is able to slow down to 800Mhz resulting in less heat and around 20% longer battery time. In the end I now needed over 9 months until I get it working.
An alternative to fixing the DSDT might be a BIOS update, since other with the same laptop seem not to have this problem.

PCMCIA Card Slot

At first, the slot did not work for unknown reason. After some restarts it is now working....

R5C552 IEEE 1394 Controller

It looks like firewire is working. I was able to control (play, stop, forward... buttons) a video camera over firewire. Unfortunately I did not get any pictures back to the notebook, but I think this was the fault of the camera or the video program and not a problem with the firewire interface.

External VGA output

Without any modification of the X.org configuration it seems like the VGA output shows always the same as the laptop screen but only with a resolution of 1024x786 so parts of the laptop screen (1280x800) are not visible. For some unknown reason my external monitor can not display this 1024x786 modus correctly.
For changing the "Clone Mode" behavior you have to edit your X.org config file. I did not try to modify the config, so I don't know if it is simple or not.
With the fglrx driver running, you can set up clone mode (the external monitor has to be connected before the X-server starts) with the help of the ATI Control panel. Then you can control the resolutions of both screens with KDE independently.

Special function keys

Start the program xev and press the special function keys. You will see the keycode for the pressed key in the console. Generate a file ~/.xmodmaprc with the mapping of the keycode to a key. The file looks like:
keycode 178=F20
keycode 236=F21
Then start the program xmodmap ~/.xmodmaprc (If you like, let this command automatically run after you logged in). Now you can use F20 and F21 (or whatever you named the keys) for associating shortcuts within KDE applications as you could do with every other key.

Modem

I did not test it and don't think I will ever do this because I did not use a modem since years.

Reading Voltage, Battery, Temperature

You can display the processor temperature and the state of the battery. The hard disk temperature can be read out with the program hddtemp. Moreover when closing the monitor it automatically shuts off (Lid switch). I did not found out how to read out the voltages and fan speed. Next the fan speed is not controllable.

Build-in Cardreader

It looks like the cardreader is acting like a PCMCIA card which is connected by an other RL5c476 II chip. Every time you insert a Flash card you see a message that a card was inserted. Enter dmesg to see those messages. There are currently no Linux driver for this PCMCIA to MMC adapter and no public available datasheet which would be required to write one. Since I heard from the SDHCI project I have a slight hope that there will be a driver one day developed by reserve-engineering. But currently the project does not support this chip.
Update: Someone actually did watch the driver (for the operating system developed in Redmond) while working and developed a highly experimental Linux driver (not within the SDHCI project) according to his observations. Maybe I will test the driver.

Conclusion

Except of the card reader everything seems to be supported with Dapper. However things like the wireless card, 3D acceleration and powernow might need advanced knowledge of Linux to get them working.