Linux on Fujitsu-Siemens C-1020

This document describes running Linux on Fujitsu-Siemens C-1020 laptop. The page was written by Jan "Yenya" Kasprzak. Thanks to Vojtěch Pavlík for hints on the keyboard configuration and to Michael Mráka for providing details of IrDA configuration.

Contents


General information

My C-1020 has the following configuration: Here is the contents of /proc/cpuinfo, the output of lspci command, and kernel messages after boot.

Kernel and system

I have installed the Fedora Core 1 Linux distribution with few additional RPMs from freshrpms.net. Here is my package list. I use GNOME as my personal desktop. It has pretty standard configuration except that my window manager is Sawfish with the blue-steel theme and my WWW browser is Galeon. There should not be a problem with other Linux distributions - we have tested Mandrake 9.2 as well.

I have decided to move to the 2.6 kernel - the latest-greatest kernel at the time of writing is 2.6.0-test11. Here is my kernel configuration (you can copy this to /usr/src/linux-2.6_version_/.config and run make oldconfig command.


ACPI and power management

The 2.6 kernel has pretty good ACPI support, and it works with C-1020. I have not fully tested all the features, but I can read the CPU temperature from /proc/acpi/thermal_zone/TZN0/temperature, read the battery status from /proc/acpi/battery/BAT0/state (GNOME has a nice battstat-applet-2 applet which works even with the 2.6 kernel).

The software suspend-to-disk works OK for me. I have configured that the system suspends itself when I press the "power on/off" button. You need to have the ACPI support in kernel (see above for my kernel config), run acpid (included in Fedora Core 1), create the /etc/acpi/events/power file with the following contents:

event=button/power.*
action=/bin/echo 4 >/proc/acpi/sleep
Then add the "resume=/dev/hda<your_swap_partition>" parameter to the "kernel" line in your /boot/grub/grub.conf file. See also the Documentation/power/swsusp.txt file in the kernel sources.

This laptop ACPI implementation can also report when you close the lid, but I have yet to come with an useful action I want to do when the lid is closed (HDD spin-down, maybe).


PC cards

The laptop is equipped with two-slot PC-card/CardBus port. It can be driven with the Yenta socket driver in Linux (CONFIG_YENTA=y). In 2.6.0-test11 kernel you may need the following trivial
patch to the CardBus interface. I have tested the PC card interface with the Lucent Orinoco Wi-Fi card (orinoco_cs driver).

Keyboard

The keyboard has four special buttons labeled A, B, WWW, and E-mail. It seems they send scancodes that are not known to the atkbd.c driver. Vojtech Pavlik sent me some hints on how to make them work, but I have not tested it yet.

The NumLock/ScrollLock key sets the NumLock status and Fn+NumLock/ScrollLock sets ScrollLock status.

The Fn key allows to set various parameters of the display and so on. Here is the listing of the Fn key combinations:


Graphics card, display

The C-1020 is equipped with S3 ProSavage8 KM266 (aka ProSavage DDR-K, PCI ID 5333:8d04) graphics, with the framebuffer shared with the main memory, and 1024x768 TFT display. Here is my /etc/X11/XF86Config (beware: note the Czech keyboard layout and the special section for the touchpad - see bellow). There is currently no accelerated 3D/DRI support for this chip, so there is no need to have AGP-GART and DRI support compiled in kernel.

The graphics works OK in the RGB mode and has working XVideo support - YUV overlay for displaying and scaling data in the YUV colorspace (such as movies). Here is the xvinfo output. I use MPlayer multimedia player.

The external VGA output works - both as the simultaneous LCD+VGA output and the VGA-only output. I have not tried to change the X configuration to achieve better refresh rates on the external VGA. In text console my monitor (Viewsonic GT775) had problems with synchronization when in VGA-only mode (LCD+VGA worked well). See also the keyboard section above for the graphics-specific keys. Beware, switching to TV-out (S-Video) or CRT works only when the appropriate output device is connected.

You can switch the video output between the LCD, CRT and TV-out (including the setting of the TV-out between PAL, NTSC, and NTSC-J) using th s3switch utility from the Savage XFree86 driver page. I have built RPM packages for Fedora Core 1 - you can find it in my FTP directory.

The DPMS display power-saving when idle does not work for me - the display blanks, but stays on.


Touchpad

The touchpad works OK in plain PS/2 mode as two-button PS/2 mouse (you can use the Emulate3Buttons in the X configuration) to get the middle button.

With "Synaptics TouchPad" driver compiled into your kernel and standard PS/2 mode middle scroll buttons (up/down) will work as left/middle button.

More complete support for this touchpad provides the Synaptics touchpad driver. Compile the kernel with CONFIG_MOUSE_PS2_SYNAPTICS=y option, get the driver source from the above link, compile it and install according to the included instructions, and configure it in your XF86Config file (see also my own XF86Config). I had to change the following two parameters from the defaults to obtain working middle button emulation (by taping the upper right corner of the touchpad):

Option "EmulateMidButtonTime" "1000"
Option "RightEdge" "5000"


USB

The laptop has two external USB ports on the UHCI controller (use the CONFIG_USB_UHCI_HCD=y kernel config option). I have tested the USB interface with the GigaByte Bluetooth USB dongle.

CD-RW/DVD-ROM drive

The CD drive is detected as /dev/hdc on Linux. I have tested reading CDs, burning CD-RW and blanking CD-RW. I did not use the ide-scsi interface from Linux 2.4, but I tried the direct IDE access (the "-dev=/dev/hdc" option in cdrecord) instead. I have cdrecord-2.01-0.a19.2 from Fedora Core 1. The drive also works in the burnfree mode, and supports DAO (disk-at-once) as well as TAO (track-at-once) mode (I have tested TAO only).

I have not tried to read any DVDs yet, and I have not tried the RPC-1 (region-free) firmware. The rpc1.org pages may provide a good starting point.


Audio interface

C-1020 contains an integrated VIA 8233 audio controller. I have tested it using
ALSA drivers, and it works OK. I use the following kernel configuration (the first and last line is required only, the others are optional):
CONFIG_SND=y
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_VIA82XX=y
The laptop has line-out 3.5mm jack (for headphones, works OK), microphone-in 3.5mm jack (works OK), built-in stereo speakers (OK, but the sound quality corresponds to their small size), and S/PDIF optical output (not tested). The optical output port is opened with no cap on it :-(.

IEEE 1394 (FireWire(tm)) port

There is an IEEE 1394 port on the OHCI1394 controller (I have the CONFIG_IEEE1394_OHCI1394=m option in my kernel config). I have successfully downloaded a video stream from a digital camera using the dvgrab(1) utility.

Serial port

The laptop is equipped with a pretty standard 16550A serial port, which is recognized by Linux as /dev/ttyS0.

Parallel (LPT) port

Works OK - tested with an ink jet printer.

Infrared (IrDA) port

The infrared port is detected by Linux as /dev/ttyS1 - it is NS16550A (National Semiconductor hi-speed serial port) and works in FIR mode. You need "NSC PC87108/PC87338" support in kernel (CONFIG_NSC_FIR=m which needs CONFIG_ISA=y) and "irda-tools" package. There are problems after swsuspend when your kernel has built-in serial driver (due to initial "grabing" of io-ports). Therefore it is better to have serial driver built as module.

Add configuration to /etc/modprobe.conf

alias irda0 nsc-ircc
# for 2.4.x kernels you may need uncomment next line
#options nsc-ircc io=0x2f8 irq=3
# before instaling nsc-ircc we need init serial driver but "switch off"
# uart and release io port from /dev/ttyS1
install nsc-ircc /sbin/modprobe 8250; /sbin/modprobe --ignore-install nsc-ircc
remove nsc-ircc /sbin/modprobe -r --ignore-remove nsc-ircc ; /sbin/modprobe -r 8250
# serial driver
alias char-major-4 8250
install 8250 /sbin/modprobe --ignore-install 8250 ; /bin/setserial /dev/ttyS1 uart none port 0x0
(If you have older modutils which uses /etc/modules.conf change install and remove commands to appropriate {pre,post}-{install,remove} commands.)

Modify /etc/sysconfig/irda

IRDA=yes
DEVICE=irda0
DISCOVERY=yes
and simply start irda service (service irda start).

Due to swsuspend/resume issue I need to modify /etc/acpi/events/power file for removing nsc-ircc module before swsuspending:

event=button/power.*
action=(/sbin/service irda stop; /sbin/modprobe -r nsc-ircc ; /bin/echo 4 >/proc/acpi/sleep)

LAN (ethernet) interface

The built-in LAN adapter is a pretty standard RTL 8139c (not c+) chip. While not optimal from the performaince standpoint, it works OK and is sufficient for the laptop usage. It can be driven with the 8139too driver in the Linux kernel (set CONFIG_8139TOO=y in your kernel config).

Built-in modem

Modem is a Conexant HSF softmodem. Tgz and rpm driver (hsfmodem-6.03.00lnxt03112100free-1.i386.rpm) can be obtain at http://www.linuxant.com/. There are free version of the driver limited to 14.4Kbps data only and full (commercial) version with 56K modem and FAX functionality.

Informations provided by hsfconfig --info:

Config for modem unit 0: /dev/ttySHSF0
        Device instance: 0-PCI-1106:3068-10cf:118e
	HW revision    : CXT29
	HW profile name: hsfmc97via
	Registration ID: shown in full version only
	Current region : CZECH (T.35 code: 002E)


Links


Jan "Yenya" Kasprzak