Samsung N220

aus www.kruedewagen.de, Homepage von Ralf und Judith Krüdewagen (Kruedewagen)
Zur Navigation springen Zur Suche springen

Offizielle Infos und Support von Samsung

Für Backup und Restore des Windows-Krams:

Spezifikation

Testberichte und Infos

Foren und Wikis


Windows Auslieferungszustand

Partitionstabelle nach Einrichtung:

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x9d97ba08

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1959    15728640   27  Unknown
/dev/sda2   *        1959        1972      102400    7  HPFS/NTFS
/dev/sda3            1972        7193    41943040    7  HPFS/NTFS
/dev/sda4            7193       30402   186422272    f  W95 Ext'd (LBA)
/dev/sda5            7193       29829   181820416    7  HPFS/NTFS
/dev/sda6           29829       30401     4598464+  49  Unknown
  • sda1: Wiederherstellungspartition (Samsung Recovery Solution)
  • sda2: SYSTEM-Partition (daraus wird Windows gebootet)
  • sda3: C-Laufwerk
  • sda4: Extended
  • sda5: D-Laufwerk
  • sda6: - (nicht benutzt)

Firmware (nach Update): 08JI

Linux/openSUSE Unterstützung

Kernel-Modul mit N220-Support ggf. geplant, siehe samsung-laptop.ko

GMA 3150 Grafik:

  • unterstützt seit xf86-video-intel 2.10.0 release (Jan 2010)
  • enthalten ab openSUSE 11.3 (Milestone Releases), Xorg 7.5
  • kernel mode-setting (KMS) mandatory, ab Kernel 2.6.32

Probleme:

  • Handbuch nur im Flash-Format und zudem nur als exe-Datei
  • BIOS-Update nur als exe-Datei

Installation und Konfiguration unter openSUSE 11.3 Milestone 5

Die meisten Tipps und Vorschläge wurden übernommen von der Seite Samsung N150 auf archlinux.org.

Installation

Die Installation von openSUSE 11.3 Milestone 5 musste im Textmodus erfolgen mit dem Kernel-Bootparameter "acpi=off", da Maus und Tastatur in Yast im Grafikmodus nicht funktionierten. Nach der Installation trat dieses Problem nicht mehr auf.

Partitionierung

Für Windows 7 wurde erstmal eine 40GB Partition behalten (sda1-sda3), um z.B. BIOS-Updates machen zu können. Der Rest wurde für Linux partitioniert, wobei eine normale Partition für /boot (sda5) eingerichtet wurde und der Rest für Verwendung mittels LVM (sda6).

fdisk -l /dev/sda:

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x9d97ba08

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1959    15728640   27  Unknown
/dev/sda2            1959        1972      102400    7  HPFS/NTFS
/dev/sda3            1972        7193    41943040    7  HPFS/NTFS
/dev/sda4   *        7194       30401   186418260    f  W95 Ext'd (LBA)
/dev/sda5            7194        7218      200781   83  Linux
/dev/sda6            7219       30401   186217416   8e  Linux LVM

cat /etc/fstab:

/dev/vgsystem/root   /                    ext4       acl,user_xattr        1 1
/dev/mapper/cr_data  /data                ext4       acl,user_xattr,nofail 0 0
/dev/vgsystem/swap   swap                 swap       defaults              0 0
/dev/disk/by-id/ata-SAMSUNG_HM250HI_S20TJ9BZ216055-part5 /boot                ext4       acl,user_xattr        1 2
proc                 /proc                proc       defaults              0 0
sysfs                /sys                 sysfs      noauto                0 0
debugfs              /sys/kernel/debug    debugfs    noauto                0 0
usbfs                /proc/bus/usb        usbfs      noauto                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0

pvdisplay:

  --- Physical volume ---
  PV Name               /dev/sda6
  VG Name               vgsystem
  PV Size               177.59 GiB / not usable 968.00 KiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              45463
  Free PE               2
  Allocated PE          45461
  PV UUID               acjsI7-OsNy-3NFW-816J-n53o-tBqp-DAZV0Q

vgdisplay:

  --- Volume group ---
  VG Name               vgsystem
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               177.59 GiB
  PE Size               4.00 MiB
  Total PE              45463
  Alloc PE / Size       45461 / 177.58 GiB
  Free  PE / Size       2 / 8.00 MiB
  VG UUID               RZWnh9-r41m-dIpo-2d5z-bZoE-oOvu-fTnKIk

lvdisplay:

  --- Logical volume ---
  LV Name                /dev/vgsystem/data
  VG Name                vgsystem
  LV UUID                xMbY2e-m1rm-ej2h-raVC-Eoey-DDZB-eMDavx
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                143.58 GiB
  Current LE             36757
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Name                /dev/vgsystem/root
  VG Name                vgsystem
  LV UUID                5wPLgI-oiLp-OsE8-NFsM-tZvl-kA1s-fCLqZg
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                30.00 GiB
  Current LE             7680
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
   
  --- Logical volume ---
  LV Name                /dev/vgsystem/swap
  VG Name                vgsystem
  LV UUID                Rge7xU-Ilzm-EOuV-ef8D-ONoO-M1Oi-SFLUHB
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

Ethernet

Das 10/100 MBit/s Interface wird direkt erkannt. Kernel-Modul ist sky2.

WLAN

WLAN funktioniert ohne Anpassung. Kernel-Modul ist athk9.

Zum Aktivieren von WLAN muss zunächst einmal der "Hardware-Schalter" im BIOS eingeschaltet sein. Dann kann man mit dem folgenden Script, ähnlich wie unter archlinux.org beschrieben, WLAN aus- und einschalten:

cat /usr/local/sbin/rftoggle:

#!/bin/bash
FONT='-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*'
DELAY=2

blocked=`/usr/sbin/rfkill list wlan | grep "Soft blocked: yes"`

if [ -z "$blocked" ]; then
   sudo /usr/sbin/rfkill block wlan
   kdialog --passivepopup "WLAN disabled" 3
   osd_cat -A center -p middle -f $FONT -d $DELAY << EOF
   WLAN disabled
EOF
else
   sudo /usr/sbin/rfkill unblock wlan
   kdialog --passivepopup "WLAN enabled" 3
   osd_cat -A center -p middle -f $FONT -d $DELAY << EOF
   WLAN enabled
EOF
fi

Dabei wird mit dem rfkill-Kommando gearbeitet, welches man auch für die Abfrage des Status verwenden kann:

rfkill list

Zuordnung zu Fn-F9-Tastenkombination siehe unten.

Bluetooth

Ein- und Ausschalten des Bluetooth-Devices geht unabhängig von WLAN mit dem folgenden Script, inkl. Anzeige in X11.

cat /usr/local/sbin/rftoggle

#!/bin/bash
FONT='-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*'
DELAY=2

blocked=`/usr/sbin/rfkill list bluetooth | grep "Soft blocked: yes"`

if [ -z "$blocked" ]; then
   sudo /usr/sbin/rfkill block bluetooth
   kdialog --passivepopup "Bluetooth disabled" 3
   osd_cat -A center -p middle -f $FONT -d $DELAY << EOF
   Bluetooth disabled
EOF
else
   sudo /usr/sbin/rfkill unblock bluetooth
   kdialog --passivepopup "Bluetooth enabled" 3
   osd_cat -A center -p middle -f $FONT -d $DELAY << EOF
   Bluetooth enabled
EOF
fi

Zuordnung zu Fn-F8-Tastenkombination siehe unten.

Audio

Kein Problem, wird automatisch erkannt und unterstützt. Kernel-Module snd_hda_codec_realtek und snd_hda_intel.

Grafik und Display

Die Xorg Version 7.5 arbeitet sehr gut zusammen mit dem Grafik-Chip, ohne Erstellung einer /etc/X11/xorg.conf.

Umschaltung der Grafik-Ausgabe

Externes Display mit 1920x1080 ansteuern (was entgegen der Spec funktioniert):

xrandr --output VGA1 --mode 1920x1080

Internes Display ausschalten:

xrandr --output LVDS1 --off

Wieder das interne Display initialisieren/einschalten:

xrandr --output LVDS1 --mode 1024x600

Externes Display ausschalten:

xrandr --output VGA1 --off

Das Script kann genutzt werden und auf Fn-F4 gelegt werden, um das Display umzuschalten.

In /usr/local/bin/display_toggle wurden die Devices angepasst und die DISPLAY-Variable auskommentiert:

...
# External output may be "VGA" or "VGA-0" or "DVI-0" or "TMDS-1"
EXTERNAL_OUTPUT="VGA1"
INTERNAL_OUTPUT="LVDS1"
EXTERNAL_LOCATION="left"

# Figure out which user and X11 display to work on
# TODO there has to be a better way to do this?
X_USER=$(w -h -s | grep ":[0-9]\W" | head -1 | awk '{print $1}')
#export DISPLAY=$(w -h -s | grep ":[0-9]\W" | head -1 | awk '{print $3}')

# Switch to X user if necessary
...

Helligkeit des interne Displays

Siehe Script archlinux.org. Das Script /usr/local/sbin/backlight funktioniert auch auf dem N220:

#!/bin/bash
# increase/decrease/set/get the backlight brightness (range 0-255)
#

# PCI device on which to operate
DEVICE=00:02.0

# Amount to raise/lower the backlight when called with "up" or "down"
AMOUNT=8

# Minimum backlight value reachable via "down"
MIN=1

# Default backlight level when toggling on
DEFAULT=6c

#get current brightness in hex and convert to decimal
var1=`setpci -s $DEVICE F4.B`
var1d=$((0x$var1))
case "$1" in
       up)
               #calculate new brightness
               var2=`echo "ibase=10; obase=16; a=($var1d+$AMOUNT);if (a<255) print a else print 255" | bc`
               echo "$0: increasing brightness from 0x$var1 to 0x$var2"
               setpci -s $DEVICE F4.B=$var2
               ;;
       down)
               #calculate new brightness
               var2=`echo "ibase=10; obase=16; a=($var1d-$AMOUNT);if (a>$MIN) print a else print $MIN" | bc`
               echo "$0: decreasing brightness from 0x$var1 to 0x$var2"
               setpci -s $DEVICE F4.B=$var2
               ;;
       set)
               #n.b. this does allow "set 0" i.e. backlight off
               echo "$0: setting brightness to 0x$2"
               setpci -s $DEVICE F4.B=$2
               ;;
       get)
               echo "$0: current brightness is 0x$var1"
               ;;
       toggle)
               if [ $var1d -eq 0 ] ; then
                       echo "toggling up"
                       setpci -s $DEVICE F4.B=$DEFAULT
               else
                       echo "toggling down"
                       setpci -s $DEVICE F4.B=0
               fi
               ;;
       *)
               echo "usage: $0 {up|down|set <val>|get|toggle}"
               ;;
esac
exit 0

Suspend to RAM

Kein Problem.

Touchpad

Ein- und Ausschalten geht ohne Anpassung mittels Fn-F10. Siehe Script unter http://wiki.archlinux.org/index.php/Samsung_N150#Touchpad für das Prüfen, ob das Touchpad eingeschaltet ist. Leider lässt sich das Script nicht auf Fn-F10 legen. Mein Script /usr/local/bin/report_touchpad mit leichten Änderungen bei der Anzeige:

#!/bin/bash

FONT='-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*'
DELAY=1
state=Unknown

case "$1" in
   on)
      state=Enabled
      ;;
   off)
      state=Disabled
      ;;
   *)
      echo "usage: $0 {on|off}"
      exit 2
      ;;
esac

kdialog --passivepopup "Touchpad $state" 3
osd_cat -A center -p middle -f $FONT -d $DELAY << EOF
Touchpad $state
EOF

exit 0

Für Aktivierung von Multitouch gibt es dort auch ein HAL-Eintrag, welcher unter /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi abgelegt ist:

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
        <device>
                <match key="info.capabilities" contains="input.touchpad">
                        <merge key="input.x11_driver" type="string">synaptics</merge>
                        <merge key="input.x11_options.TapButton1" type="string">1</merge>
                        <merge key="input.x11_options.TapButton2" type="string">2</merge>
                        <merge key="input.x11_options.TapButton3" type="string">3</merge>


                        <merge key="input.x11_options.SHMConfig" type="string">true</merge>

                        <merge key="input.x11_options.VertEdgeScroll" type="string">false</merge>
                        <merge key="input.x11_options.PalmDetect" type="string">false</merge>

                        <merge key="input.x11_options.VerteScrollDelta" type="string">100</merge>

                        <merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge>
                        <merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge>
                        <merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">40</merge>
                        <merge key="input.x11_options.EmulateTwoFingerMinW" type="string">5</merge>



                </match>
        </device>
</deviceinfo>

CPU Frequenz umschalten

Siehe http://wiki.archlinux.org/index.php/Samsung_N150#CPU_frequency_scaling. Die dort genannten Module werden bereits automatisch gestartet. Das Script /usr/local/sbin/cpufreq_toggle siehe wie folgt aus:

#!/bin/bash

current=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor`
future=unknown

if [ "$current" == "performance" ]; then
   future="ondemand"
elif [ "$current" == "ondemand" ]; then
   future="powersave"
else
   future="performance"
fi

echo "$future" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "$future" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

echo "$future"

Und hier das Script /usr/local/bin/cpufreq_toggle_osd, welches noch eine Anzeige in X11 bietet:

#!/bin/bash

FONT='-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*'
DELAY=1

state=`sudo /usr/local/sbin/cpufreq_toggle | tail -1`
message="CPU Performance State Unknown"

if [ "$state" == "performance" ]; then
   message="Performance Mode"
elif [ "$state" == "powersave" ]; then
   message="Low Power Mode"
elif [ "$state" == "ondemand" ]; then
   message="Automatic Mode"
fi

kdialog --passivepopup "$message" 3
osd_cat -A center -p middle -f $FONT -d $DELAY << EOF
$message
EOF

exit 0

Akku

Die Anzeige des Akku-Zustand (inkl. der verbleibenden Zeit) erledigt das folgende Script, welches auf Fn-F2 gelegt wird (s.u.):

#!/bin/bash

FONT='-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*'
DELAY=3

state=`acpi -V`

kdialog --passivepopup "$state" 3
osd_cat -A center -p middle -f $FONT -d $DELAY << EOF
$state
EOF

exit 0

Fn-Tasten

Viele Fn-Tasten werden vom System nicht erkannt. Die zugehörigen Keycodes müssen erstmal bekannt gemacht werden. Eintrag in /etc/init.d/boot.local:

setkeycodes e002 227   # Fn+F4 maps to switchvidmode
setkeycodes e003 236   # Fn+F2 maps to battery
setkeycodes e004 148   # Fn+F5 maps to prog1
setkeycodes e006 238   # Fn+F9 maps to wlan
setkeycodes e008 225   # Fn+Up maps to brightnessup
setkeycodes e009 224   # Fn+Dn maps to brightnessdown
setkeycodes e031 149   # Fn+F7 maps to prog2
setkeycodes e033 202   # Fn+F8 maps to prog3
setkeycodes e077 191   # Fn+F10 maps to F21 whenever the touchpad is enabled
setkeycodes e079 192   # Fn+F10 maps to F22 whenever the touchpad is disabled

# Ensure key release events occur for all except Fn+F7, which properly reports a key release for some reason
echo 130,131,132,134,136,137,179,247,249 > /sys/devices/platform/i8042/serio0/force_release

Dann kann man die Fn-Tasten in KDE4 unter "Systemeinstellungen -> Systemverwaltung -> Tastenkombinationen" einem Befehl bzw. Script zugeordnen. Die Einstellungen landen dann unter ~/.kde4/share/config/khotkeysrc.

Folgende Fn-Tasten wurden dort konfiguriert:

  • Display-Helligkeit erhöhen - Fn-Pfeil-hoch - sudo /usr/local/sbin/backlight up
  • Display-Helligkeit verringern - Fn-Pfeil-runter - sudo /usr/local/sbin/backlight down
  • Display an/aus - Fn-F5 - sudo /usr/local/sbin/backlight toggle
  • WLAN an/aus - Fn-F9 - /usr/local/sbin/rftoggle
  • Bluetooth an/aus - Fn-F8 - /usr/local/sbin/bttoggle
  • CPU-Powermodus umschalen - Fn-F7 - /usr/local/bin/cpufreq_toggle_osd
  • Akku-Status anzeigen - Fn-F2 - /usr/local/bin/report_battery
  • Display ext - Fn-F4 - xrandr --output VGA1 --mode 1280x1024

Konfiguration visudo:

Cmnd_Alias NETBOOK_CMDS = /usr/local/sbin/backlight, /usr/local/sbin/rftoggle, /usr/local/sbin/bttoggle, /usr/local/sbin/cpufreq_toggle, /usr/sbin/rfkill
%users  ALL=(ALL) NOPASSWD: NETBOOK_CMDS

Für HAL existieren Einträge für Samsung-Notebooks. Dort kann man den N220 ergänzen, was allerdings keinen Einfluss auf nötige setkeycodes-Kommandos hat.

cat /usr/share/hal/fdi/information/10freedesktop/30-keymap-misc.fdi

 <match key="/org/freedesktop/Hal/devices/computer:system.hardware.product" contains_outof="NC10;SP55S;SQ45S70S;SX60P;SX30S;SX22S;R59P/R60P/R61P;Q210;Q310;X05;P560;R560;N150/N210/N220">
...
          <append key="input.keymap.data" type="strlist">e077:f21</append> <!-- Fn+F10 Touchpad on -->
          <append key="input.keymap.data" type="strlist">e079:f22</append> <!-- Fn+F10 Touchpad off -->
...

Webcam

Die Webcam funktioniert ohne Anpassungen mit Skype und anderen Webcam-Applikationen (wxcam, cheese). Kernel-Modul ist uvcvideo.

Offene Punkte

  • Magic Sysrequests aktivieren
  • LED für "WLAN an/aus" leuchet ständig
  • Doppelklick Touchpad

Anwendungen und Dienste

  • initrd: dm_mod und ext4 hinzugefügt in /etc/sysconfig/kernel
  • Postfix
  • NTP
  • knetworkmanager
  • Webcam Apps, Skype