# Gentoo on Samsung X30 WVC 1500 Notebook (Howto & Discuss

## c_t

This topic is no longer beeing updated, you will find the most recent Version in the gentoo-wiki!

Gentoo on Samsung X30

Announcements:

I'd be very pleased if some more X30-owners could contribute their experiences with s3 resum to this bug:

http://bugme.osdl.org/show_bug.cgi?id=3203 Thanks!!

Updates:

 2005-02-06: Changed some things concerning Kernel & ACPI, especially acpid-config

 2004-11-17: Added links at the end of this howto

 2004-11-09: Added changes concerning new Kernel: gentoo-dev-sources-2.6.9-r1

In March 2004 I bought a new Samsung X30 Laptop. It is a pretty nice machine, very silent, fast, very good widescreen-display, not too heavy and its design definately has style.

The first thing I did was to fire up the pre-installed Windows XP to start the long way of a gentoo installation.

Most things work perfectly right now, but there are still some limitations. So if anyone has any suggestions how to fix any of the problems I'll mention, feel free to post it right here.

So now let's begin. I'll just write down the problems I was confronted with during the installation and which solutions I found.

Table of Contents

1. Installation

1.1 Basic install

1.2 x.org install

2. Hardware Support

2.1 Network

2.2 WLAN

2.3 Powersaving and ACPI

2.4 USB

2.5 FireWire

2.6 Touchpad

2.7 Special-Keys

3. Extra-Tuning

3.1 Gensplash / Frambuffer-Console

4. Resources

1. Installation

1.1 Basic installation

The basic installation of gentoo works without problems. Just follow the installation-guide on www.gentoo.org/doc. To benefit from the full performance of my Pentium M and to optimize the code I use the following CFLAGS which I found somewhere on the net. I also set a lot of USE-flags which you perhaps do not need:

/etc/make.conf

```

USE="acpi alsa avi cups curl dga dvd encode ethereal fbcon gd gif gphoto2 gpm -gtk -gnome imagemagick imap innodb jpeg junit kde kerberos lcms lirc maildir mmx mozilla mpeg mpi mysql oggvorbis opengl pam pcmcia plotutils png pnp qt quicktime samba sasl scanner sdl slp snmp socks5 sse ssl tiff truetype trusted usb wmf X xinerama xml zlib x86 -apm -arm -alpha -berkdb -slang -sparc"

CHOST="i686-pc-linux-gnu"

CFLAGS="-march=pentium3 -pipe -O2 -fomit-frame-pointer -fforce-addr -frename-registers -fprefetch-loop-arrays -falign-functions=64"

CXXFLAGS="${CFLAGS}"

```

I currently use gentoo-dev-sources-2.6.10-r6. There are still some problems with the Standbymodes in that release, I hope they will fix that soon (it's a known issue). Despite of that they work really fine!

1.2 x.org installation

First of all you best follow the desktop configuration guide which can be found in the documentation section of gentoo.org. BTW: I decided to switch to x.org, it works perfectly!

So after you have emerged xorg-x11 you need to install the video drivers:

```
$ ACCEPT_KEYWORDS="~x86" emerge nvidia-kernel nvidia-glx
```

I first didn't really know how to configure my X-Server, since the resolution of 1280x800 is not so common but I fortunately found hendrik_x30 in this forum who gave me his working XF86Config / xorg.conf. If you're interested in my config file have a look at the second post down in this topic. Note that it will not work with the Samsung X30 WVC1700 since it has a higher resolution.

Now copy my xorg.conf to /etc/X11/. If you are sure that you have setup everything according to the guide you can try to start the x-server:

```
$ startx
```

Now you should see a nice Nvidia-Logo and the x-session you previously defined in /etc/rc.conf should be started. I currently use KDE-3.3.0 which works just fine for me.

If everything is working you can now add your loginmanager to the default runlevel. In my case this is kdm:

```
$ rc-update add kdm default
```

Ok, X is running, but now we can start the tricky part on a graphical interface which is much more comfortable than always googeling the web with lynx  :Wink: .

2. Hardware Support

Before you proceed be sure to have module support activated in the kernel:

```

    Loadable module support  --->

    [*] Enable loadable module support

    [*]   Module unloading

    [*]   Automatic kernel module loading

```

2.1 Network

The Broadcom Corporation BCM4401 100Base-T ethernet controller is supported by the kernel:

```

    Device Drivers  --->

     Networking support  --->

     [*] Networking support

     [*]   Network device support

             Ethernet (10 or 100Mbit)  --->

            [*] EISA, VLB, PCI and on board controllers

            <*>   Broadcom 4400 ethernet support (EXPERIMENTAL)

```

I saw no need to compile this as a module. You can now configure eth0 in /etc/conf.d/net and add it to the boot-runlevel.

2.2 WLAN

I am currently using the the ipw2100 drivers from http://ipw2100.sourceforge.net , which work already pretty fine. They are also in the portage tree:

```

$ emerge net-wireless/wireless-tools

$ ACCEPT_KEYWORDS="~x86" emerge net-wireless/ipw2100

```

To configure my WLAN I'm usign the wireless-config ebuild. You can find a good description of how it works in another thread.

2.3 Powersaving and ACPI

OK, welcome to the probably most tricky chapter of this howto. Let's start with the configuration of the SpeedStepping-Functions since this is not so complicated. We will configure ACPI later.

2.3.1 Speedfreq

First you should install the necessary software:

```

emerge sys-apps/speedfreq

```

Now you have to enable speedstepping in you kernel:

```

    Power management options (ACPI, APM)  --->

    [*] Power Management support

        CPU Frequency scaling  --->

        [*] CPU Frequency scaling

              Default CPUFreq governor (userspace)  --->

        <*>   'performance' governor

        <*>   'powersave' governor

        [*]     /proc/sys/cpu/ interface (2.4. / OLD)

        <*>   CPU frequency table helpers

        ---   CPUFreq processor drivers

        <*> Intel Enhanced SpeedStep

```

Now lets have a look at the config-file located in /etc/conf.d/speedfreq :

```

SPEEDFREQ_SPEED="dynamic"

SPEEDFREQ_OPTS=""

#SPEEDFREQ_USERS="yes"

```

If it looks like this you're done! Start the speedfreqd with /etc/init.d/speedfreq start . You can now control the speedfreqd using the tool speedfreq. You shouldn't forget to rc-update add speedfreq boot .

2.3.1 ACPI

This was the part on which I lost hours and hours... But finally I've got it working!

I actually can use nearly every ACPI-Feature except the Standby-Modes. None of them works right now, neither S1 nore S3. I think S4 can be set up with PM_DISK but I didn't try that yet.

First it is a good thing to upgrade to the latest BIOS-Version (I'm running UE05 at the moment). Just get the CD-Image or wahtever from samsungpc.com and follow the instructions described there.

Unfortunately also the new BIOS still comes with a broken DSDT so you have to follow the great howto in this forum to fix the DSDT or if you're too lazy just download my fixed one from: acpi.sourceforge.net

A fixed DSDT for the "big brother" of this laptop, the WVC 1700, can also be found there.

The new 2.6.9-kernel brings built-in-support for custom-DSDT-loading! Just check the following:

```
cd /usr/src/linux

make menuconfig
```

In Device Drivers  ---> Generic Driver Options  ---> make sure that it looks like this:

```
[ ] Select only drivers that don't need compile-time external firmware

[*] Prevent firmware from being built

<*> Hotplug firmware loading support
```

Recompile the kernel and now all needed options for ACPI-Support can be activated in the kernel config (I renamed the dsdt.hex-file to acpi_dsdt.h and placed it in /usr/src/ct!!!):

```

    Power management options (ACPI, APM)  --->

    [*] Power Management support

      [*] ACPI Support                                                                                                  

      [*]   Sleep States (EXPERIMENTAL)

      <*>   AC Adapter

      <*>   Battery

      <*>   Button

      <*>   Video

      <*>   Fan

      <*>   Processor

      <*>     Thermal Zone

      < >   ASUS/Medion Laptop Extras

      < >   IBM ThinkPad Laptop Extras

      < >   Toshiba Laptop Extras

      [*]   Include Custom DSDT

        (/usr/src/ct/acpi_dsdt.h) Custom DSDT Table file to include

      (0) Disable ACPI for systems before Jan 1st this year

      [*] Debug Statements

      [*] Power Management Timer Support

```

Recompile and install the kernel.

Finally, don't forget to install the acpid and to edit /etc/acpi/events/default to your needs:

```

$ emerge acpid

$ /etc/init.d/acpid start

$ rc-update add acpid boot

```

Now we can continue by tweaking the acpid a little bit. Since I'm using KDE and the suspend-modes aren't working yet, I wanted the following things to work:

When I close the lid, the screen should be turned off (dpms) and my kde-session should be locked

When I press the power-button, the KDE-Logout-menu where you can choose between "End session", "Turn off" and "Restart" should be displayed.To realize this neuron from this forum helped me out and I changed /etc/acpi/default.sh to the following (wherever you find "ct" in this script, change it to your local username):

```
#!/bin/sh

# Default acpi script that takes an entry for all actions

set $*

group=${1/\/*/}

action=${1/*\//}

case "$group" in

 button)

  case "$action" in

   # open kde-logout-screen

   power)

    if pidof X &>/dev/null; then 

     if su ct -c "DISPLAY=:0.0 /usr/kde/3.3/bin/dcop kdesktop" &>/dev/null; then 

      su ct -c "DISPLAY=:0.0 /usr/kde/3.3/bin/dcop kdesktop KDesktopIface logout" 

      for a in 1 2 3 4 5 6 7 8 9 10

      do

       sleep 2 

       if pidof gdmgreeter &>/dev/null; then 

        sleep 5

        /etc/init.d/xdm stop 

        chvt 1

        sync

        #halt

        exit

       fi

      done

      exit 

     fi

    fi

    halt

    ;;

   # lock screen on lid close

   lid) if pidof X &>/dev/null; then 

     su ct -c "REMOTEHOST= DISPLAY=:0.0 /usr/X11R6/bin/xset dpms force off"                    # suspend display

     su ct -c "REMOTEHOST= DISPLAY=:0.0 /usr/kde/3.3/bin/dcop kdesktop KScreensaverIface lock" # lock screen

    fi

    logger "lid switch"

    #echo -n "standby" > /sys/power/state

    ;;

   # suspend notebook to s3

   sleep) logger "sleep state"

    echo -n "standby" > /sys/power/state

    ;;

   # no event

   *) logger "ACPI action $action is not defined"

    ;;

  esac

  ;;

 *)

  logger "ACPI group $group / action $action is not defined"

  ;;

esac
```

Note: If you have a very recent Version of pam running on your system you may have to uncomment the following lines in /etc/security/pam_env.conf:

```
#REMOTEHOST     DEFAULT= OVERRIDE=@{PAM_RHOST}

#

# Set the DISPLAY variable if it seems reasonable

#DISPLAY                DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
```

2.4 USB

[...]

2.5 FireWire

[...]

2.6 Touchpad

[...]

2.7 FN-Keys

Rest-Button (FN + Esc)

This button produces the acpi-event button/sleep SLPB and can be configured using acpid.

Battery Level (FN + F2)

Button makes raw bios calls and works out of the box.

LCD/CRT (FN + F4)

I was not able to get this button work, yet.

Mute (FN + F6)

See volume keys below.

Numlock (FN + F11) & Scroll Lock (FN + F12)

Again raw bios calls, they always work.

Display Brightness (FN + Uparrow / FN + Downarrow)

Again raw bios calls, they always work.

Volume Keys (FN + Leftarrow / FN + Rightarrow / FN + F6)

They send standard keycodes which you can read-out using xev.

KDE: I used Xmodmap to get the FN-Volume-Keys working. Simply create a File named Xmodmap wherever you like (I put it into /etc/X11) with the following content:

```
keycode 174 = XF86AudioLowerVolume

keycode 176 = XF86AudioRaiseVolume

keycode 160 = XF86AudioMute
```

Now you have to execute xmodmap /etc/X11/Xmodmap & on every KDE-startup. For this reason I added a start-script ~/.kde/Autostart/xmod-start.sh with the content:

```
#!/bin/bash

xmodmap /etc/X11/Xmodmap &
```

Gnome: Go to 'Desktop preferences' -> 'Keyboard shortcuts' and set the shortcuts by pressing the appropriate fn-key-combos for 'volume mute/down/up' (hex-codes are 0xa0, 0xae, 0xb0) in the dialog box.

3. Extra Tuning

3.1 Gensplash / Frambuffer-Console

I found this nice toturial which describes very well, how to get the gensplash framebuffer console up and running. Simply have a look at this thread.

As kernel-parameters in my grub.conf I use:

```
video=vesafb:ywrap,pmipal,mtrr,1024x768-32@60 splash=verbose,theme:emergence
```

4. Resources

http://www.debianforum.de/forum/viewtopic.php?t=34600

http://bugme.osdl.org/show_bug.cgi?id=3203Last edited by c_t on Thu Feb 17, 2005 7:18 pm; edited 16 times in total

----------

## liamX30

 *c_t wrote:*   

> 
> 
> 2.7 FN-Keys
> 
> [...]

 

howto make the volume control keys work in gnome 2.6.2:

go to 'desktop preferences' -> 'keyboard shortcuts' and set the shortcuts by pressing the appropriate fn-key-combos for 'volume mute/down/up' (hex-codes are 0xa0, 0xae, 0xb0) in the dialog box.

done so, each time you press those fn-shortcuts, gnome shows a gui-element showing the current volume level and status (mute|unmute)

----------

## c_t

This is my working xorg.conf file with Synaptics-Touchpad-Support. TV-Out- and Twin-View don't work yet.

```
Section "Files"

 RgbPath  "/usr/X11R6/lib/X11/rgb"

 ModulePath "/usr/X11R6/lib/modules"

 FontPath  "/usr/share/fonts/misc"

 FontPath  "/usr/share/fonts/Speedo"

 FontPath  "/usr/share/fonts/Type1"

 FontPath  "/usr/share/fonts/CID"

 FontPath  "/usr/share/fonts/75dpi"

 FontPath  "/usr/share/fonts/100dpi"

 FontPath  "/usr/share/fonts"

 FontPath  "/usr/share/fonts/cyrillic"

 FontPath  "/usr/share/fonts/local"

 FontPath  "/usr/share/fonts/TTF"

 FontPath "/usr/share/fonts/ukr"

 FontPath "/usr/share/fonts/encodings/" 

 FontPath "/usr/share/fonts/util/" 

 FontPath  "/usr/local/share/fonts"

EndSection

Section "ServerFlags"

 AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work

 #DontZap # disable <Crtl><Alt><BS> (server abort)

 DontZoom # disable <Crtl><Alt><KP_+>/<KP_-> (resolution switching)

EndSection

Section "Module"

 Load "dbe" # Double-Buffering Extension

 #Load "v4l" # Video for Linux

 Load "extmod"

 Load "type1"

 Load "speedo"

 Load "freetype"

 Load "glx"

 Load "synaptics" # touchpad

EndSection

Section "InputDevice"

 Identifier "Keyboard1"

 Driver "Keyboard"

   Option "XkbModel" "pc105"

   Option "XkbLayout" "de"

   #Option "XkbVariant" "nodeadkeys"

   #Option "XkbOptions" ""

EndSection

Section "InputDevice"

   Identifier   "USBMouse"

   Driver      "mouse"

   Option      "Protocol"   "IMPS/2"

   Option      "Device"   "/dev/usbmouse"

   Option      "ZAxisMapping"   "4 5"

EndSection

Section "InputDevice"

   Identifier   "SynapticsMouse"

   Driver      "synaptics"

   Option      "Device"   "/dev/psaux"

   Option      "Protocol"   "auto-dev"

   Option      "Buttons"   "5"

   Option      "LeftEdge"   "1700"

   Option      "RightEdge"   "5300"

   Option      "TopEdge"   "1700"

   Option      "BottomEdge"   "4200"

   Option      "FingerLow"   "25"

   Option      "FingerHigh"   "30"

   Option      "MaxTapTime"   "180"

   Option      "MaxTapMove"   "220"

   Option      "VertScrollDelta" "100"

   Option      "MinSpeed"   "0.06"

   Option      "MaxSpeed"   "0.12"

   Option      "AccelFactor"   "0.0010"

   Option      "SHMConfig"   "on"

   #Option      "Repeater"   "/dev/ps2mouse"

EndSection

Section "Monitor"

   Identifier   "Monitor1"

   VendorName   "Generic"

   ModelName   "Flat Panel 1280x800"

   HorizSync   31.5-100

   VertRefresh   59-76

   Option      "IgnoreEDID"         "1"

   Modeline   "1280x800" 83.91 1280 1312 1624 1656 800 816 824 841

   # TV fullscreen mode or DVD fullscreen output.

   # 768x576 @ 79 Hz, 50 kHz hsync

   ModeLine    "768x576" 50.00 768 832 846 1000 576 590 595 630

   # 768x576 @ 100 Hz, 61.6 kHz hsync

   ModeLine    "768x576" 63.07 768 800 960 1024 576 578 590 616

EndSection

Section "Device"

   Identifier   "NvidiaGFX"

   Driver      "nvidia"

   Option      "NvAGP"            "1"

   Option      "DPMS"

   #Option      "TwinView"

   #Option      "UseEdidFreqs"         "on"

   #Option      "SecondMonitorHorizSync"   "30-50"

   #Option      "SecondMonitorVertRefresh"   "60"

   #Option      "MetaModes"         "1024x768, 1024x768; 800x600, 800x600; 640x480, 640x480;"

   #Option      "TVStandard"         "PAL-B"

   #Option "NoLogo" "on"

   #Option "TwinView" "on"

   #Option "TwinViewOrientation" "RightOf"

        #Option "SecondMonitorHorizSync" "range(s)"

        #Option "SecondMonitorVertRefresh" "range(s)"

        #Option "MetaModes" "string"

   #Option "NoTwinViewXineramaInfo" "on"

        #Option "TVStandard" "string"

        #Option "TVOutFormat" "string"

        #Option "TVOverScan" "Dezimalwert zwischen 0.0 und 1.0"

EndSection

Section "Screen"

   Identifier   "Screen1"

   Device      "NvidiaGFX"

   Monitor      "Monitor1"

   DefaultColorDepth 24

   Subsection "Display"

      Depth   24

      Modes   "1280x800" 

      Viewport 0 0

      #Virtual 1280 800

   EndSubsection

EndSection

Section "ServerLayout"

 Identifier "Layout1"

 #InputDevice "USBMouse"  "CorePointer"

 InputDevice "SynapticsMouse" "AlwaysCore"

 InputDevice "Keyboard1"  "CoreKeyboard"

 Screen  "Screen1"

 # Using display power control features

 #Option  "StandbyTime"  "2" # Blank screen after 2 minutes

 #Option  "OffTime"  "5" # Turn off screen after 5 minutes

 #Option  "BlankTime"  "1" 

 #Option  "SuspendTime"  "10" 

EndSection

```

----------

## andreas2000

I think there are lot of people who are missing the scrollwheel for the synaptics touchpad on Samsung X30 Notbeook - here is the way I solved this issue.

This works with kernel 2.6 - I don't know if it also works no 2.4 kernels.

At first: You don't have to emerge synaptics drivers - if you emerge synaptics drivers, the scrollwheel won't work - and therefore scrolling on the touchpad itself won't work - but the scrollwheel is working fine.

You have to enable the evdev Interface in Kernel 2.6

in grub or lilo bootloader you have to add the folowing parameter for booting:

```

psmouse.proto=imps

```

and the xorg.conf looks like following:

```

Section "ServerLayout"

        Identifier     "X.org Configured"

        Screen         "Screen0" 0 0

        InputDevice    "SynapticsTouchpad" "CorePointer"

        InputDevice    "Keyboard0" "CoreKeyboard"

EndSection

Section "InputDevice"

        Identifier  "SynapticsTouchpad"

        Driver      "mouse"

        Option      "Device"            "/dev/psaux"

        Option      "ZAxisMapping"      "4 5"

        Option      "Protocol"          "IMPS/2"

        Option      "CorePointer"

        Option      "SendCoreEvents"    "true"

EndSection

```

But don't forget: SCROLLING ON THE PAD ITSELF WON'T WORK, BUT TAPPING ON THE PAD WILL !

[/list]

----------

## phasezero

[quote="c_t"]Gentoo on Samsung X30

...

Volume Keys (FN + Leftarrow / FN + Rightarrow / FN + F6)

They send standard keycodes which you can read-out using xev.

KDE: I used Xmodmap to get the FN-Volume-Keys working. Simply create a File named Xmodmap wherever you like (I put it into /etc/X11) with the following content:

```
keycode 174 = XF86AudioLowerVolume

keycode 176 = XF86AudioRaiseVolume

keycode 160 = XF86AudioMute
```

Now you have to execute xmodmap /etc/X11/Xmodmap & on every KDE-startup. For this reason I added a start-script ~/.kde/Autostart/xmod-start.sh with the content:

```
#!/bin/bash

xmodmap /etc/X11/Xmodmap &
```

What is xmodmap? It looks like something XFree specific. I'm using x.org-x11. How do I configure the VolumeKeys there?

----------

## c_t

hmm.. It's not really Xfree-specific, I also use xorg and Xmodmap is still part of the xorg-package. So just follow the steps I described above. Normally it should be sufficient to put the file Xmodmap to your home-directory (you would have to name it .Xmodmap instead), then it should be executed on every kde startup automatically.

I don't know why it is not executed....

I hope I could help you...

----------

