Samsung N220
Das Samsung N220 ist ein Netbook basierend auf der neuen Pineview-Plattform von Intel. Da das Gerät in vielen Tests sehr gut abgeschnitten hat und vor allem eine lange Akkulaufzeit und sehr gute Tastatur bietet, habe ich mir das N220 zugelegt. Der EeePC ist damit in Rente. Da ich den N220 unter openSUSE betreibe, liegt mein Augenmerk natürlich auf Installation und Konfiguration von Linux.
Spezifikation
- Intel Pineview Plattform
- Prozessor: Intel® Atom™ Processor N450 (512K Cache, 1.66 GHz), Wikipedia
- Display: 1024x600 Pixel
- Grafik: Intel® Graphics Media Accelerator 3150 (Intel® GMA 3150)
- Quick Reference
- notebookcheck.com
- max. Auflösung am externen Display (VGA): 1400x1050 (N450, N470), 2048x1536 (D410, D510)
- LAN: Marvell Yukon 88E8040 PCI-E (10/100 MBit)
- WLAN: Atheros AR9285, siehe wireless.kernel.org
- Sound: Realtek ALC269 @ Intel 82801GBM
- Festplatte: Samsung HM250HI, Spinpoint M7, 250 GB, 5400 RPM, 2.5 Zoll, Höhe 9.5 mm
Offizielle Infos und Support von Samsung
- N220-Marvel (NP-N220-JA02DE)
Für Backup und Restore des Windows-Krams:
- How To Use Samsung Recovery Solution 4 (Backup)
- How To Use Samsung Recovery Solution 4 (Restore)
Testberichte und Infos
- ndevil.com
- N-Modelle ndevil.com
- notebookcheck.net
- Amazon
- tomshardware.de
- mini-notebook-laptop.com
- netzwelt.de
- zdnet.de
- arcor.de (PC-WELT Test)
- Erfahrungsbericht Samsung N220 – Pine Trail Netbook
Foren und Wikis
- sammynetbook.com
- sammynetbook.com - Linux
- sammyforum.de
- archlinux.org - Samsung N150
Linux/openSUSE Unterstützung
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
Weitere Hinweise:
- Kernel-Modul für Samsung Netbooks siehe samsung-laptop.ko (noch in Entwicklung, staging)
Installation und Konfiguration unter openSUSE
Die folgende Beschreibung gilt für openSUSE 11.3 Milestone 4 bzw. 5. Die meisten Tipps und Vorschläge zum Betrieb unter Linux habe ich im folgenden übernommen von der Seite Samsung N150 auf archlinux.org. Das N220 ist intern fast identisch zum N150.
Updates:
- Konfiguration und Verhalten erfolgreich unter openSUSE 11.4 getestet.
- Spezielles Script und Tastaturbelegung für WLAN Toggle (Fn-F9) nicht mehr nötig.
Windows-Auslieferungszustand
Partitionstabelle nach Ersteinrichtung des mitgelieferten Windows 7 Starter:
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
Installation
Die Installation von openSUSE 11.3 Milestone 5 (initial über openSUSE-NET-x86_64-Build0552-Media.iso aus dem früheren Factory-Zweig) musste mit dem Kernel-Bootparameter "acpi=off" im Textmodus erfolgen, 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
Hinweis: Das Script und die explizite Tastaturbelegung für WLAN Toggle (Fn-F9) ist seit openSUSE 11.4 (KDE 4.6) nicht mehr nötig. Das Script unten funktioniert aber immer noch.
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/bttoggle
#!/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
Wenig Probleme. Manchmal wacht das Gerät aber nicht wieder auf und muss neu gestartet werden.
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 / Powermanagement
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" bzw. "Kurzbefehle und Gestensteuerung" 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
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.
Besondere Anwendungen und Dienste
- initrd: dm_mod und ext4 hinzugefügt in /etc/sysconfig/kernel
- Postfix: relayhost und sasl-Parameter
- NTP
- knetworkmanager
- Webcam Apps, Skype
Offene Punkte
- Belegen von Fn-F10 mit Ausgabe des Touchpad-Zustands (an/aus)
- Doppelklick Touchpad (wenn man es denn braucht)
- Testen und Belegen von Fn-F4 mit Display-Umschalter-Script
LED für "WLAN an/aus" leuchtet ständig.Gelöst mit openSUSE 11.4.Überschreiben von /etc/resolv.conf durch netconfig (networkmanager), dabei wird "options single-request" nicht eingefügt für IPv6.Kann über Dateien in /etc/NetworkManager/dispatcher.d gesteuert werden.- Magic-Sysrequests aktivieren