Installing Debian GNU/Linux on a Fujitsu Lifebook U810

I used Win32 Debian-Installer Loader to get round lack of USB CD-ROM drive so far. This went smoothly. I chose an "Advanced" install, AFAICR, which let me do things like choose the Debian version (testing) and kernel version (2.6.22) to install.

There were three partitions set up on the device:

  1. About 1.5 GB
  2. About 37 GB
  3. Another of about 1.5 GB

Without due care and attention, I deleted the last of these to make space for Debian, and shrunk the large one to 15 GB. I then created a root partition, and a smaller partition (about 1 GB) for swap at the end of the device (which was four physical partitions, no logical). This works well for Debian, but leaves Vista unbootable. Oh well, I'll write more when I clean up the mess.

Update: actually Windows still boots fine, but I had to change the device from (hd0,0) to (hd0,2) in the grub configuration for some reason.

Built-in ethernet

Works out of the box. I installed Debian this way, using the supplied ethernet (and VGA) dongle.

Kernel 2.6.24 has some apparent problems with resource allocation: passing pnpacpi=off to the kernel at boot time fixes that.

Update: this option is still apparently needed with 2.6.25.

Wifi

Wifi device reports as AR5006EG. This is supported by the madwifi driver. Compile with module-assistant, i.e.

aptitude install module-assistant
m-a prepare
m-a a-i madwifi

Then the usual Debian wireless network configuration works, including WPA.

Wifi doesn't seem to work immediately at boot: once the system is started up, bouncing the interface (ifdown/ifup) makes things work again.

Update: after a while (perhaps due to kernel upgrade?) the above note about needing to bounce the wireless network interface no longer seems to be true. I have noticed another glitch though, which is relevant if (like me) you imported a US model Lifebook into another country: the set of available wireless frequencies appears to be limited in firmware to those permitted by US regulations (overriding the country code by passing a kernel option to the madwifi driver fails). This means you won't be able to connect to an access point using, e.g., channel 13. More info if I discover any.

Update (20080704): Neil Jeffries (who has a blog with a fair bit of U810 info on it) kindly emailed me about a fix for the above WiFi region restriction: TamoSoft have a small Windows utility on this page which can be used to tweak the device's firmware (you also need to install a trial of their "CommView for WiFi" software). This seems to work well for me -- you'll need to have kept your Windows partition around to use it though!

Touch screen

Method 1: BIOS set to "Touch panel" (OBSOLETE)

I cribbed an xorg.conf file from here, after changing the BIOS touch panel setting to "Touch panel" (from "Tablet").

I used LordOfThePigs's evtouch setting:

Option "MinX" "530"
Option "MinY" "1075"
Option "MaxX" "15260"
Option "MaxY" "15800"

Which seem quite accurate on my device too. Windows isn't too happy about the BIOS setting change, but never mind.

I found the touchscreen sensitivity was very low using this method, especially outside the bottom-left quarter of the screen. So, I started experimenting with another method...

Method 2: BIOS set to "Tablet", fujitsu-usb-touchscreen driver

Update 2012/06/30 you can download an improved version of the driver here -- doesn't seem to work with kernel 3.2 yet though. Try this patch, or use version 0.3.9 from here.

The following is for historical interest only.

I've written an experimental driver for the touchscreen running in "Tablet" mode, which includes (reverse-engineered!) commands which successfully increase the sensitivity of the touch panel (for me at least). Setting up is a bit tricky at present:

  1. Download the source for the driver.
  2. Compile with make, then (as root) make install.
  3. Create a file in /etc/udev/rules.d named 010_u810_tablet.rules, containing the following line:
    SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0430", SYSFS{idProduct}=="0530", ENV{ID_CLASS}="event"
    
  4. Add the following to your xorg.conf (updated 20080707):
        Section "InputDevice"
                Identifier      "touchscreen"
                Driver          "evtouch"
                Option          "Device"        "/dev/input/by-id/usb-Fujitsu_Component_USB_Touch_Panel-event-mouse"
                Option          "DeviceName"    "touchscreen"
                Option          "MinX" "13000"
                Option          "MinY" "25000"
                Option          "MaxX" "382000"
                Option          "MaxY" "392000"
                Option          "longtouched_action" "down"
                Option          "longtouched_button" "3"
                Option          "maybetapped_action" "click"
                Option          "maybetapped_button" "1"
                Option          "touched_drag" "1"
                Option          "oneandahalftap_button" "0"
                Option          "LongtouchTimer"  "500"
                Option          "MoveLimit"  "18"
                Option          "ReportingMode" "Raw"
                Option          "Emulate3Buttons"
                Option          "Emulate3Timeout" "50"
                Option          "TapTimer" "90"
                Option          "SendCoreEvents" "On"
        EndSection
    
        [...]
    
        Section "ServerLayout"
                [...]
                InputDevice     "touchscreen"   "SendCoreEvents"
                [...]
        EndSection
    
  5. Run udevtrigger and restart X, or reboot your machine.

(Some of these evtouch options are only present in Debian's patched version of evtouch (0.8.7-3 at the time of writing) I think, not the upstream source. YMMV if you're using another Linux distribution.)

You might need to experiment with MinX/MaxX/MinY/MaxY settings (there's no way of calibrating automatically for now).

The driver doesn't currently play nicely with screen rotation, though click/drag handling is much better with the above options than with those on an earlier version of this page.

If you don't have the device file /dev/input/by-id/usb-Fujitsu_Component_USB_Touch_Panel-event-mouse mentioned in the above Xorg configuration bits, try the following:

  1. Create a file /etc/modprobe.d/u810_tablet with the following contents:
    blacklist usbhid
    
  2. Add the following to the end of your /etc/modules file:
    u810_tablet
    usbhid
    

If this works, please drop me an email (address below).

(There may still be issues with battery vs. mains power with this driver, and also power management and sleeping. Don't use it if you're worried about damaging your hardware!)

ALPS pointing device (nipple)

Works as a mouse, except for the "tap-clicking" feature. The tpconfig program doesn't appear to have support for the device in the U810, yet.

Special buttons / Hotkeys

To make the hotkeys work (/, //, rotate screen, down, up, fn, ctrl-alt-del), you need the fsc_btns driver, and this patch (against 1.30, but sent upstream). Then you can use xbindkeys with .xbindkeysrc reading, e.g.:

Update 2012/06/30: Latest version (2.3.2 at the time of writing) works fine with kernel 3.2.

#rotate screen key
"/usr/local/bin/screen-rotate"
m:0x0 + c:203

#programmable button 1 /
"/usr/local/bin/toggle-kbd-light"
m:0x0 + c:159

#programmable button 2 //
"/usr/bin/cellwriter"
m:0x0 + c:151

I found that the volume up/volume down/mute buttons worked already, but I needed to configure xmodmap with a .xmodmaprc like so:

keysym Super_L = Tab
keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume
keycode 160 = XF86AudioMute

(Which also maps the Windows key (Super_L) to tab, which you might find useful too).

Keyboard light

Update 2012/06/30: keyboard light support has been in mainline kernels for a long while. Just write to the device /sys/class/leds/fujitsu::kblamps/brightness.

I've added support for the keyboard light to the fujitsu-laptop kernel module. A patch against 2.6.25 is here (you'll need to compile your own kernel to make use of this at present). This creates two entities in the /sys hierarchy:

/sys/devices/platform/fujitsu-laptop/kbd_light
/sys/class/leds/kbd_light/*

You can control the keyboard illumination LED headlights like so:

# Off.
echo 0 > /sys/devices/platform/fujitsu-laptop/kbd_light

# Flashing mark/space.
echo 1 > /sys/devices/platform/fujitsu-laptop/kbd_light

# Flashing space/mark.
echo 2 > /sys/devices/platform/fujitsu-laptop/kbd_light

# On.
echo 3 > /sys/devices/platform/fujitsu-laptop/kbd_light

Or:

echo 255 > /sys/class/leds/kbd_light/brightness

(Anything over 127 is on, else off -- no halfway shades, unfortunately ;-)).

You might find this little program useful for controlling the light. Compile as follows:

$ gcc toggle-kbd-light.c -O -o toggle-kbd-light
$ su
<password>
# chown root toggle-kbd-light
# chmod +s toggle-kbd-light
# cp toggle-kbd-light /usr/local/bin

You can then run this binary via xbindkeys from a special button, as shown above, and the keyboard light will toggle on/off. (WARNING: suid root binaries might be considered a security risk! There are probably other ways of doing this, it's only meant as an example.)

Sound, 3D acceleration

Work out of the box.

Headphone jack

Works, but doesn't cut off the main speaker when you plug something in, unfortunately. Sound quality is good.

Update (20081013): The above is (now) wrong, maybe due to a kernel upgrade: sound is now disabled from the internal speaker when headphones are plugged in. Thanks to the person/people who pointed this out to me!

Webcam

Update 2012/06/30 webcam seems to work out-of-the-box with recent kernels.

As others have reported, the webcam works fine after soft-rebooting from Windows, but Linux can't (yet) load the camera firmware and/or initialise the camera properly. The r5u870 driver is very close to being able to do that, though.

Unfortunately (at the time of last checking), although the most recent r5u870 module is capable of loading firmware onto the device and flipping around X/Y axes, it will transfer video only rather unreliably (with frequent freeze-ups and flickering). As a workaround, you can do:

$ modprobe r5u870
(start xawtv or similar, and flip camera's X/Y flags)
$ modprobe -r r5u870
$ modprobe uvcvideo

And now, you will have smooth video in xawtv/luvcview.

Bluetooth

Not tested.

SD card reader

Work fine.

CF slot

Not tested (nothing to plug into it!)

Hibernate / Suspend

Suspend-to-disk works reasonably well (install the hibernate package). Just type:

# hibernate-disk

Suspend-to-RAM isn't quite supported, though you can run (from uswsusp):

# s2ram

Though beware of caveats (see the man page).

Pen input / On-screen keyboard

The best thing I've found for this is cellwriter. With the new (20080707) options for evtouch written above, this works pretty nicely.

Contact

If you have any info or comments, please email me at jules "at" panic.cs-bristol.org.uk. Thanks!