NEC Versa S950

From ArchWiki
Revision as of 19:45, 21 October 2008 by Axsiag (talk | contribs)
Jump to: navigation, search

Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n links end


NEC Versa S950 is a relatively small Pentium M based laptop with non-glare 14" display. Its weight is around 2.2 kg, and supplied 4800 mAh battery lets it run for ~3h in autonomous mode.

Linux support is complete for this device, all built-in peripherals have functional linux drivers. Arch Linux installation goes smoothly. Aside from local sources (DVD, USB or possibly SD) you can use Ethernet for network installation, but probably not Wi-Fi.

In this guide I'll describe describe what may be done after installation to get all the hardware working. I assume reader has some general linux knowledge, and skip nonspecific parts of installation and Arch configuration.


  • Processor: Pentium M 1.73GHz
  • Screen: 14" non-glare 1280x768
  • Memory size: 1G
  • Hard disk: 60G Hitachi Travelstar 5K100
  • Chipset: i915GM
  • BIOS: Phoenix NoteBIOS ver.4 rev.6.1
  • Sound: SigmaTel STAC9200
  • Ethernet: Broadcom BCM5788
  • Wi-Fi: Intel PRO/Wireless 2200BG
  • Bluetooth: Broadcom 2101
  • IrDA: NSC unknown
  • Modem: Agere Athens
  • Card reader: TI FlashMedia SD
  • FireWire: TI OHCI compilant

There are several other modifications, with different RAM and HDD sizes.



Use acpi-cpufreq module together with some governor (cpufreq_ondemand probably) to control CPU speed. Install cpufrequtils from [extra], check /etc/conf.d/cpufreq:

	#min_freq commented out
	#max_freq commented out

then add cpufreq to DAEMONS in /etc/rc.conf (and/or run it manually).

See Cpufrequtils, CPU_Frequency_Scaling.

Text Console

No useful BIOS textmodes. Pity. Either leave it as is, or use framebuffer.


Video is handled by intel driver. Relevant section of my xorg.conf is

	Section "Device"
		Identifier		"i915G"
		Driver			"intel"
		Option "DRI"		"true"
	Section "Screen"
		Identifier		"Screen0"
		Device			"i915G"
		Monitor			"Versa display"
		DefaultColorDepth	24
		SubSection "Display"
			Depth 		24
			Modes		"1280x768"
			Virtual		2560 768

DRI is backed by i915.ko, which seems to be autoloaded — no need to mention it in rc.conf.

You should get native 1280x768 without running 915resolution, but in some cases I had to use it; check carefully which mode X uses!

Virtual is set to accomodate two 1280x768 displays side-to-side; you may need to tweak it for your needs. See [NEC_Versa_S950#External display|xrandr setup].

Note: seems like there's no software way to control backlight brightness.


Laptop keyboard may require keymap tweaking, but that's not necessary. Fn key is processed somewhere in BIOS and you have no control over it. Two additional buttons near power switch generate codes 178 and 236 - bind them if you need them. See Multimedia keys on Arch forum.

Touchpad is connected via standard PS/2 interface, all necessary modules are autoloaded — just use /dev/input/mice. It's a good idea to turn Emulate3Buttons on, there's no hardware button 3. Buttons 4 and 5 (scroll), on the other hand, are there: tap on the upper right / lower right corners of the pad, or lay your finger there and wait.

Relevant section from xorg.conf:

	Section "InputDevice"
		Identifier		"Main mouse"
		Driver 			"mouse"
		Option "Protocol"	"auto"
		Option "Device"		"/dev/input/mice"
		Option "Emulate3Buttons" "true"
		Option "ZAxisMapping"	"4 5"

Hitachi HDD

To avoid excessive load/unload cycles, add

	hdparm -q -B 255 /dev/sda

to rc.local, tweaking -B value according to your needs.

Beware: head parking can be useful; in particular, it can save your HDD when laptop falls. Do not use hdparm -B unless you known exactly what you are doing.

See laptop harddrive Load_Cycle_Count issue.

Sound and Ethernet

No additional setup required, modules (snd_hda_intel and tg3 resp.) are guessed by Arch installer.


Driver module, ipw2200, is guessed correctly by installer, but it won't work unless you install firmware — ipw2200-fw from [core]. Add

	options ipw2200 led=1

to modprobe.conf (or modprobe.d/ipw2200) to enable front panel LED. Also note, you can turn it on/off by pressing Fn+F2, but current device state can be hard to guess. "Failed to send SCAN_ABORT" in kern.log means card is being turned on, and LED should show some activity (flash from time to time at least).


Bluetooth dongle is connected via USB and handled by hci_usb module, which is autoloaded when necessary. Pressing Fn+F4 actually (dis)connects it from the bus, this can be seen in kern.log. The driver does NOT reports anything when it finds device; mount usb fs:

	mount -t usbfs none /proc/bus/usb

and examine /proc/bus/usb/devices to find "Foxconn Bluetooth", then check whether Driver=hci_usb.

Note: for "hcitool dev" to work, you need the whole pack of daemons running. Install bluez-utils and examine /etc/rc.d/bluetooth.

See Bluetooth for more information.


Load nsc-ircc module, and/or add it to MODULES in rc.conf. Should work, though I didn't test it with any real device.


No setup needed, ohci1394 module is autoloaded.

CardBus (PCMCIA)

No setup needed.

Card reader

No setup needed, tifm_sd module seem to be autoloaded. Your card will be accessible as /dev/mmcblk0, with partitions mmcblk0p1 etc.


To get native resolution in framebuffer, you have to use uvesafb. This thing is quite tricky, my recipes may or may not work for you, so get ready to read the real docs.

You need to put v86d together with 915resolution to initrd. Both can be found in Arch repositories, but you probably won't be able to use those. Check if prebuilt v86d runs, then examine it with ldd — you should not get segfaults. If you do, reconfigure it --with-x86emu. Then rebuild 915resolution using klibc instead of glibc (set CC=klcc for make), otherwise it won't be usable within initrd.

You need hook files for mkinitcpio, namely /lib/initcpio/{install,hooks}/{915resolution,v86d}. Get them from prebuilt packages, then modify HOOKS in /etc/mkinitcpio.conf:

	HOOKS = (base udev 915resolution v86d ... )

resolution settings in /lib/initcpio/hooks/915resolution

	msg -n ":: Patching the VBIOS..."
	/usr/sbin/915resolution 5c 1280 768

and /etc/modprobe.d/uvesafb:

	options uvesafb mode=1280x768 scroll=ywrap

(note: module parameter is mode=, not mode_option= as default configuration suggests). At this point, you may try to modprobe uvesafb — text console should switch to framebuffer.

If everything's ok, run

	mkinitcpio -p kernel26

to rebuild initrd and reboot.

Note: this is one of possible ways to setup uvesafb. You can insert the module later, say, in rc.local; initcpio won't be involved at all. You can try to compile it statically into kernel and possibly get graphical console much earlier.

Warning: suspend-to-RAM and uvesafb are mutually exclusive, at least for this laptop. You can't choose both.

See uvesafb in Arch wiki and official site.


There's no modem in this laptop. Ok, nowadays such things are sometimes called "modems", but, well, they aren't. Agere Athens (or Athena according to some NEC specs) is and AMR-type card, which is in fact a sound card add-on with fancy (phone) connector, nothing more. It is handled by snd_hda_intel, and you can see some of its controls in alsamixer.

To make a real modem out of this, you need some software DSP to analyze and make all those hissing, chirping and beeping which real modems use to communicate. There's one called slmodem. Make sure it is built with SUPPORT_ALSA=1, and run

	slmodemd -a modem:0

It will create virtual serial port, /dev/ttySL0 usually, which can be used for pppd etc.

See Smartlink_Modem_drivers, slmodem page

External display

There's no hardware hotkeys to control external display, so your only option is xrandr. Typical usage:

  • turn display on: xrandr --output VGA --auto
  • turn display off: xrandr --output VGA --off
  • clone primary display: xrandr --output VGA --same-as LVDS
  • twinhead setup: xrandr --output VGA --right-of LVDS

Twinhead mode requires Virtual from xorg.conf to be large enough to hold both displays together, i.e., for 1280x768 right-of 1280x768 you need at least Virtual 2560 768.


S4 (suspend-to-disk) seems to work well. S3 (suspend-to-ram) works well too unless you use uvesafb, in which case X server will die on wakeup and won't be able to start until next reboot. Maybe this will change in future releases of xf86-video-intel and/or uvesafb.

To activate S4, just

	echo 4 > /proc/acpi/sleep

S3 is a bit more tricky, you must use s2ram with --vbe_post option (or with appropriate line added to whitelist.c, having VBE_POST in last field), otherwise you'll have video problems ranging from unusable console to dead X server. See Suspend_to_Disk, Suspend_to_RAM for more information.

To reanimate sleeping laptop, press Power button.

Note: hdd "forgets" hdparm -B setting after waking up.

Usage notes

Do not press too hard on laptop lid, you can damage display (scratch it against keyboard rim). If you did, first of all wipe the screen carefully — display coating is apparently much harder than keyboard paint, it may be not that bad as it seems.

When working under full load while standing on a flat surface, laptop tends to heat above 70°C (ACPI termzone). To mend this, raise it above the surface — a couple centimeters will be enough — to let cool air to fan inlet.

Wi-Fi card is installed in miniPCI slot, accessible via bottom lid. Which means you can replace it with something else.