Linux installation (Debian Sarge / Etch) on a Sony FS115M Laptop


This report is listed at tuxmobil.org

Hardware description

Processor Pentium M 730 with SpeedStep Technology, 1.60 GHz, bus 533 MHz
RAM DDR 512 Mb, 333 MHz, PC2700
Hard Disk Drive Hitachi IDE 80 Gb
Screen TFT WXGA X-black, 15.4″, max resolution 1200×800
Video Card NVidia GeForce 6200 TurboCache, 128 Mb, VGA output (D-Sub 15)
CDROM DVD±RW double layer; read CD 24x, DVD 8x; write CD 24x, DVD±R 8x, DVD+R DL 2.4x; rewrite CD 10x, DVD±RW 4x
Memory Cards Memory Stick / Memory Stick Pro
PCMCIA 1 CardBus Type I/II
USB 3 hi-speed USB2 ports
Modem V92 56 kbit/s
Network Ethernet 100 Mbit/s
i-Link 1 IEEE1394 port
WLAN 802.11 B/G with manual kill switch
Audio Intel ICH6 Pro Audio, Realtech ALC260, AC’97, with stereo speakers
TV-out no
Bluetooth no
Ir-DA no
Dimensions 36.4 x 3.6 x 26.5 cm
Weight 2.9 kg
Battery Lithium-Ion, approximative autonomy 2h

General state

Revisions of this document: from June 05, 2005 to May 14, 2006.

I have always worked with Debian « Testing » release. It was first the Sarge release, it is now the Etch one.

Here is a short table summarizing what I could have made with the hardware.

Hardware components Status
Integrated network card fully functional
IEEE1394 network card fully functional
Wifi network card fully functional
Display fully functional
Touchpad fully functional
USB fully functional
PCMCIA fully functional
Sound fully functional
Mobile CPU fully functional
Specific Sony functions partially functional
Modem not functional
Memory Stick reader not functional

Kernel

All description below are based on a vanilla kernel version: starting with a 2.6.11-11, and ending now with a 2.6.14-4.

Network

Integrated network card

You just need the kernel module e100 (with mii), but not the eepro100. Everything will work as usual:

# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:01:4A:19:79:8C
          inet addr:192.168.3.80  Bcast:192.168.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:610 errors:0 dropped:0 overruns:0 frame:0
          TX packets:384 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:59732 (58.3 KiB)  TX bytes:47035 (45.9 KiB)

IEEE1394 network card

The firewire interface can act as a network interface. You just need to compile the kernel module eth2394 (in addition of the other IEEE1394 modules).

The logs and ifconfig -a tell this should work; but I have no means to test it.

Wifi network card

For the Wireless 802.11B/G support, this is a bit more tricky.

  1. You have to compile the kernel WLAN support (CONFIG_NET_RADIO).
  2. You had to get the sources of the ipw2200 driver (apt-get install ipw2200-source for instance) and compile them. Now the sources are included in the kernel sources (CONFIG_IPW2200).
  3. You also have to get the firmware of the network card. It is available at Sourceforge. Well. Be CAREFUL!!! The firmware version depends on the driver version installed during the previous step. The Debian version available now is the 1.0.3 whereas the last available version at Sourceforge is the 1.0.4; and the firmwares are different in the two cases. The one included in the 2.6.14 kernel needs the version 2.2 of the firmware. Try inserting another firmware version and look at the syslog to know the version needed.

Just one thing. For everything to get well, do not forget to switch on the WLAN button in front of your laptop 🙂

The logs and ifconfig -a tell this should work. I tested it with a « ad hoc » pseudo network with no encryption. The logs told I could cypher the network with WEP algorithms.

Display

Display at boottime

During the installation you could have noticed the system console is quite… small and ugly in the middle of your smart screen. We will correct this, thanks to framebuffer.

You have to install the following kernel modules:

  1. CONFIG_FB
  2. CONFIG_FB_VESA
  3. CONFIG_VIDEO_SELECT
  4. FRAMEBUFFER_CONSOLE
  5. CONFIG_FONTS
  6. CONFIG_FONT_8x16

You have to configure Lilo (sorry I use Lilo and not Grub) with the « vga » parameter as this: vga=0x305 (if you want a 1024x768x256 color display). For the complete list of the VGA codes, please see the Documentation/fb/vesafb.txt file available in the kernel sources directory.

Graphical display

You have to go get the latest driver available at NVidia and compile it. At the moment I first wrote this documentation the latest version was the 1.0-7174. I now use the 1.0-8178 version.

Now you have to reconfigure the X server. When you start it (yes, start XFree unconfigured), please look at the logs and you will find lines like these ones:

(II) NVIDIA(0): Internal WXGA: Using hsync range of 29.00-49.00 kHz
(II) NVIDIA(0): Internal WXGA: Using vrefresh range of 0.00-60.00 Hz
(II) NVIDIA(0): Clock range: 12.00 to 400.00 MHz

Take these values and launch the videogen software (apt-get install videogen) as this: videogen -m=1280x800 -mdc=400 -mhf=49 -mvf=60 -dvf=60 (just man videogen to understand the parameters). The resulting « modeline » has to be inserted into your XF86Config-4 configuration file:

Section "Modes"
        Identifier      "16:10"
        ModeLine        "1280x800" 80.36 1280 1320 1520 1640 800 802 804 842
EndSection
Section "Monitor"
        Identifier      "Internal WXGA"
        HorizSync       28-50
        VertRefresh     43-75
        Option          "DPMS"
        UseModes        "16:10"
EndSection

A last modification to write in this file:

Section "Device"
        Identifier      "GeForce Go 6200"
        Driver          "nvidia"
        VideoRam        131072
        Option          "FlatPanelProperties"   "Scaling = aspect-scaled"
        Option          "UseEdidFreqs"  "1"
        Option          "NoLogo"        "true"
EndSection
Section "Screen"
        Identifier      "WXGA Screen"
        Device          "GeForce Go 6200"
        Monitor         "Internal WXGA"
        DefaultDepth    24
        SubSection "Display"
                Depth           24
                Modes           "1280x800"
        EndSubSection
EndSection

Please read the manpages and the documentation given by NVidia to understand all the parameters used here.

Dual head

The new NVidia driver has the needed configuration parameters. In the « Device » section, please append the following lines:

        Option          "UseInt10Module"                "true"
        Option          "TwinView"                      "true"
        Option          "MetaModes"                     "DFP-0: 1280x800,
          CRT-0: 1024x768 @1280x800 ; DFP-0: 1280x800, CRT-0: NULL ;
          DFP-0:640x480, CRT-0: 640x480"
        Option          "SecondMonitorHorizSync"        "28-50"
        Option          "SecondMonitorVertRefresh"      "43-75"
        Option          "ConnectedMonitor"              "CRT-0, DFP-0"
        Option          "TwinViewOrientation"           "CRT-0 Clone DFP-0"
        BusId           "PCI:1:0:0"

With such parameters, you will be able to have the following 3 behaviours:

  • internal screen at 1200×800, VGA output at 1024×768 (scrolled to 1200×800) containing exactly the same image on both screens;
  • internal screen at 1200×800, no VGA output;
  • internal screen at 640×480, VGA output at 640×480, containing exactly the same image on both screens.

Just plug or unplug the VGA cable, nothing more is needed (the function key « LCD->VGA » is not used).

Old version, with old driver:
I have just started testing the VGA output, but no tests have been brought to end. From now, I just know that you have to plug an external source before starting the X server. The VGA screen will have the same resolution as the internal LCD one; and because the LCD has a 16:10 resolution, the VGA will be in 16:10. Your 4:3 screen is too tight to display the whole desktop, you will have to scroll it, sorry 🙁

Touchpad

You can theoretically clic when « tapping » on the touchpad. But Linux (2.6.11) startup says clearly (see dmesg) « Disabling hardware tapping ».

Google finds people using with success the « Synaptics » driver. If you want to try it, do as you want. In my case I find clicking by tapping on the touchpad quite bothersome (I put my finger on the touchpad to move the cursor, the systems thinks I am clicking). So I will not try the see if this driver is functional, I like when tapping is disabled.

However this is superseded by kernel 2.6.12, where « hardware tapping » is enabled. So everything is OK (not for me, pitty).

USB

Nothing tricky with the USB configuration. You just have to activate the kernel support of UHCI and EHCI and it will be OK.

Of course, if you want to plug a mass storage peripheral, you also have to compile the usb-storage modules, and activate the SCSI support and SCSI Disk support (as the USB storage emulates SCSI disks).

PCMCIA

You have to at least compile the following modules in your kernel:

  • pcmcia_core
  • pcmcia
  • ide_cs
  • rsrc_nonstatic
  • yenta_socket

From now on, cardctl status finds the PCMCIA socket. You also have to compile the drivers of the peripherals you want to plug.

Everything works fine (tested with a 56k PCMCIA modem):

# cardctl status
Socket 0:
  5V 16-bit PC Card
  function 0: [busy]
# tail -f /var/log/syslog
Oct 24 21:48:32 localhost cardmgr[3435]: socket 0: Serial or Modem
Oct 24 21:48:32 localhost kernel: Serial: 8250/16550 driver $Revision: 1.90 $
4 ports, IRQ sharing disabled
Oct 24 21:48:32 localhost kernel: ttyS0 at I/O 0x3f8 (irq = 16) is a 16550A
Oct 24 21:48:32 localhost cardmgr[3435]: executing: './serial start ttyS0 2>&1'
Oct 24 21:48:32 localhost cardmgr[3435]: + Default modem setup

Sound

The internal sound card, an « ICH6 High Definition Audio Controller », is supported since not so long: ALSA released its 1.0.9 version the next day I bought my computer (lucky…). ALSA drivers 1.0.9 drivers are available at ALSA homepage and are included the kernel since the 2.6.12 kernel version.

The driver is the snd-hda-intel (also called hda-intel). Just ./configure --with-cards=hda-intel && make && make install if you get the ALSA sources, or compile the right kernel module.

Oh! Do not forget the « OSS Mixer API » and « OSS PCM (digital audio) API » kernel options (CONFIG_SND_MIXER_OSS and CONFIG_SND_PCM_OSS)! This seems to be a usual forgetfulness…

CPU

I am speaking about CPU frequency scaling here. In fact this is about varying the frequency of the CPU in function of its activity (power saving). You have to compile the following kernel modules:

  • CONFIG_CPU_FREQ
  • CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE
  • CONFIG_CPU_FREQ_GOV_POWERSAVE
  • CONFIG_CPU_FREQ_GOV_USERSPACE
  • CONFIG_CPU_FREQ_GOV_ONDEMAND
  • CONFIG_CPU_FREQ_TABLE
  • CONFIG_X86_SPEEDSTEP_CENTRINO
  • CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI
  • CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE

apt-get install powernowd and this software will do everything for you.

Specific Sony functions

The Sony kernel driver sonypi does not work on this computer: the microcontroller of which sonypi is the driver is not present in this laptop.

Do not panic. The author of this driver (Stelian Pop) has also written another driver available on his website that uses ACPI. Please compile the ACPI support and follow the next instructions.

  1. First get the sony_acpi module (if problems, this is a local copy of the module).
  2. I have written a patch for this module here that adds support for the function keys (the [Fn]-[F2][F3][F4] etc). Please apply the patch and compile the module.
  3. I have also written a userland software that manages everything (keypress, OSD display of the result, battery management…): SonyFKM (version 0.13).

Update from recent kernels (tested with my 2.6.32): the kernel module sony_laptop works well, you do not need the kernel driver and patch described above.

Modem

The modem is on the sound card bus (« WinModem »). I suppose ALSA will give the driver. But it is not for the moment.

Memory Stick reader

The microcontroller of this peripheral is a Texas Instruments PCI 7420, that manages both IEEE1394, PCCard (PCMCIA) and Flash Media (this is it). I have not found any proper driver now. The old peripheral (older laptops) was on the USB bus, but this one is on the PCI one.

I am trying to write a driver for this peripheral. My PCI skeleton driver requests and registers memory regions, IRQ… But whether I insert a card or not, nothing happens with the IRQ. Surprising and disappointing…

If you want to get more technical information (and maybe help), these are interesting links:

Update from recent kernels (tested from 2.6.26): the kernel modules tifm_core, tifm_7xx1 and tifm_ms, in conjunction with mspro_block and memstick make the card reader work.

Appendix

These are some files you could find interesting, configuration files and log files:


Laissez un commentaire

Votre adresse e-mail ne sera pas publiée.