Installing Debian GNU/Linux on a Sony Vaio VGN-S5VP/B

Last modified: " . date( "F d, Y. H:i:s a", filemtime("LinuxSonyVaioVGN-S5VP_B_main.html") ); ?>

Lorenzo Bettini

This document describes the installation and configuration of GNU/Debian Linux on a Sony Vaio VGN-S5VP/B.
sony vaio VGN-S5VP/B


 


First of all, here's the output of lspci:
# lspci
0000:00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03)
0000:00:01.0 PCI bridge: Intel Corporation Mobile 915GM/PM Express PCI Express Root Port (rev 03)
0000:00:1b.0 0403: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (rev 03)
0000:00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)
0000:00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03)
0000:00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03)
0000:00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03)
0000:00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03)
0000:00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d3)
0000:00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 03)
0000:00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 03)
0000:00:1f.2 IDE interface: Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 03)
0000:00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 03)
0000:01:00.0 VGA compatible controller: nVidia Corporation: Unknown device 0168 (rev a1)
0000:06:05.0 CardBus bridge: Texas Instruments PCI7420 CardBus Controller
0000:06:05.2 FireWire (IEEE 1394): Texas Instruments PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller
0000:06:05.3 Mass storage controller: Texas Instruments PCI7420/PCI7620 Dual Socket CardBus and Smart Card Cont. w/ 1394a-2000 OHCI Two-Port PHY/Link-Layer Cont. an
0000:06:08.0 Ethernet controller: Intel Corporation 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile (rev 03)
0000:06:0b.0 Network controller: Intel Corporation PRO/Wireless 2200BG (rev 05)

Quick Summary

Processor OK Also frequency scaling and ACPI
Disk Almost DMA does not work on the hard disk
X configuration OK Better with NVIDIA drivers
Networking OK both wired and wireless
Sound OK
PCMCIA OK Needs some adjustments to make it work
DVDRW OK
Modem OK now supported by Linuxant drivers
USB OK
Firewire Not tested
Bluetooth OK

Installation

First of all, I used Knoppix 4.0.2 live cd (http://www.knoppix.net) to boot and to partition my disk using QtParted, which allows you to resize NTFS partitions (even without previous defrag it). I had to pass nopcmcia option to avoid freezing on boot.  

I used the netinst-iso image from testing (which should corresponds to etch (http://www.debian.org/releases/testing). This basically worked smoothly but when you first reboot be sure to disable acpi: acpi=off otherwise everything will freeze when pcmcia starts (we'll see how to fix this later).

Kernel Configuration

At the moment I'm using a vanilla kernel, 2.6.14.2, which seems to work, with the patch from Software Suspend 2 (http://www.suspend2.net). I also installed the hibernate 1.12-1 from the Debian repository.

Once you untar the linux kernel sources and the patch suspend2-2.2-rc11-for-2.6.14.tar.bz2 in /usr/src,
cd /usr/src/linux-2.6.14.2
../suspend2-2.2-rc11-for-2.6.14/apply
and then you can configure the kernel.  Here you can find my kernel configuration (you should rename it as .config of course); please keep in mind that this configuration assumes that the suspend partition is /dev/sda7, but you should change to conform to your actual partitioning.

I also installed the powernowd frequency scaling governor, from the Debian repository.  This relies on the /sys filesystem so you need to add the following line in your /etc/fstab:
sysfs /sys sysfs defaults 0 0
Then the frequency will be automatically adjusted by powernowd (if it is launched). You can take a look at the current frequency by viewing the file /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq.

Most of the stuff in the kernel is compiled built-in not as module.  This sometimes is to be sure that everything is loaded on boot, and sometimes it is necessary for everything to work (for instance to enable DMA on DVD).

In particular, DO NOT enable FB_NVIDIA otherwise you won't be able to use the nvidia drivers (see also http://gentoo-wiki.com/HARDWARE_Sony_VGN-S4#X_configuration).

Suspend to disk works but not if X is loaded with the nvidia driver.  This seems to be a well-known issue, and for the moment, the only solution is to either not use the nvidia driver or to exit X before hibernating.  However, this is my 
/etc/hibernate/hibernate.conf
you can then try to hibernate the system with the command hibernate.

The ACPI seems to work fine.

Kernel configuration files are listed in the section Kernel Configuration Files.

Disk

This is a SCSI SATA disk and DMA does not seem to work on it (see also http://gentoo-wiki.com/HARDWARE_Sony_VGN-S4#Disk).

DVDRW

I used k3b to burn both CDs and DVDs and there are no problems.

X configuration

I used the NVIDIA driver available from the site http://www.nvidia.com/object/unix.html. Once you download it (I'm using version 7676), simply run:
sh NVIDIA-Linux-x86-1.0-7676-pkg1.run
and follow the instructions. Remember that you must have recompiled the kernel.

Then you have to update the xorg.conf file accordingly.  This is my xorg.conf file which you can use as a start (of course this is for my system, so you might surely have to change the keyboard setting, since mine is Italian).

In order to make the touchpad work as usual, you have to install the package xfree86-driver-synaptics, and configure the xorg.conf file accordingly (see for instance http://web.telia.com/~u89404340/touchpad).  Since the mouse of this laptop is an ALPS pointing device, you must set the mouse section accordingly (look at my xorg.conf file).

In order to modify the brightness of the LCD screen I'm using the nvclock package (http://www.linuxhardware.org/nvclock) or smartdimmer (http://www.acc.umu.se/~erikw/program).  For instance,
$ nvclock -S 70
Changing Smartdimmer level from 50% to 70%
I also inserted the sony character device support in the kernel, installed the spicctrl package (http://popies.net/sonypi), inserted the sonypi module in /etc/modules, and added the file /etc/modprobe.d/sonypi with the contents:
alias char-major-10-250 sonypi
options sonypi minor=250
but I cannot seem to make the Fn keys work nor adjust the brightness with spicctrl. These problems with the sonypi kernel module are also reported in http://bruno.infopa.net/linux/s3xp_linux.html.  Thus, for the moment, I'm using smartdimmer to reduce the brightness.

To make things easier, I created a KDE applet, KLcdDimmer, freely available at http://klcddimmer.sourceforge.net, that is a frontend to software such as nvclock and smartdimmer. Here's a screenshot of the applet:

KLcdDimmer screenshot

PCMCIA

The boot process freezes (actually it is the pcmcia service that freezes) with the standard pcmcia configuration. This however can be fixed by modifying the file /etc/pcmcia/config.opts, in particular you must comment one port address:
include port 0x100-0x4ff
#include port 0x800-0x8ff
include port 0xc00-0xcff
include memory 0xc0000-0xfffff
include memory 0xa0000000-0xa0ffffff
I must admit I don't know why :-) I was lucky I remembered this trick I used to install Linux on a Dell Inspiron few years ago! I found this trick on a page from http://www.linux-laptop.net, but I cannot find it anymore...

Networking

The ethernet network card is an Intel PRO/100 VE, so you must enable CONFIG_E100 in your kernel.

The wireless network is an Intel PRO/Wireless 2200BG, so you must enable CONFIG_IPW2200 in your kernel. Moreover, In order to use this driver, you will need a firmware image for it. You can obtain the firmware from http://ipw2200.sourceforge.net/firmware.php. You must download the firmware version that corresponds to your kernel (for 2.6.14 I downloaded the version 2.2). Then you must copy all the firmware files to the directory /usr/lib/hotplug/firmware.

Notice that sometimes the boot process swaps the network interfaces of the two network adapters (see "Dealing with inconsistent naming of interfaces by the kernel" in the Debian reference, http://www.debian.org/doc). This is quite rare (usually eth0 is the ethernet interface and eth1 the wireless), but it happened sometimes. In order to deal with this, you can follow the instructions in the above section of the Debian reference; the following is taken directly from the above document:

You must first install the script to an appropriate directory.
 # install -m770 /usr/share/doc/ifupdown/examples/get-mac-address.sh /usr/local/sbin/

Then add a stanza like the following to /etc/network/interfaces:

 mapping eth0
script /usr/local/sbin/get-mac-address.sh
map 02:23:45:3C:45:3C net1
map 00:A3:03:63:26:93 net2
Of course you must know the MAC address of the two network adapters.

I mixed this with the guessnet package, so here's the contents of my /etc/network/interfaces that you can tweak for your system (the red parts):
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0 eth1

#mapping hotplug
# script echo

# Determine whether interface is wired or Wi-Fi
mapping eth?
script /usr/local/sbin/get-mac-address.sh
map <ethernet mac address> wired
map <wireless mac address> wifi

mapping wired
# Too bad there's no way to pass commandline options to script
# script /usr/sbin/guessnet -i
script /usr/sbin/guessnet-ifupdown

# List of stanzas guessnet should scan for
# If none is specified, scans for all stanzas
map work dhcp disconnected

# Profile to select when all tests fail
map default: dhcp

# If no test succeed after this amount of seconds,
# then guessnet selects the default profile.
# Default is 5, but some network drivers need more.
#map timeout: 10

# Uncomment if something goes wrong:
map verbose: true
map debug: true

iface work inet static
<static IP address data>

iface disconnected inet static
address 192.168.0.2
netmask 255.255.255.0
test missing-cable

iface dhcp inet dhcp

iface wifi inet dhcp
wireless-essid default
wireless-key <your key>

Sound

For the soundcard, Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller, you must enable the CONFIG_SND_HDA_INTEL in the kernel. With Alsa it works without problems.

Modem

The modem is integrated in the sound card, Soft V92 Data Fax Modem with Smart CP, and it's obviously a softmodem. The scanModem utility downloaded from http://linmodems.technion.ac.il reports this:
Though not displayed, an embedded soft modem may reside in this Audio card:
0000:00:1b.0 0403: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (rev 03)
Support is in an active developement stage. There is always an audio codec(s)
+ (optionally) modem. ALSA HDA setup is likely automatic, but can be maually done with:
su - root
modprobe snd-hda-intel
Information on the chips should map into /proc/asound/ folders.
The following command shows:
cat /proc/asound/card0/codec#1

Codec: Generic 14f1 ID 2bfa
Address: 1
Vendor Id: 0x14f12bfa
Subsystem Id: 0x0
Revision Id: 0x90000

As reported by the people of the linmodems mailing list, the Id shows it has a Conexant codec, which, for the moment, it is not supported alas. This modem is now supported by Linuxant, http://www.linuxant.com, the bad news is that you have to pay for this driver (unless you want to stick with 14k and no fax), but it's worthwhile, since it works pretty good.

I had few problems in installing this driver (and later to apply the bought license), here's how I solved the problems.

First of all I downloaded the driver sources (at the moment of writing, the file is hsfmodem-7.43.00.01full.tar.gz), uncompressed them, and run make and make install (as root).  Actually I had first started the installation with the script cnxtinstall.run, but I soon quit (and some think that this might be the sources of the problems I then experienced).

The first problem I experienced is that the installation did not create the expected symbolic link, 0-HDA-14f12bfa:20030003-1(I guess this name depends on the specific modem so it is likely to be different from laptop to laptop), in the directory /etc/hsfmodem/nvm/dynamic, and so I created manually and made it point to ../hsfhda, since that is the chipset of the modem.  So this is the situation now:
ll /etc/hsfmodem/nvm/dynamic/
total 0
lrwxrwxrwx 1 root root 9 Apr 10 14:13 0-HDA-14f12bfa:20030003-1 -> ../hsfhda
The modem was working (but limited in speed) and so I proceeded in buying the license (see the instruction in the linuxant site), but when I applied the license it reported an error saying that it couldn't change the license status (it was complaining about some modules that could not be unloaded).  I tried to reboot but the problem was still there so I modified the file /etc/modules.conf, and removed (commented) the following lines:
### update-modules: start processing /etc/modutils/hsf
alias /dev/ttySHSF[0-9]* /dev/ttySHSF
alias /dev/modem /dev/ttySHSF
alias char-major-241 /dev/ttySHSF
alias /dev/cuaHSF[0-9]* /dev/ttySHSF
alias char-major-244 /dev/ttySHSF
options hsfserial serialmajor=241 calloutmajor=244
alias char-major-245 hsfosspec
alias /dev/hsfdiag hsfosspec
alias /dev/hsfdiag* /dev/hsfdiag
alias char-major-246 /dev/hsfdiag
options hsfosspec dcpmajor=245 diagmajor=246
probeall /dev/ttySHSF hsfpcibasic2 hsfmc97ich hsfmc97via hsfmc97ali hsfmc97ati h
sfmc97sis hsfusbcd2 snd_hda_intel

### update-modules: end processing /etc/modutils/hsf
I then rebooted and successfully applied the license. After this I added the above lines to /etc/modules.conf again.

The modem now works great! :-)

Bluetooth

The bluetooth worked fine, and smoothly. You only need to make sure to enable all the options in the kernel (see the section Kernel configurations, starting from 2.6.18).

Moreover, I installed these packages:
apt-get install bluez-utils libbluetooth1 bluez-hcidump bluez-pin
Some more details can be found on this post in my blog: http://tronprog.blogspot.com/2006/12/bluetooth-under-linux-on-sony-vaio-vgn.html.

Kernel Configuration Files

Here you can find the kernel configurations I used for this page:
Please, refer to the above sections, and, possibly, always use the latest version, since as the kernel sources are updated I only config the latest one. (there's also a post on my blog, concerning the switch from version 2.6.18 to 2.6.20, http://tronprog.blogspot.com/2007/05/from-linux-2618-to-2620.html).

Thanks

to Michele Loreti, for the network card tips and to the people of the linmodems mailing list for helping me with the internal modem.

Accesses to this page

Linux on Laptops

TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones