Debian GNU/Linux on Fujitsu Lifebook S7010

(2004.09.27 - 2007.06.19)

ObPimpage: Notebookshop.com. I actually went into the physical brick-and-mortar store (Cerritos, CA, USA) since I was close enough geographically. If you do, take along a live CD; the store is pretty keen on giving you a full test drive, even if that means taking the notebook off the table, unplugging the AC, sitting down in chairs, and walking around the display floor (short of walking out the door).

On my first-ever notebook computer shopping, I had actually eyed the Fujitsu Lifebook S6210 at first, due to its size, light weight, and having the grave (`) key next to the 1 key where it belongs. There is a success story with Debian GNU/Linux on that model at http://www.columbia.edu/~jr2075/lifebooks6210.html, from which I am copying some presentation styles for this page. After much groveling through all the models on display, I had actually bounced around on an Acer Travelmate (forgot model), the Lifebook C2310, a Fujitsu Tablet PC, and the Lifebook S7010. The day before actual purchase, I took a Knoppix 3.2 CD and test-drove three of the notebooks (the tablet PC lacks a built-in CD drive). I would've used Knoppix 3.6, but I had recently changed from linux 2.4.27 to linux 2.6.8 on my desktop (the one with the CD writer) and had not been accustomed to the new CD-writing procedures, so I had dug around for an old copy of Knoppix. The shop had a refurbished instance of this notebook model in stock, which I took, and saved a couple hundred dollars.

Hardware Overview

(direction relative to using notebook)

Component Status Details
CPU Works Pentium M 1.7GHz (cooling exhaust on left side, multiple intakes on bottom surface).
RAM Works 512 M
HDD Works 80 G
Battery Works (CMB1) Li-Ion battery rear bottom center. (CMB2) Second battery bay coupled with CD drive bay (modular bay) on right side.
Power Modes Works S0, S3, S4, S5 (S3 requires special boot parameters).
CD/DVD Works DVD-ROM CD-R/RW, hot/cold-swappable for a second battery, on right side (recommend program/utility hotswap(1)).
LCD Works 14.1-in. XVGA (1024x768).
Video Works Intel i855GM (PCI ID = 8086:3582) (driver = i810).
External Video untested SVGA port on left side.
802.3 Works Broadcomm Corporation NetXtreme BCM5705M_2 Gigabit (PCI ID = 14e4:165e) (driver = tg3), RJ45 port on rear left.
802.11 Works Atheros Communications, Inc., AR5212 (PC ID = 168c:0013) (driver = ath (non-stock)).
Bluetooth untested ALPS USB Bluetooth.
Radio Kill Switch Works One slider switch on front left; affects both 802.11 and Bluetooth interfaces.
Modem untested Intel controller winmodem-style, RJ11 port right side.
USB Works some sort of Intel controller (PCI ID = 8086:24c2, 8086:24c4, 8086:24c7, 8086:24cd), USB2.0 EHCI, three ports: one on right side, two on rear right (drivers of the UCHI and EHCI variety, together).
1394 untested Texas Instrument TSB43AB21 (PCI ID = 104c:8026), one small four-pin port on left side.
Sound Works i810 (driver = snd_intel8x0), 3 ports: line-in, mic, headphones, on left side.
PCMCIA untested 2 slots (1 door) on left side.
Serial Works Infrared IrDA port (no RS232 ports) on rear right (/dev/ttyS3, standard serial-port drivers).
Parallel N/A (none)
Pointer Mostly Works Synaptics Touchpad and an eraser-head (driver = psmouse); two mouse buttons and a vertical rocker switch (total four buttons).
Extra buttons Mostly Works Five: "1", "2", "3", "4", and "Enter" (driver = apanel (non-stock), i2c_801).

Operating System: Knoppix, Debian GNU/Linux testing (sarge)

I had given away my Knoppix 3.2 CD to the salesperson, for three reasons: (1) it's an old version of Knoppix, (2) the CD-RW was somewhat scratched up (but still readable), (3) the guy knew nothing about linux and the CD had Knoppix's URL on it. When I got home, I immediately regretted giving away the CD, for I had no other bootable CDs (except an ancient Debian "bo" install disk). The rest of the day was spent getting CD-writing to work on my desktop.

The next day, with Knoppix 3.6 at the ready, I booted the notebook. Unlike under Knoppix 3.2, the CPU and fan did not go full tilt the whole time, implying 3.6 has better notebook power-saving support than 3.2. Also, the wired LAN and the wireless LAN interfaces were both autodetected and fully functional under 3.6.

The notebook's packaged OS was Windows XP Pro (on a parenthetical note, I asked to have WXPP removed; the shop refused on the grounds that they already paid for the license, could not transfer, and had to pass the cost on to me -- hoorah for monopoly power). With Knoppix, I imaged the hard drive (shipped over ethernet to desktop) and resized the NTFS partition with qtparted. Then I used familiar old cfdisk(8) to create two linux partitions (root and a crypto /home) and two swap partitions (bad planning...).

I used Knoppix to pop in Debian's minimal installer files (the kernel, the initrd, and sarge's business-card ISO image) into the second partition, then installed GRUB onto the HDD's MBR. Then I rebooted to the hard drive, used GRUB's command line to specify the Debian installer. After that, it was smooth sailing, a network install using the first partition as root.

I only booted into Windows once, by accident, on the first day. As of 2005 May 28, I have yet to boot into it again.

CPU: Intel Pentium M 1.7GHz

The short story is to get this notebook to be usable as many years as possible. The long story involves very supportive and insistive parents willing to put their money where their mouths are.

To those doing laptop research, the Pentium M is the CPU in the Centrino trinity (the other two members are the i810 video, and the Intel Pro Wireless 2100 or 2200 802.11[abg] interface). This 1.7GHz CPU supports frequency steps of 600MHz, 800MHz, 1000MHz, 1200MHz, 1400MHz, and 1700MHz. It supports ACPI power levels C1, C2, and C3. CPU throttling is not supported (at least according to linux 2.4.27 and 2.6.8.1).

For power-saving, I'm using the Debian package laptop_mode_tools, a set of scripts that automatically throws various subsystems into power-stingy mode according to AC presence and battery levels. CPU frequency stepping is handled by cpufreqd(8).

General gist of running time:

with dual batteries, fully charged
Use theme approximate running time
Console mode, WLAN, e-mail and casual programming nearly 9 hours
GUI mode (Window Maker), e-mail and casual programming a little over 6 hours
GUI mode, 3D gaming about 2.5 hours
Manufacturer claims... 5 hours

Video: Intel i855GM

Nothing spectacular here. Debian's packaged XFree86 4.3.0 autodetects and uses properly.

The packaged XF86 does not support hardware 3D acceleration. DRI CVS drivers (i810) provide hardware 3D acceleration. 3D acceleration tested with Scorched3D.

Input: Synaptics Touchpad PS/2, keyboard

Searching on google turned up XFree86 drivers for enabling the more advanced features of the touchpad: http://w1.894.telia.com/~u89404340/touchpad/index.html. Kernel patching not required. The touchpad on this notebook as no extra designs, silk-screen printings, or anything else visually noticeable. With the drivers above, I can utilize scrolling up/down (buttons 4 and 5) on the right edge, scrolling left/right (buttons 6 and 7) on bottom edge, corner-tap as button (right now, tap in upper-left as button 3), and circular scrolling (currently configured to send button 4/5 events when starting a circular motion from top center). Multi-finger tap is firmware-dependent; fortunately this particular touchpad is capable of detecting two-finger and three-finger taps. Since a physical middle mouse button is missing, tapping two fingers on the pad at the same time is a convenient substitute.

On any sort of ACPI resume (S3, S4), the mouse tends to go insane. I typically fix this problem by running a script that unloads and reloads the psmouse module a few times. Of course, this requires the PS/2 mouse driver to be compiled as a module. Also, running this script inside X doesn't restore the "advanced" features for the touchpad, for whatever reason beyond my understanding. As such, I tend to switch back to console to run the script, then switch back. (TODO: post the script)

Keyboard

Personally, I demand the grave key to be next to the '1' key, considering how much I use bash, perl, and vim. For this reason, I passed on the Toshiba notebooks despite their other desirable characteristics; all Toshiba notebooks have the grave key next to the space bar).

For those truly nitpicky about keyboard layouts (square brackets indicate Fn+Key functions):

Top row Esc, F1, F2, F3 [Sound Mute], F4 [Mouse], F5, F6 [Bright Down], F7 [Bright Up], F8 [Sound Down], F9 [Sound Up], F10 [CRT], F11, F12, NumLk [ScrLk], Insert [PrtSc], Delete [SysRq], Pause/Break
Second row grave, 1, 2, ..., 9, 0, -, =, BS
Third row Tab, q, w, e, ..., i, o. p, [, ], \
Fourth row CapsLock, a, s, d, ... ;, ', Enter
Fifth row Shift, z, x, c, ..., ., /, Shift
Sixth row Ctrl, Fn, Logo, Alt, Space, Alt, Menu, Ctrl, PgUp [Home]*, Up Arrow*, PgDn [End]*
Six-and-halfth row Left Arrow*, Down Arrow*, Right Arrow*

(Asterisks (*) indicate reduced-length keys)

The navigational keys (arrows, PgUp, PgDn) are clustered in a three-wide and two-tall group of reduced-length keys. This cluster of six is located to the right of the Right Ctrl key and below the Right Shift key. The arrow keys are in the expected inverted-T layout, with PgUp/Home in the upper left and PgDn/End in the upper right. After less than a week, I am already accustomed their locations and functions.

The Sound Mute, Sound Up, and Sound Down Fn-keys generate AT keyboard scancodes, and so can be handled "normally" by XFree86.

Of particular note, the keyboard lacks a Fn+[Standby] key. As it implies, this notebook lacks ACPI S1 (power-on standby) ability.

LAN: Broadcomm NetXtreme Gigabit

Nothing spectacular here, although it seems the particular variants of the tg3 driver in older kernels don't work. The tg3 driver in linux 2.4.27 and 2.6.8.1 both recognize and drive this NIC properly. This NIC is capable of 10baseT, 100baseT, and 1000baseT. I only have a 100baseT LAN at home.

Wireless: Atheros IEEE 802.11abg, ALPS Bluetooth USB

The Atheros WLAN interface claims to support 802.11 a, b, and g. Upliftingly, Knoppix 3.6 managed to auto-detect and drive this device properly. Depressingly, the needed driver is not in the stock linux kernel (for the same reason the Centrino WLAN drivers cannot -- FCC regulations forbid "opening" the relevant firmwares). A google search turned up the Multimode Atheros Driver for WiFi on Linux (MADWIFI) project on sourceforge: http://sourceforge.net/projects/madwifi. No "packaged" tarballs are available; I had to check the drivers out through CVS. Drivers compile, load, and function under linux 2.4.27 and 2.6.8.1. Actual wireless networking has been verified upon wireless hotspots in early Oct 2004. This section of the page has been, appropriately, updated while using the WLAN.

The relevant binary-only firmware is packaged in the MADWIFI package. Part of the Atheros driver is a firmware loader. In this regard, setting up the Atheros NIC is not much different from setting up the Centrino's IPW2200 NIC.

The Bluetooth interface was a nice surprise when I took this machine home and opened it up for the first time, since the floor model didn't mention anything about Bluetooth. The slide switch on front controls powering of both wireless interfaces. When slid on, linux reports the attaching of a new USB device identified as a bluetooth device. When slid off, linux reports the detaching of said USB device. I have no other bluetooth device with which to test this wireless medium.

Wireless: Infrared

The infrared port is directly wired to the serial controller as /dev/ttyS3. There are options in the system BIOS to frob the infrared port (IRQ, I/O port, etc.), so the path can change accordingly. Since the other IR devices I have can only go as low as IRCOMM (a StIR4200 USB dongle, and a Palm IIIxe) protocol-wise, I have to attach /dev/ttyS3 to /dev/ircomm0 with irda-utils, with the command irattach /dev/ttyS3 /dev/ircomm0 (currently done daemonically via Debian package irda-utils). Communication proceeds upon /dev/ircomm0 (e.g. pppd /dev/ircomm0 115200 noauth).

The infrared port does not seem to restore properly upon a system resume from S3 (Suspend-to-RAM). I have to restart it manually by running /etc/init.d/irda-utils restart, which can be automated with proper scripting.

CD/DVD-Writing

Drive labels itself a DVD-ROM & CD-R/RW Drive.

This drive's write capability is limited to CD-R and CD-RW (no DVD writing). CD-writing with cdrecord works; ISO9660 and raw tar files attempted and succeded. Packet-writing didn't want to work. Either it's not capable, or I'm not doing something right.

The Lifebook P, N, and S series are capable of swapping out their CD drives for a second battery, to extend the mobile life. The second battery came in the box (probably just for the refurbished ones?).

CD/DVD Drive Hotswapping

The userspace program hotswap(1), along with its associated graphic programs xhotswap(1) and khotswap(1), handles the hotswapping of the modular bay. It can interactively or automatically scan, attach, and detach the hotswapped drive. I have two gripes with it:

  1. After many hot-swaps, /proc/ide/ keeps getting polluted by multiple instances of ide1/ (there are as many instances of /proc/ide/ide1 as there have been hot attaches), but this is more cosmetic than anything else.
  2. hotswap(1) does not return with error codes in the expected manner. Rather, result-checking is accomplished by capturing its stdout.

DMA Gotcha

For some reason, if the drive was not present at boot time (POST), the drive never keeps DMA enabled, despite proddings with hdparm(8). If the drive was present at boot, then removed and re-inserted later, the drive retains DMA settings. The upshot is that if I want CD-writing or DVD-watching, I must ensure the drive is inserted during POST. Well, it's not a hard requirement, but a lack of DMA leads to very very slow reading and writing.

3.5-in Floppy Disk

Though the machine itself lacks a built-in floppy drive, Fujitsu thoughtfully packaged a USB floppy drive in the box. The drive works, though it presents itself as a SCSI device (/dev/sg0 and /dev/sda), so I needed SCSI disk support enabled.

# mount /dev/sda /mnt/floppy

Sound: Intel i810

The OSS drivers in 2.4.27 (i810_audio) and the ALSA drivers in both 2.4.x and 2.6.x (snd_intel8x0) detect and handle the sound device properly. In 2.6.8.1, I tried to bang on the kernel modules directly but the sound remained mute; when I ran the ALSA configurator (alsaconf(8)), sound finally unmuted ever since. As a slight gotcha, be sure to enable ALSA's RTC support, otherwise the CPU frequency-stepping starts affecting the playback speed for some interesting pitch-variance effects.

The built-in speakers (and headphones) are controlled as "PCM 2". Master volume seems to have no effect on the built-in speakers...

(guidance from gildea@[domain-elided]) Some magic incantation to ALSA can reassign the Master volume control to affect the speakers:

# echo 'VOLUME "Headphone" 0' > /proc/asound/card0/oss_mixer

A quick translation of this line is: map the OSS control named "VOLUME" (as from mixer applets) to the 0th (first) ALSA control named "Headphone" (as in the kernel drivers). Additional details on this are in the linux kernel source tree under Documentation/sound/alsa/OSS-Emulation.txt (linux 2.6.x). Use standard boot-script technology to automate this reassignment on system boot. The quick and dirty way to accomplish this follows (from gildea's advice):

A file called /etc/init.d/alsa-local:

#!/bin/bash
echo 'VOLUME "Headphone" 0' > /proc/asound/card0/oss_mixer

Then the command:

# update-rc.d alsa-local defaults 22

Refer to your friendly local Debian documentation and/or manpages for additional information on boot scripts and update-rc.d(8).

Batteries

Main battery: Li-Ion battery reports charge capacity of 4800 mAh and electric potential of 10800 mV (10.8V). This battery is wide, short, and shallow, and fits into the main battery bay on bottom rear of the notebook.

Secondary modular battery: Li-Ion battery reports charge capacity of 3400 mAh and electric potential of 10800 mV. This battery is shaped approximately like the CD drive, as it is designed to fit into the (modular) CD drive bay. This battery came in the box (only done for refurbished machines?).

Charge time from depletion: approximately 4.5 hours. Note: completely emptying the batteries is a bad idea.

Power Management, ACPI

Mode Status Notes
S0 (running) works
S1 (standby) (does not exist)
S2 (STR) (does not exist)
S3 (STR) works (linux: acpi_sleep=s3_bios,s3_mode)
swsusp: echo 3 > /proc/acpi/sleep
pmdisk: echo mem > /sys/power/state
S4 (STD) works swsusp: echo 4 > /proc/acpi/sleep
pmdisk: echo disk > /sys/power/state
S5 (power off) works

The ACPI on this machine only supports S0, S3, S4, and S5 (also known as Running, Suspend-to-RAM, Suspend-to-Disk, and Power Off). I was hoping for S1 ("standby") support, but no such luck on this machine.

S3 is triggered with echo 3 > /proc/acpi/sleep or echo mem > /sys/power/state. On resume, the video does not restore properly. Fix this by passing the parameters acpi_sleep=s3_bios,s3_mode to linux on boot (lilo or grub), which makes calls to BIOS during resume to restore the video (more info in /usr/src/linux/Documentation/power/video.txt). If you suspend from X, the system restores to X properly. If you suspend from console, the system restores to text mode properly.

I don't think the notebook has BIOS-supported S4 (suspend-to-disk). The notebook's initial partitioning involved a 77G NTFS partition with 9.4G filled, and a 2G FAT32 recovery partition with 1.7G filled, and so I concluded there was no BIOS support for S4 — either the BIOS would have enough marbles to write NTFS without corruption, or would have some way of wedging 512M RAM plus device states into less than 512M of FAT32 disk space. I found neither scenario to be plausible.

While swsusp (aka Software Suspend) works, 2.6.x's pmdisk (aka Suspend-to-Disk) is faster overall, since the latter appears to utilize ACPI's abilities more thoroughly.

Trigger swsusp by echoing '4' (as in S4) into /proc/acpi/sleep. Resuming requires specifying the resume partition to the kernel on boot, e.g. resume=/dev/hda5 (my first swap partition is /dev/hda5).

Trigger pmdisk by echoing 'disk' (as in suspend-to-disk) into /sys/power/state. If the file doesn't exist, pmdisk was not compiled into the kernel. In the kernel configuration, I specified the first swap partition (my /dev/hda5) as the default suspend partition. No extra parameters need to be passed to the kernel on boot (in fact, when resuming from a pmdisk suspension, specifying swsusp's resume=... parameter triggers a kernel panic).

Both work fine except neither seems to be able to properly suspend mysqld. Futhermore, swsusp seems unable to complete the suspend if the USB EHCI driver is loaded, whereas pmdisk does not have this problem. The EHCI problem appears to be solved in linux (stock kernel) 2.6.9.

And as mentioned earlier, pmdisk is faster than swsusp, overall. The minor catch is that pmdisk has not been as thoroughly tested as swsusp, so I'm running a slightly larger risk of data loss using pmdisk. So far, nothing catastrophic has happened (author crosses fingers and continues with backups).

Pressing the power button, flipping the lid, changing and charging batteries, and un/plugging the AC adaptor all generate the expected ACPI events for acpid. Scripts for these events are placed in /etc/acpi/ under Debian. I don't know where the documentation exists for these scripts; I just followed the example of /etc/acpi/events/powerbtn and /etc/acpi/powerbtn.sh.

More information on the kernel's suspend features can be found under the kernel source tree, as (kernel-source)/Documentation/power/swsusp.txt.

PCMCIA, 2 slots

I lost my PCMCIA 10/100baseT ethernet card. I'm so sad.

Modem

(Plain Old Telephone Service)

I don't know, I don't care. ALSA claims to have found and be able to drive this interface (snd_intel8x0m), but I don't care to find out.

Extra Buttons

The manual calls these "Security/Application buttons", and they offer dual purposes. They are located above the F-keys (Function keys), and span the columns of F8 through F12 (more like 'U' to 'P'). The five buttons are labelled "1", "2", "3", "4", and "Enter". The primary purpose is to act as the password entry system of the BIOS. The secondary purpose is to launch applications or something in Windows, so says the manual.

As a password entry system, the password is set and entered as a sequence of key chords of the first four buttons, followed by Enter. This method seems rather awkward, in my opinion. If the password is set, the password is required on anything resembling powering up, including cold booting, warm booting, waking up from sleep, opening the lid, and resuming from suspend. Fujitsu supplies a Windows application that permits (re)setting this password from within Windows (and suggests removing said application to prevent change of password).

(guidance from kfl@[domain-elided]) There is a software project concentrating on the "Application Panel" for Fujitsu notebooks under FreeBSD and Linux, at http://apanel.sourceforge.net. Due to... implementation details... the buttons are read in a polling fashion instead of interrupt-based. The apanel utilities can also control the (mini-)LCD and LED on the fancier Fujitsu application panels, such as setting the blinkenlight (fun!). In terms of Fujitsu panel enhancements, the S7010 only has the Application Buttons. As of 2005.05.28, the "Enter" APPBTN is not detectable, but "1" through "4" are (and they set bitmasks, so key chords are still viable).

To use apanel on S7010, I needed the i2c_801 module/driver (from linux tree, 2.6.x); the i2c_810 driver seems tempting, but is incorrect. The linux-target distribution tarball (v 1.3 at the time of this writing) consists of two trees, linux/ for kernel drivers, and utils/ for userspace tools. The linux/ directory yields a kernel module, apanel.ko, which relies on i2c access, and thus the proper i2c module/driver. Upon loading, the module leaves a trail of messages in the kernel ring buffer (dmesg(8)), which helps to tell what the driver found and if the driver loaded succesfully (complete success when the apanel copyright/attribution line shows).

Also, the userspace tool expects a device file named /dev/fujitsu/apanel. Details are included under apanel-linux-xx/README.linux; since I don't use udev nor devfs, I created the file by hand:

# mkdir /dev/fujitsu; mknod /dev/fujitsu/apanel c 10 216

The apanel project was originally targeted for the Fujitsu C-4110, but still works on S7010 and E8010, to give you an idea on how well you may fare with it.

Go-Faster Stripes

The outside panel has two notable stickers. One is on the topside, reading "PROTECTED BY NOTEBOOK SECURITY SYSTEM System will not operate without proper code.", apparently referring to the BIOS-enforced password-encumbered boot. The other sticker is on the bottom, apparently the Windows XP... uh... CD key or product key or whatever sticker... I don't feel like deciphering it. Extrapolating the advices from Id Software's Quake III: Arena, Epic's Unreal Tournament 2004, and various other video games, I won't be sharing this key, although it seems silly to place such a thing in such a promininent location. I mean, I don't stick my Quake 3 CD Key on my front door or anything.

On the inside bottom (keyboard) panel were five stickers on the left and three on the right.

On the inside left are the stickers for "Designed for Windows XP", "(intel inside) pentium M", "Total 802.11 ABG Atheros", "Fujitsu Bluetooth Enabled", and "Fujitsu Wireless 802.11 a+b/g Enabled".

On the right are the notebook model sticker "S Series Lifebook" in a snug molded depression, a prominent "Bluetooth" sticker, and a large sticker extolling the notebook's features.

I have placed a "GNU/Linux INSIDE!" sticker over the "Designed for..." sticker. I also have a spare shiny domed Storm Linux sticker available, but that would be half-false advertising. Originally, I wanted to remove the Windows XP sticker, but my dealer said doing so would void the warranty. They didn't specify if they meant the warranty on Windows (which doesn't exist...) or on the notebook (which would be dumb on the basis of irrelevance...).

Other Random Notes

(gildea@[domain-elided]) This sentence is here to mention that the Fujitsu P7010 is rather similar to the S7010 in terms of Linux installation and setup, to help stick out in search engines for the sake of other P7010 owners. Since the two models share the number "7010", I wouldn't be surprised if the P7010 does share many characterstics with the S7010.

(kfl@[domain-elided]) Another notebook similar to the Fujitsu S7010, Linux-wise, is the Fujitsu E8010, on which kfl has managed to install kubuntu.

Bill Giannikos's page on Linux on Fujitsu P7010


Diagnostical dumps (lspci, various /proc files) on this page: lifebooks7010-dumps.html


Epilogue

In Novemeber 2005, my notebook computer failed to resume from sleep properly. After repeated reboots, the notebook proved fickle in remaining in a running state. After some disassembly, tinkering, and testing, I concluded the PCI (north bridge) chipset itself or one of its solder joints cracked, since it could maintain integrity if the notebook was held/bent into the right shape. Replacement of the mainboard would cost USD 750. I opted to attempt restoring the sytem myself.

In June 2007, my house was broken into and burgled. Among the missing items were my laptop that sat by my bedside at the time. At this point, I would like to highlight the advantage in keeping /home on an encrypted volume.

In the times when my notebook was unusable, I relied on a USB drive laden with putty, VNC, vim, Abiword, and Gnumeric for Windows, to access my home desktop computer remotely from MS-Windows computers.


Last updated 2007.09.13
- Frederick (phaethon , icculus . org)