I bought lenovo s12 via nano. It comes with win xp and lenovo quick start (linux) with no linux option :-(. To boot in lenovo quick start you need to press QS button instead of power on (lenovo quick start is also ugly piece of shit with no ability to add software or do any extension. it's based on linux, meant to be bios extension [see coreboot], but there is just old stinky buggy [you need bios update to version 23 to support memory upgrade up to 3Gb] phenix bios in lenovo s12). I had spare wd scorpio black 320gb 7200, so first thing I did, I replace standard wd scorpio blue 160Gb 5400 with it. And upgraded up to 3Gb memory.
There are plenty of general reviews out there. Here is a walk-through for driver problems (I did it for 2.6.30.5 stable kernel x86_64).
First of all I liked this netbook for it's CPU. VIA Nano U2250 is great, check this out:
# cat /proc/cpuinfo
processor : 0
vendor_id : CentaurHauls
cpu family : 6
model : 15
model name : VIA Nano processor U2250 (1.6GHz Capable)
stepping : 3
cpu MHz : 1596.022
cache size : 1024 KB
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush acpi mmx fxsr sse sse2 ss tm pbe syscall nx lm constant_tsc rep_good pni monitor vmx est tm2 ssse3 cx16 xtpr rng rng_en ace ace_en ace2 phe phe_en lahf_lm
bogomips : 3192.04
clflush size : 64
cache_alignment : 128
address sizes : 36 bits physical, 48 bits virtual
power management:
It has x86_64 extension, hardware virtualization support (note flag vmx), hardware crypto - via padlock (ace ace_en ace2), hardware random number generator (rng rng_en), multimedia extension like sse2 and ssse3 - quite a nice list for netbook, huh? That forced me to buy this thing as I like to play with kvm and test my software on both 32 and 64-bit platforms. Hardware encryption let me use dm-crypt without pain like on desktop (actually better, as my primary core 2 duo system doesn't have any hardware crypto).
All that via nano processor features are supported by linux kernel. For x86 it's been for a long time in kernel, but for x86_64 it's new (as via 64 bit extensions are new enough). So to get it one can use 2.6.31 branch kernel (that is rc for the time I'm writing this) or take stable one (2.6.30.5 for me at the moment) and pick couple of small changes from 2.6.31 (that's what I did).
Firstly select Centaur processor type:
Symbol: CPU_SUP_CENTAUR [=y]
Prompt: Support Centaur processors
Defined at arch/x86/Kconfig.cpu:459
Depends on: PROCESSOR_SELECT
Location:
-> Processor type and features
-> Supported processor vendors (PROCESSOR_SELECT [=y])
To get via padlock unmasked in menuconfig I pick this changes from 2.6.31:
drivers/crypto/padlock-aes.c and linux-2.6.30.5/drivers/crypto/Kconfig
Then activate it:
Symbol: CRYPTO_DEV_PADLOCK [=y]
Prompt: Support for VIA PadLock ACE
Defined at drivers/crypto/Kconfig:13
Depends on: CRYPTO && CRYPTO_HW && X86 && !UML
Location:
-> Cryptographic API (CRYPTO [=y])
-> Hardware crypto devices (CRYPTO_HW [=y])
Selects: CRYPTO_ALGAPI
Symbol: CRYPTO_DEV_PADLOCK_AES [=y]
Prompt: PadLock driver for AES algorithm
Defined at drivers/crypto/Kconfig:26
Depends on: CRYPTO && CRYPTO_HW && CRYPTO_DEV_PADLOCK
Location:
-> Cryptographic API (CRYPTO [=y])
-> Hardware crypto devices (CRYPTO_HW [=y])
-> Support for VIA PadLock ACE (CRYPTO_DEV_PADLOCK [=y])
Selects: CRYPTO_BLKCIPHER && CRYPTO_AES
Symbol: CRYPTO_DEV_PADLOCK_SHA [=y]
Prompt: PadLock driver for SHA1 and SHA256 algorithms
Defined at drivers/crypto/Kconfig:39
Depends on: CRYPTO && CRYPTO_HW && CRYPTO_DEV_PADLOCK
Location:
-> Cryptographic API (CRYPTO [=y])
-> Hardware crypto devices (CRYPTO_HW [=y])
-> Support for VIA PadLock ACE (CRYPTO_DEV_PADLOCK [=y])
Selects: CRYPTO_SHA1 && CRYPTO_SHA256
If done right you will see this in dmesg:
[ 1.160612] padlock: Using VIA PadLock ACE for AES algorithm.
[ 1.160733] padlock: Using VIA PadLock ACE for SHA1/SHA256 algorithms.
And:
$ cat /proc/crypto
name : cbc(aes)
driver : cbc-aes-padlock
module : kernel
priority : 400
refcnt : 2
selftest : passed
type : givcipher
async : yes
blocksize : 16
min keysize : 16
max keysize : 32
ivsize : 16
geniv : chainiv
name : sha256
driver : sha256-padlock
module : kernel
priority : 300
refcnt : 1
selftest : passed
type : digest
blocksize : 64
digestsize : 32
name : sha1
driver : sha1-padlock
module : kernel
priority : 300
refcnt : 1
selftest : passed
type : digest
blocksize : 64
digestsize : 20
name : cbc(aes)
driver : cbc-aes-padlock
module : kernel
priority : 400
refcnt : 2
selftest : passed
type : blkcipher
blocksize : 16
min keysize : 16
max keysize : 32
ivsize : 16
geniv : <default>
name : ecb(aes)
driver : ecb-aes-padlock
module : kernel
priority : 400
refcnt : 1
selftest : passed
type : blkcipher
blocksize : 16
min keysize : 16
max keysize : 32
ivsize : 0
geniv : <default>
name : aes
driver : aes-padlock
module : kernel
priority : 300
refcnt : 2
selftest : passed
type : cipher
blocksize : 16
min keysize : 16
max keysize : 32
This will give you marvellous performance with dm-crypt. There is not need for special tests. I've got 100% cpu load and 15MB/s on coping from dm-crypted partion to dm-crypted partion _without_ padlock. And ordinal average load not more than 30% without a noticeable penalty coping from dm-crypted partion to dm-crypted partion _with_ padlock at speed 45MB/s! (remember I replaced stock hard drive with faster one).
More than that here is a link with patches for openssl and other userspace software for padlock usage:
http://www.logix.cz/michal/devel/padlock/index.xpFor hardware random generator I pull drivers/char/hw_random/via-rng.c and drivers/char/hw_random/Kconfig 2.6.31 changes for via
Symbol: HW_RANDOM_VIA [=y]
Prompt: VIA HW Random Number Generator support
Defined at drivers/char/hw_random/Kconfig:89
Depends on: HW_RANDOM && X86
Location:
-> Device Drivers
-> Character devices
-> Hardware Random Number Generator Core support (HW_RANDOM [=y])
You will got:
crw-rw---- 1 root root 10, 183 2009-08-23 12:28 /dev/hwrng
and can use something like rngd to benefit from it.
Other hardware:
-[0000:00]-+-00.0 VIA Technologies, Inc. VX800 Host Bridge [1106:0353]
+-00.1 VIA Technologies, Inc. VX800/VX820 Error Reporting [1106:1353]
+-00.2 VIA Technologies, Inc. VX800/VX820 Host Bus Control [1106:2353]
+-00.3 VIA Technologies, Inc. VX800 PCI to PCI Bridge [1106:3353]
+-00.4 VIA Technologies, Inc. VX800/VX820 Power Management Control [1106:4353]
+-00.5 VIA Technologies, Inc. VX800/VX820 APIC and Central Traffic Control [1106:5353]
+-00.6 VIA Technologies, Inc. VX800/VX820 Scratch Registers [1106:6353]
+-00.7 VIA Technologies, Inc. VX800/VX820 North-South Module Interface Control [1106:7353]
+-01.0 VIA Technologies, Inc. Device [1106:1122]
+-02.0-[0000:01]----00.0 Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express [14e4:1713]
+-03.0-[0000:02]----00.0 Broadcom Corporation BCM4312 802.11b/g [14e4:4315]
+-03.1-[0000:03-05]--
+-0d.0 VIA Technologies, Inc. Secure Digital Memory Card Controller [1106:9530]
+-0f.0 VIA Technologies, Inc. VX800 Serial ATA and EIDE Controller [1106:5324]
+-10.0 VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038]
+-10.1 VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038]
+-10.2 VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038]
+-10.4 VIA Technologies, Inc. USB 2.0 [1106:3104]
+-11.0 VIA Technologies, Inc. VX800/VX820 Bus Control and Power Management [1106:8353]
+-11.7 VIA Technologies, Inc. VX800/VX820 South-North Module Interface Control [1106:a353]
+-13.0-[0000:06]--
\-14.0 VIA Technologies, Inc. VT1708/A [Azalia HDAC] (VIA High Definition Audio Controller) [1106:3288]
NetLink BCM5906M Fast Ethernet PCI Express [14e4:1713] works fine with
Symbol: TIGON3 [=y]
Prompt: Broadcom Tigon3 support
Defined at drivers/net/Kconfig:2246
Depends on: NETDEVICES && NETDEV_1000 && PCI
Location:
-> Device Drivers
-> Network device support (NETDEVICES [=y])
-> Ethernet (1000 Mbit) (NETDEV_1000 [=y])
Selects: PHYLIB
Broadcom Corporation BCM4312 802.11b/g [14e4:4315] works fine with
Symbol: LIB80211 [=m]
Prompt: Common routines for IEEE802.11 drivers
Defined at net/wireless/Kconfig:55
Depends on: NET && WIRELESS
Location:
-> Networking support (NET [=y])
-> Wireless (WIRELESS [=y])
Selected by: LIBERTAS && NETDEVICES && ...
And half opened Brodcom corp. driver (no opensource driver yet). I take ubuntu package "bcmwl-kernel-source_5.10.91.9+bdcom-0ubuntu4_amd64.deb" (
http://packages.ubuntu.com/karmic/bcmwl-kernel-source) as it contains patches for new kernel versions. Driver works pretty well, gives full 54 Mb/s no problems was encountered.
Secure Digital Memory Card Controller [1106:9530] works fine (very good performance) with
stock kernel driver from 2.6.31
I pull changes from this files: linux/drivers/mmc/host/via-sdmmc.c and linux/drivers/mmc/host/Kconfig, linux/drivers/mmc/host/Makefile for via
Symbol: MMC_VIA_SDMMC [=m]
Prompt: VIA SD/MMC Card Reader Driver
Defined at drivers/mmc/host/Kconfig:245
Depends on: MMC && PCI
Location:
-> Device Drivers
-> MMC/SD/SDIO card support (MMC [=y])
VT1708/A [Azalia HDAC] (VIA High Definition Audio Controller) [1106:3288] works fine with
Symbol: SND_HDA_CODEC_REALTEK [=y]
Prompt: Build Realtek HD-audio codec support
Defined at sound/pci/hda/Kconfig:42
Depends on: SOUND && !M68K && SND && SND_PCI && SND_HDA_INTEL
Location:
-> Device Drivers
-> Sound card support (SOUND [=m])
-> Advanced Linux Sound Architecture (SND [=m])
-> PCI sound devices (SND_PCI [=y])
-> Intel HD Audio (SND_HDA_INTEL [=m])
Symbol: SND_HDA_CODEC_ANALOG [=y]
Prompt: Build Analog Device HD-audio codec support
Defined at sound/pci/hda/Kconfig:54
Depends on: SOUND && !M68K && SND && SND_PCI && SND_HDA_INTEL
Location:
-> Device Drivers
-> Sound card support (SOUND [=m])
-> Advanced Linux Sound Architecture (SND [=m])
-> PCI sound devices (SND_PCI [=y])
-> Intel HD Audio (SND_HDA_INTEL [=m])
and generic HD-audio codec parser
As for usb devices:
BCM2046 Bluetooth Device
Bus 004 Device 002: ID 0a5c:2150 Broadcom Corp. works fine with stock kernel drivers
webcam (Lenovo EasyCamera)
Bus 001 Device 003: ID 04f2:b090 Chicony Electronics Co., Ltd works fine with stock kernel drivers
And for desert graphic card (VIA VX800 VIA Chrome 9 HC3):
lspci -s 00:01.0 -vnn
00:01.0 VGA compatible controller [0300]: VIA Technologies, Inc. Device [1106:1122] (rev 11)
Subsystem: Lenovo Device [17aa:388c]
Flags: bus master, fast devsel, latency 32, IRQ 10
Memory at d0000000 (32-bit, prefetchable) [size=256M]
Memory at f4000000 (32-bit, non-prefetchable) [size=16M]
Memory at f0000000 (32-bit, non-prefetchable) [size=64M]
[virtual] Expansion ROM at 50000000 [disabled] [size=64K]
Capabilities: [60] Power Management version 2
Capabilities: [90] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable-
It's pain. At the moment no working 3D as far as I know. Please let me know if you got it!
You will buy lenovo s12 you gonna be frequent guest of openchrome.org - there are lot of info how to get this card working. I use svn version of openchrome driver. It's working fine in EXA mode and give 2D acceleration (it's fine for watching movies, not hdv). Specs are mostly open and there is work going hard to make drivers better and support major features like 3D and hardware mpeg4.
At the moment there is nothing about Lenovo S12 in driver. So to eliminate xorg error message you can add this line:
[UPDATE: openchrome guys work quickly, line is already commited in trunk]:
--- src/via_id.c 2009-08-22 22:29:51.618098173 +0400
***************
*** 223,228 ****
--- 223,229 ----
{"Samsung NC20", VIA_VX800, 0x144d, 0xc04e, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
{"Quanta DreamBook Light IL1", VIA_VX800, 0x152d, 0x0771, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
{"VIA OpenBook", VIA_VX800, 0x1170, 0x0311, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, /* VIA OpenBook eNote VBE8910 */
+ {"Lenovo S12", VIA_VX800, 0x17aa, 0x388c, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
/*** VX855 ***/
{"VIA VT8562C", VIA_VX855, 0x1106, 0x5122, VIA_DEVICE_CRT},
mine xorg.conf (tested with X.Org X Server 1.6.0):
# xorg.conf (X.Org X Window System server configuration file)
Section "Module"
Load "bitmap"
Load "extmod"
Load "int10"
Load "vbe"
Load "dri"
Load "glx"
Load "dbe"
Load "v4l"
Load "synaptics"
EndSection
Section "Monitor"
Identifier "LCD-Panel"
Option "DPMS"
HorizSync 60
VertRefresh 31.5-90
modeline "1280x800@60" 83.46 1280 1344 1480 1680 800 801 804 828 -hsync +vsync
EndSection
Section "Device"
Identifier "VX800"
BusID "PCI:00:01:0"
BoardName "VIA Chrome9 HC3"
VendorName "VIA Tech"
Driver "openchrome"
Option "AccelMethod" "EXA"
Option "ExaScratchSize" "8192"
Option "ExaNoComposite" "On"
Option "MigrationHeuristic" "greedy"
Option "HWCursor" "on"
EndSection
Section "Screen"
Identifier "Screen0"
Device "VX800"
Monitor "LCD-Panel"
DefaultDepth 24
SubSection "Display"
Modes "1280x800"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "DRI"
Mode 0666
EndSection
That's all folks. I like my lenovo s12 for it's cpu features and price (about $406 in russia). All devices except graphics adapter works fine (all features will be in stock 2.6.31 kernel).
Couple of thing I dislike are:
- win xp (why should I sponsor ms?)
- glossy screen
- no 3d for graphics adapter yet
Update: If you plan to upgrade RAM to 3Gb you need bios version >=23. Don't forget to update bios before you throw win xp into rubbish bin (where is its place), because lenovo offer bios update software for win xp only (no bare binary image). :-(