Born to run UNIX!

Installing SUSE Linux 10.0 on a Samsung X20 XVM 1730 V with Intel GMA900

[Update 22.08.2009]: I've upgraded to SUSE 11.1.

Hardware overview

CPU Intel(R) Pentium(R) M processor 740 (1.73GHz 2 MB Cache 533 MHz FSB) ok
RAM 1.024 MB PC2-3200 (2 x 512) ok
hdd FUJITSU MHV2080AH - 80GB, 5400 UPM ok
Floppy n/a  
DVD-R(W) TSSTcorpCD/DVDW TS-L632B: DVD-Super-Multi Double Layer 5xDVDRAM, 8xDVD+R (2.4xDL), 4xDVD+RW, 8xDVD-R, 4xDVD-RW, 24xCD-R, 10xCD-RW ok
Graphics 128 MB Intel Graphic Media Accelerator 900 (i915GM) ok (i810)
Display 15" SXGA+ (1.400 x 1.050) ok
Sound Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03) ok (snd_intel8x0)
USB 1 Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI (rev 03) ok
USB 2 Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03) ok
Firewire Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 08) not tested
LAN Broadcom Corporation BCM4401-B0 100Base-TX (rev 02) ok
WLAN Intel Corp. PRO/Wireless 2200BG (rev 05) ok (ipw2200)
Modem Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03) not tested
TouchPad Synaptics ok
PCMCIA Ricoh Co Ltd RL5c476 II (rev b3) not tested
ACPI Suspend to disk/ram, lidclose, CPU frequency scaling ok *
MD/SD-Slot Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 17)
Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 08)
not tested

*: suspend to disk needs a workaround, see below

For more details have a look at the output of lspci, cat /proc/cpuinfo and lsmod.

The installation process

The basic installation was pretty simple. But I didn't expect something else as Centrino notebooks are said to be pretty well supported by now. Also, tests in computer magazines confirmed that basically all devices of a similar Samsung model worked. And in the shop where I bought my model I checked with Knoppix that the soundchip is supported as that was the only major part I was unsure about.

Here is a short writeup of the installation process. I will go into detail on some aspects that didn't work out-of-the-box below.

  1. Choose language
  2. Set date and time
  3. Choose desktop Gnome or KDE (I like KDE better)
  4. Manual partitioning
    /dev/hda1   *           1        2351    18876344    7  HPFS/NTFS
    /dev/hda2            2351        2613     2104515    c  W95 FAT32 (LBA)
    /dev/hda3            2613        2744     1052257+  82  Linux swap / Solaris
    /dev/hda4            2744        9678    55705387    f  W95 Ext'd (LBA)
    /dev/hda5            2744        3788     8393931   83  Linux
    /dev/hda6            3789        4050     2104483+  83  Linux
    /dev/hda7            4051        9678    45206878+  83  Linux
    
    More details can be found in the /etc/fstab.
  5. Choose packages to install (I tend to install a lot development packages already here)
  6. Set resolution, activate 3D acceleration. I use this /etc/X11/xorg.conf.
  7. Set up the Ethernet NIC with fixed address (connection to the internet via router PC).

At the end of the installation process I ran the online update to apply the security patches available at that point.

After installation modifications

Grahics

Although the installation didn't show any errors, it turned out that the 1400x1050 resolution didn't work and 1280x1024 was used as a fallback. The solution to that was easy to find. There is a tool "855resolution" - and a package of the same name on the installation media - to patch the video BIOS.

855resolution -l

lists the modes found in the video bios. 1400x1050 is not among them. So you just override a mode you don't need anyway. I chose the highest resolution mode neither the laptop display nor my desktop monitor support (mode "3c": 1920x1440). And as this setting is lost after shutting down the machine, I added the following line to /etc/init.d/boot.local

/usr/sbin/855resolution 3c 1400 1050

Here are a few benchmarks:

ProgramFPSResolutionSettings
glxgears 1314.600    
tuxracer >55 800x600 default
scorched3d >40 800x600 default
nexuiz 18 - 78 800x600 all effects off except particles, decals
UT2003 - flyby-asbestos 9.68/27.68/632.48 800x600 details normal, effects on
UT2003 - flyby-asbestos 11.56/33.54/710.49 800x600 details normal, effects off
UT2003 - flyby-asbestos 11.49/34.62/690.94 800x600 details lowest, effects off
UT2003 - botmatch-antalus 3.39/6.46/20.36 800x600 details normal, effects on
UT2003 - botmatch-antalus 3.40/7.43/25.04 800x600 details normal, effects off
UT2003 - botmatch-antalus 3.64/11.21/27.24 800x600 details lowest, effects off
Enemy Territory - radar 9.9 800x600 normal quality

Sound

While media players had sound, all games I tried complained about not working audio. That was fixed by adding my default user to group "audio".

To play CDs with xmms I had to configure the "CD Audio Player" input plugin in the preferences to use "Digital audio extraction".

I disabled the KDE startup and shutdown sounds in the control center to not annoy people when using the PC in public places.

Environment settings

Set zsh as default shell. You might want to copy my ~/.zshrc and ~/.alias files although some settings might not make much sense for others.

I redefined some keys, for example I like the left windows key to open the K-menu. For that I assigned "F20" to that key using xmodmap. The key manipulations are written to the file ~/.Xmodmap:

keycode 115 = F20
keycode 116 = slash
keycode 117 = Alt_R
add Mod1 = Alt_R

If I understood things correctly, ~/.Xmodmap is automatically evaluated when X is started. But KDE overrides the keyboard settings with its own, so I re-evaluate my configuration in a script I put into ~/.kde/Autostart that simply calls

xmodmap ~/.Xmodmap

System services

One of the first things I do with a fresh linux installation is disabling services I don't need. Here of course it depends on the personal needs what can be disabled or not. I stopped these services (either via Yast or on the console with "chkconfig -s <servicename> off"):

After that the list of open ports looks like this: output of "netstat -tulpn". Note: a local address of "127.0.0.1" or "::1" means that this service doesn't listen to connections from outside the machine itself.

Touchpad

No action from my side was necessary, the touchpad worked out of the box:

WLAN

I have set up my WLAN card to have a static IP and routing for my home setup (DHCP should make no big difference I guess). The wireless settings are on the second page of the card configuration in Yast. I entered my ESSID, set the authentication mode to WPA-PSK and entered my passphrase. The key input type is "Passphrase" as my wireless router only has this option. From then on, everything works fine (it seems there are problems if the passphrase contains spaces).

Later I will look into setting up network profiles. The need didn't arise so far.

Powersaving

I guess this is the most interesting part for a lot of people. The good news is: it works, albeit with a little drawback.

CPU frequency

The SUSE default CPU profile is "dynamic", i.e. the CPU runs at 800 MHz, but if you start a program that needs more CPU power the machine will switch to the full 1.73 GHz. But you can simply override this by using the kpowersave tray icon and set the profile to either "performance" or "powersave" which will fix the clock speed to 1.73 GHz or 800 MHz, respectively.

Which speedstep kernel module to load is determined dynamically during boot time. I have set the variable CPUFREQD_MODULE in /etc/sysconfig/powersave/cpufreq to "speedstep_centrino" so that the test for the right module can be skipped each time the machine boots.

Suspend to Ram

I did a test with

echo 3 > /proc/acpi/sleep

and everything went fine. After pressing the power button, the laptop is back in a second. So I decided to use suspend to ram as the action for closing the lid (preconfigured was the screensaver).
For that I had to edit /etc/sysconfig/powersave/events and change the appropriate line to

EVENT_BUTTON_LID_CLOSED="suspend_to_ram"

Suspend to Disk

In principle, S2D works easily by selecting "suspend to disk" from the kpowersave tray icon (or using "echo 4 > /proc/acpi/sleep" from the console). Pressing the power button then starts the resume process which ended on the KDM login screen in 1280x1024 resolution. So the 1400x1050 mode was the problem.

After some research I found that the suspend mechanisms allow individual services to be shut down and restarted for suspend. So I wrote a small script and put it under /etc/init.d/855resolution. It has to support the three actions "start", "stop" and "status". "start" does exactly the same as the line in the boot.local script. "stop" and "status" don't need to do anything, just return 0 (i.e. true) as exit code. To tell suspend to use it, change the appropriate line in /etc/powersave/sleep to

SUSPEND2DISK_RESTART_SERVICES="855resolution"

Unfortunately that's not sufficient. The resume still leads to the KDM login screen, but this time at 1400x1050. My explanation - although not sure if it's 100% correct - is that the 855resolution "service" is restarted after the machine has switched to graphics mode. At that time there is no vbios mode 1400x1050 yet so X restarts itself and the login screen is presented. Somewhere in between it seems 855resolution is run so that KDM comes up with the right resolution.

The best solustion I was able to come up is to edit the script /usr/lib/powersave/scripts/sleep_helper_functions. It defines a function "restore_after_sleep" where I added the 855resolution call right before the line that switches back to X.

    /usr/sbin/855resolution 3c 1400 1050 &> /dev/null
    switch_to_X

It's not perfect, but it works. As long as the package "powersave" is not updated and the files gets overwritten, that is...

Open problems/drawbacks

Goodies/specialities

Just a few - maybe minor - things I like to share anyway ;-)

--------------------
© 2005-2006 Brack@The-One-Brack.org Back to my linux on laptops page Last modified: Sat Aug 22 20:19:19 CEST 2009