Linux on a Dell Latitude X1

Linux on a Dell Latitude X1

Read the blog entry to make comments and requests about this stuff.

The Dell X1 is actually a rebranded Samsung Q30.

It is extremely silent.

It is extremely hot.

Not only because it doesn’t have a fan, but because it’s so sexy.

It runs on GNU/Linux.

Tip: Read all my GNU/Linux related stuff (in English) by clicking GNU/Linux [in English] under Categories on the sidebar. Then all these nonsense entries written in this strange language of Norwegian won’t bother you ;)

Huge thanks to Terje R. for helping me out with everything!

Contents

Status

  Coming soon
  • Green: Works out of the box with Fedora Core 4
  • Orange: Works, but with extra tweaking is needed (explained on this page)
  • Red: Doesn’t work

Working on at the moment: Moving this page to a WIKI (using WikiMedia).

Todo

  • Get everything working.
  • Get hibernation working. Works :D
  • Get rid of the continuous beeping sound from the sound card, which is pitched according to system load. With the 2.6.12 kernel this sort of disappeared, but there still is some flickering so that the soundcard is uselessThe soundcard works just fine now - I don’t know what I did. I still wonder how to play music cd’s from the external usb connected dvd drive…
  • X works fine with the vesa driver, but in order to get crt out (external monitor) I believe that the i915gm driver (and i810) must be used. And it works.
  • Make ACPI S3 (suspend to RAM) more stable. It is quite stable now.
  • Make the SD card reader work. (Probably impossible - thanks to Dell/Samsung)
  • Understand how to use ACPI scripts together with one or more of cpuspeed, powernowd, laptop_mode and the kernel stuff in /sys/devices/system/cpu/cpu0/cpufreq/*
  • Convert this page into a WIKI to make it more readable…
  • Get rid of errors like (listed in random order):
    mtrr: base(0xc0020000) is not aligned on a size(0x600000) boundary
    codec_semaphore: semaphore is not ready [0x1][0x700300]
    codec_read 1: semaphore is not ready for register 0x54
    codec_semaphore: semaphore is not ready [0x1][0x700300]
    codec_write 1: semaphore is not ready for register 0x54
    ieee80211: dev16162: Unknown management packet: 0
    MC'97 1 converters and GPIO not ready (0xff00)
    hw_random: cannot enable RNG, aborting
    shpchp: acpi_shpchprm:\_SB_.PCI0 evaluate _BBN fail=0x5
    shpchp: acpi_shpchprm:get_device PCI ROOT HID fail=0x5
    

    and

    Shutting down interface eth0:  Device eth0 has different MAC address than expected, ignoring.
    

Installation

Microsoft Stuff

  • Booted the computer with Microsoft Windows XP Home. OK
  • Tried to repartition the drive with Partition Magic 8.0 from external DVD drive. FAILED
  • Installed Partition Magic 8.0 in Windows. OK
  • Repartitioned the drive (8 GB for Winblows). OK
  • Upgrade Windows XP Home to Windows XP Professional: Doesn’t work right away: It halts on “Installing Devices” and 34 minutes remaining (the progress bar was still active, though). Rebooted and continued Windows Upgrade. OK

Fedora Core Installation

  • Of course, I couldn’t wait to June 6 to get Fedora Core 4, so I’ll installed Fedora Core test 3.92. (The release is delayed…)
  • Installed Fedora Core test 3.92
  • Installed Fedora Core 4 (clean reinstall - kept my
    /home partition and backed up /etc )

Configuration

The Dell X1 is quite new, and the laptop support in Linux is still quite experimental, so in order to squeeze everything out of your machine, you’ll need the newest software.

In most of the following, I assume you are root, i.e. that you’ve typed su - followed by ENTER (notice the “-”, it gives you the correct PATH variable). Codelines beginning with “#” indicates that this is a command run from a console as root (unless they are comments in files or specials such as #ifdef…).

Kernel Installation

In order to get Direct Rendering working (DRI), you’ll need at least kernel 2.6.12 (I think). According to Quim this is actually not necessary, but you should of course install the latest kernel anyway ;)
This is a step-by-step guide on how to download and install (compile) it (WARNING: This will break the ipw2200 support temporarily, read the ipw2200 section below to fix it):

Check http://www.kernel.org for the latest kernel. In the following, I assume it is 2.6.12.

# cd /usr/src/
# wget ftp://ftp.kernel.org:/pub/linux/kernel/v2.6/linux-2.6.12.tar.bz2
# tar xjf linux-2.6.12.tar.bz2
# cd linux-2.6.12
# cp /boot/config-2.6.XXX .config
# make oldconfig
# make

Replace the “XXX” by your current kernel version (as reported by ‘uname -r‘). You’ll probably get a few gcc4 warnings, but that’s okey. The compiling will take some half an hour. Make a cup of coffee (and drink it).

Next, make the new kernel bootable (still from within /usr/src/linux-2.6.12/ ):

# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.12
# make modules_install
# mkinitrd /boot/initrd-2.6.12.img 2.6.12

Add the new kernel as the default entry in /etc/grub.conf (which is actually symlinked to /boot/grub/grub.conf). This is mine:

default=0
timeout=3
splashimage=(hd0,2)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.12)
        root (hd0,2)
        kernel /vmlinuz-2.6.12 ro root=LABEL=/
        initrd /initrd-2.6.12.img
title Fedora Core (2.6.11-1.1369_FC4)
        root (hd0,2)
        kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ quiet
        initrd /initrd-2.6.11-1.1369_FC4.img
title Winblows XP
        rootnoverify (hd0,1)
        chainloader +1

As you can see, I kept my old kernel entry, so that if the new kernel for some reason doesn’t work the old one is still intact.
Now, reboot.

Broadcom NetXtreme BCM5751 Gigabit Ethernet PCI Express (tg3 module)

In order to have the wired network card wake up properly after ACPI sleep, a kernel patch is needed.
Download the patch from gmane.org. (Tip: Be careful to save the patch in a proper format, i.e. with ‘@’ and not ‘<at>’ in it)

In the following the patch is assumed to reside in /usr/src/portdrv.patch and the kernel source in /usr/src/kernel-2.6.12/.
Warning: This will overwrite your old kernel.
Tip: If you have not upgraded to the 2.6.12 kernel yet, you can patch the kernel before building it the first time.

# cd /usr/src/linux-2.6.12
# patch -p1 < ../portdrv.patch
# make && make modules_install
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.12
# rm /boot//initrd-2.6.12.img
# mkinitrd /boot/initrd-2.6.12.img 2.6.12
# reboot

Now my ACPI scripts works fine, and the machine doesn’t hang on resume. Yeah :) (Er, well, there are still a few issues to be fixed - bluetooth seems to die on suspend - maybe I need to unload the USB modules?) In the new ACPI scripts I unload/reload the usb modules, and bluetooth wakes up fine

Intel(R) PRO/Wireless 2200/2915 Network Driver

In the 2.6.12 kernel, the ipw2200 module is not included(they didn’t compile clean for me at least). Download and install the latest version from http://ipw2200.sf.net (check for the latest version and the appropriate firmware, in the following I assume ipw2200 version 1.0.4):
I downloaded the following files:
ipw2200-1.0.4.tgz, ieee80211-2.6.12.patch (from http://ipw2200.sourceforge.net/patches/ieee80211-2.6.12.patch) and ipw2200-fw-2.3.tgz (firmware for the 1.0.4 version). Suppose you’ve downloaded them all in /root, untar and install:

# cd /root
# untar xzf ipw2200-fw-2.3.tgz
# cd ipw2200-1.0.4
# patch net/ieee80211.h ../ieee80211-2.6.12.patch
# make
# make install
# cd /lib/firmware/
# tar xzf /root/ipw2200-fw-2.3.tgz
# modprobe ipw2200
# dmesg

Look at the dmesg output and see if the module is successfully loaded. (and let me know if I’ve written anything wrong here..) You should now be able to configure the rest of the wireless stuff.

Display

1280x768 Resolution using 915resolution

To use the 1280x768 screen resolution to its full extent, I use the program by 915resolution as suggested by Matthias Saou (linked at the bottom). If not, the BIOS will simulate the full screen resolution by stretching a 1024x768 desktop (I think…). This setup is needed both if you’re using the vesa driver, and also if you’re using the new i915 (actually the i810) driver as described below.

I’d hoped this would be supported by the CVS version of Xorg, as they claim on their Changes since Xorg 6.8.0 page, but Thomas has a comment saying it doesn’t work…

From “stomljen” download 915resolution, and untar it:

# tar xzf 915resolution-0.2.tar.gz
# cd 915resolution-0.2
# less README.txt
# make
# make install
# 915resolution -l
# 915resolution 3c 1280 768

I chose to patch the 3c mode because I figured I’d never use that resolution. Change this if you want.

For now this won’t really do anything. First, make the patch permanent upon reboot: Add the following line to /etc/rc.local:

/usr/sbin/915resolution 3c 1280 768

Next, edit /etc/X11/xorg.conf to something like this:

Section \"Screen\"
        Identifier \"Screen0\"
        Device     \"Videocard0\"
        Monitor    \"Monitor0\"
        DefaultDepth     24
        SubSection \"Display\"
                Viewport   0 0
                Depth     16
                Modes    \"800x600\" \"640x480\"
        EndSubSection
        SubSection \"Display\"
                Viewport   0 0
                Depth     24
                Modes    \"1280x768\" \"1024x768\" \"800x600\" \"640x480\"
        EndSubSection
EndSection

The Modes "1280x768" ... is the important
change. Restart the X server. (Sorry if the double quotes are escaped in the above…)
Now the generic (and slow) vesa driver will work, but without dri support, so watching movies etc. will be extremely slow. In order to have it all working, follow the Xorg installation description below.

Install the latest Xorg (with DRI support)

With the new kernel (2.6.12) it is possible to use the latest snapshot from http://dri.freedesktop.org/snapshots/. Download the latest versions of common, i810 and i915. In the following the 20050618 snapshot is assumed (shut down the X server before you begin):

# init 3
# tar xjf common-20050618-linux.i386.tar.bz2
# tar xjf i810-20050618-linux.i386.tar.bz2
# tar xjf i915-20050618-linux.i386.tar.bz2
# cd dripkg/
# ./install.sh

Now, in your xorg.conf file, change ‘ vesa
to ‘ i810 ‘ (yes, all the i915GM functionality is put in that driver). Restart the X server with ‘init 5‘.

Unfortunately, this version breaks the virtual consoles (i.e. those you get with Ctrl-Alt-F1 and so on). This can be ‘fixed’ by following comment 32 the freedesktop.org bugzilla… I’ve tried this, with some success, but there are some ACPI wake up from sleep problems (but they might be connected to the tg3 network card module…) Works fine now :)

Please drop a comment if you have any info on this.

ACPI - Power Management

In short, this works with this sequence:
echo 3 > /proc/acpi/sleep‘ to put the machine to sleep, and Power button, ctrl-alt-f1, ctrl-alt-f7, Fn-UpArrow (i.e. increase screen light) to get it back.

Or better yet make the following files and put them in the indicated places (I found this out by fooling around with ‘acpi_listen‘ and tapping the blue keys, as well as closing/opening the lid.)
I’ve put my newest ACPI scripts in the Files section

In /etc/acpi/events/ put a file sleep:

event=button[ /]sleep
action=/etc/acpi/actions/sleep.sh

and a file lid:

event=button[ /]lid
action=/etc/acpi/actions/sleep.sh

In /etc/acpi/actions/ put a file sleep.sh:

#!/bin/bash
	
# ACPI script to send a Dell Latitude X1 to sleep/suspend by MartinG
# Version 0.001 (not yet working very good)
	
PATH=/bin:/usr/bin:/usr/sbin:/sbin:/usr/local/sbin
# Switch to bootsplash console
chvt 6
echo \"Going to sleep...\"
# Empty logfile
#echo > /tmp/suspend.log
echo `date --iso-8601=seconds` Going to sleep... >> /tmp/suspend.log
	
# Flush disk buffers, so we won't lose to much data in case it fails
sync
	
# Go, sleep!
# The space after the '3' is important:
echo 3 > /proc/acpi/sleep
	
# The machine is awakened by touching the power button
echo \"...we are back.\"
echo `date --iso-8601=seconds` ...we are back. >> /tmp/suspend.log
	
# Switch back to X
chvt 7
	
# You still might have to wait a few seconds and press Ctrl-Alt-F1, Ctrl-Alt-F7,
# and press Fn+UpArrow to wake up the screen...

Make the changes active:

# service acpid reload

Tip: The ACPI manager doesn’t care what you call your
/etc/acpi/events/ scripts, so if you’re using emacs to edit them, be sure to remove all emacs backup files by

# rm /etc/acpi/events/*~

to save a day of your nerdy life.

Tip: Don’t forget to make the scripts executable:

# chmod u+x /etc/acpi/actions/*.sh

(all of them…)

Tip: Oliver Page reported that on Debian files ending with .conf in /etc/acpi/events will be ignored. This is not the case in Fedora, where the acpid documentation states: “acpid will look in a configuration directory (/etc/acpi/events by default), and parse all files that do not begin with a period (’.').”

Tip: Maybe the ACPI event “video VID” could be used to fix the screen awakening problem. In Fedora Core 4 with the 2.6.12 kernel the video VID ACPI event no longer show up. Any ideas?

Tip: Adding acpi_sleep=s3_bios as a kernel parameter makes my Dell X1 freeze on sleep (2.6.11-1.1369_FC4 kernel). But the description above works.

Tip: Mark suggested to turn on a BIOS password in order to force the screen to wake up after sleep. (I haven’t tried this - at the moment Fn-UpArrow works fine for me)

Update:Tim posted a comment with some nice ACPI scripts. I’ve altered them a bit, and they seems to work pretty well when one is NOT using the wired network card (tg3 module). They can be found in the Files section.
After patching the 2.6.12 kernel according to the description above, this problem is solved :)

Hibernation - Software Suspend 2 (swsusp2)

WARNING: This is quite experimental at the moment. But it works for me. Use at your own risk.

You must be patient to get this up and running.

First, fix the ipw2200 wireless module (The config option for suspend2 changed name in 2.1.8.6 from CONFIG_SOFTWARE_SUSPEND2_BUILTIN to just CONFIG_SUSPEND2):
Edit the source code of the ipw2200 1.0.4 module:

# cd /root/tarballs/ipw2200-1.0.4/
# cp  ipw2200.c ipw2200.c.orig
# emacs ipw2200.c

And change the line

#ifdef CONFIG_SOFTWARE_SUSPEND2_BUILTIN

to

#ifdef CONFIG_SUSPEND2

and compile and install it:

# less INSTALL
# make
# make install

Next, download the software suspend patch tarball from www.suspend2.net and patch the kernel source:

# cd /root/tarballs
# tar xjf software-suspend-2.1.9.5-for-2.6.12.tar.bz2
# cd /usr/src/linux-2.6.12
# /root/tarballs/software-suspend-2.1.9.5-for-2.6.12/apply
...
All happy!

Recompile the kernel (assuming you already have a .config file, else first ‘cp /boot/config-2.6.XXX .config‘). From within /usr/src/linux-2.6.12:
IMPORTANT: My swap partition is /dev/hda6 - your’s probably something else - find it with ‘cat /etc/fstab | grep swap‘ or ‘fdisk -l|grep -i swap‘.

# make oldconfig
...
CONFIG_SUSPEND2=y
CONFIG_SUSPEND2_FILEWRITER=y
CONFIG_SUSPEND2_SWAPWRITER=y
CONFIG_SUSPEND2_USERSPACE_UI=y
SUSPEND2_TEXT_MODE=n
CONFIG_SUSPEND2_DEFAULT_RESUME2=\"/dev/hda6\"
CONFIG_SUSPEND2_KEEP_IMAGE=y
CONFIG_SUSPEND2_CHECK_RESUME_SAFE=y
CONFIG_CRYPTO_LZF=y
	
# make

While compiling, download the hibernate script tarball and install it:

# cd /root/tarballs
# tar xzf hibernate-script-1.09.tar.gz
# cd hibernate-script-1.09
# less README
# ./install.sh
# cp init.d/hibernate-cleanup.sh /etc/init.d/hibernate-cleanup.sh

Back in /usr/src/linux-2.6.12, install the new kernel:

# make modules_install
# cp -f arch/i386/boot/bzImage /boot/vmlinuz-2.6.12-swsusp2
# mkinitrd -f -v /boot/initrd-2.6.12-swsusp2.img 2.6.12

Update /etc/grub.conf (NOTE: change /dev/hda6 to your swap partition):

...
title Fedora Core (2.6.12-swsusp2)
        root (hd0,2)
        kernel /vmlinuz-2.6.12-swsusp2 ro root=LABEL=/ resume2=swap:/dev/hda6
        initrd /initrd-2.6.12-swsusp2.img
...

Update the newly baked initrd:

# cd /root/
# mkdir myinitrd
# cd myinitrd
# gzip -dc < /boot/initrd-2.6.12-swsusp2.img |cpio -i

and edit the unpacked init to include the two extra lines the lines after ‘mount -t sysfs /sys /sys‘:

#!/bin/nash
mount -t proc /proc /proc
setquiet
echo Mounted /proc filesystem
echo Mounting sysfs
mount -t sysfs /sys /sys
echo Activating Software Suspend 2
echo > /proc/software_suspend/do_resume
echo Creating /dev
mount -o mode=0755 -t tmpfs /dev /dev
mknod /dev/console c 5 1
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mkdir /dev/pts
mkdir /dev/shm
echo Starting udev
/sbin/udevstart
echo -n \"/sbin/hotplug\" > /proc/sys/kernel/hotplug
echo \"Loading jbd.ko module\"
insmod /lib/jbd.ko
echo \"Loading ext3.ko module\"
insmod /lib/ext3.ko
/sbin/udevstart
echo Creating root device
mkrootdev /dev/root
echo Mounting root filesystem
mount -o defaults --ro -t ext3 /dev/root /sysroot
echo Switching to new root
switchroot --movedev /sysroot

Install the new initrd:

# cp /boot/initrd-2.6.12-swsusp2.img /boot/initrd-2.6.12-swsusp2-without-do_resume.img
# find . | cpio -o -c | gzip -9 > /boot/initrd-2.6.12-swsusp2.img

You might want to backup your personal data as well as the /etc/ folder before continuing in case you fuck up your entire system.

In order to reduce the chance of a total disaster something goes wrong with the hibernation, you should put the following line in your /etc/rc.local (this prevents the system to perform a resume after the the sequence ‘hibernate - boot a noresume kernel - reboot the resume kernel’ which otherwise will cause a filesystem crash as the noresume kernel will leave the system in another state…):

/etc/init.d/hibernate-cleanup.sh

Because I’m using the 915resolution VBIOS hack, and this has to be patched each and every time the system boots, the hibernation script must do this. Therefore, add the following line to /etc/hibernate/hibernate.conf (from the Software Suspend 2 Wiki):

OnResume 86 915resolution 3c 1280 768

Now, reboot with the new kernel (important). Then, from within X, issue the command ‘hibernate‘ as root. After a few seconds (20?), the computer turns itself off.
Next time you power on, boot from the same kernel (important) and watch the system bring you right to your X session instead of doing the whole boot sequence. If you’ve chosen to lock the X session you have to touch a key to wake up the display. For me it took about 35 seconds from I pushed the powerbutton until I could unlock my X session, and in total less than 55 seconds until the resume bar was 100 percent. That is with quite some programs running, and 1.2GB RAM.

See my hibernation.conf in the Files section (I use KDE). I’ve successfully used hibernation while having an active wireless network connection. One should maybe be careful if hibernating with AC power plugged and then resumes unplugged.

This rocks bigtime!!!

Touchpad - synaptics

With the standard configuration, the touchpad can feel a bit over sensitive and jumpy. Therefore, use the much more powerful synaptics driver which is actually already installed in Fedora Core 4. All you need to do is to edit /etc/X11/xorg.conf to include something like this (my complete xorg.conf can be found in the Files section):

Section \"Module\"
        Load  \"dbe\"
        Load  \"extmod\"
        Load  \"fbdevhw\"
        Load  \"glx\"
        Load  \"record\"
        Load  \"freetype\"
        Load  \"type1\"
        Load  \"dri\"
# Synaptics:
        Load  \"synaptics\"
EndSection
	
...
	
Section \"InputDevice\"
#       Driver      \"mouse\"
#       Option      \"Device\" \"/dev/input/mice\"
#       Option      \"Protocol\" \"IMPS/2\"
#       Identifier  \"Mouse0\"
#       Option      \"ZAxisMapping\" \"4 5\"
#       Option      \"Emulate3Buttons\" \"yes\"
	
# Synaptics:
        Identifier  \"Mouse0\"
        Driver        \"synaptics\"
        Option        \"Device\"          \"/dev/input/mouse0\"
        Option        \"SHMConfig\"       \"on\"
        # User customized stuff
        Option        \"Protocol\"        \"auto-dev\"
        Option        \"LeftEdge\"        \"1700\"
        Option        \"RightEdge\"       \"5300\"
        Option        \"TopEdge\"         \"1700\"
        Option        \"BottomEdge\"      \"4200\"
        Option        \"FingerLow\"       \"25\"
        Option        \"FingerHigh\"      \"30\"
        Option        \"MaxTapTime\"      \"180\"
        Option        \"MaxTapMove\"      \"220\"
        Option        \"VertScrollDelta\" \"100\"
        Option        \"MinSpeed\"        \"0.06\"
        Option        \"MaxSpeed\"        \"0.12\"
        Option        \"AccelFactor\"     \"0.0010\"
        Option        \"TapButton1\"      \"1\"
        Option        \"TapButton2\"      \"1\"
        Option        \"TapButton3\"      \"1\"
        Option        \"LTCornerButton\"  \"2\"
        #Option        \"LBCornerButton\"  \"0\"
        #Option        \"RTCornerButton\"  \"0\"
        #Option        \"RBCornerButton\"  \"0\"
EndSection

This will give you a more stable touchpad. In the config above, tapping gives a left-click (Option "TapButton1" "1") The config above also gives a up/down “scroll-wheel” on the left side of the touchpad, and a left-right scroll-wheel on the bottom. I’ve tried to make a middle button on the upper left corner (Option "LTCornerButton" "2"), but it doesn’t work very well (comments and suggestions are appreciated in the blog section ;-) )

The Dell X1 touchpad actually supports tapping with two - and even three fingers at the same time, but there seems to be a problem with the synaptics driver that prevents

        Option        \"TapButton1\"      \"1\"
        Option        \"TapButton2\"      \"2\"
        Option        \"TapButton3\"      \"3\"

to work. At least for me. Any ideas on this are welcome!

Compact Flash Slot

Working: When I plug my Canon Digital IXUS v3 CF card, a directory /media/CANON_DC/ immediately shows up. The card can be mounted by

# mount /media/CANON_DC

(even as a normal user).

Actually, this was much faster when I used Fedora Core test 3.92, as it was mounted as a SCSI disk (sda1): In Fedora Core 4 it is mounted as a IDE disk, and it takes quite a few seconds for /media/CANON_DC to show up.

Tip: Even though the Dell X1 does not have any PC Card slot (PCMCIA), the CF slot is internally PCMCIA connected so pcmcia must be running.

Secure Digital Data Slot (SD/MMC)

Doesn’t seem to work. If you know anything - please post a comment in the blog entry.
The output from ‘lspci -v‘:

02:01.2 Class 0805: Ricoh Co Ltd SD Card reader (rev 17) (prog-if 01)
        Subsystem: Dell: Unknown device 01a3
        Flags: bus master, medium devsel, latency 64, IRQ 10
        Memory at dfcfe700 (32-bit, non-prefetchable) [size=256]
        Capabilities: [80] Power Management version 2

External DVD Drive

It works:
When plugged after boot, a directory /media/cdrecorder shows up, and it can be mounted by a normal user by:

# mount /media/cdrecorder
#dmesg
usb 1-1: new high speed USB device using ehci_hcd and address 6
scsi3 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 6
usb-storage: waiting for device to settle before scanning
  Vendor: _NEC      Model: DVD+-RW ND-6500A  Rev: 202C
  Type:   CD-ROM                             ANSI SCSI revision: 00
sr0: scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda tray
Attached scsi CD-ROM sr0 at scsi3, channel 0, id 0, lun 0
usb-storage: device scan complete

I’ve not been able to listen to music CDs using my external USB connected D-bay DVD recorder/player. Please drop a comment if you have any info on this.

Firewire (IEEE 1394)

Haven’t tried it yet, but I guess it works:

ieee1394: Initialized config rom entry `ip1394'
ohci1394: $Rev: 1250 $ Ben Collins <bcollins@debian.org>
ACPI: PCI Interrupt 0000:02:01.1[B] -> Link [LNKC] -> GSI 9 (level, low) -> IRQ 9
ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[9]  MMIO=[dfcfe800-dfcfefff]  Max Pa
cket=[2048]
ACPI: AC Adapter [AC] (off-line)
ieee1394: Host added: ID:BUS[0-00:1023]  GUID[484fc000163ad030]

Miscellaneous Stuff

Laptop Mode Tools

Install Laptop Mode Tools from Bart Samwel (as of writing, 1.05 is the latest release, not available as rpm):

# tar xzf laptop-mode-tools_1.05.tar.gz
# cd laptop-mode-tools-1.05/
# less README
# ./install.sh

Then edit /etc/laptop-mode/laptop-mode.conf according to your preferences (you can find mine in the Files section).
Reload the laptop-mode service:

service laptop-mode reload

Wireless Networking

Coming soon…

NetworkManager

Turn on NetworkManager for runlevel 5 by ntsysv --level 5. (Or maybe not if you’re using both wired and wireless networks - NetworkManager will take complete control over your network settings) The latest version of NetworkManager seems to work really good:
Turn on NetworkManager for runlevel 5 by ntsysv --level 5, and run NetworkManagerInfo as a normal user to get a nice tray applet. It will even ask you for a password when trying to enter a WEP encrypted network ;)

Turn off RedHat Graphical Boot (rhgb)

Edit /etc/grub.conf and remove rhgb: see my grub.conf in the Files section.

Turn Off Services You Don’t Use

Speed up the booting by removing all unnecessary services:

# ntsysv --level 5

(These are mine: acpid, autofs, bluetooth, crond, cups, cups-config-deamon, gpm, haldeamon, iptables, laptop-mode, messagebus, netfs, network, ntpd, pcmcia, sshd, syslog, xfs, xinetd, NetworkManager, NetworkManagerDispatcher)

Mount /tmp in memory

On my Dell X1 I’ve got 1.2GB RAM, so why not mount /tmp in memory to reduce harddrive spinups when on batteries. Correct me if I’m wrong. In /etc/fstab, add a line:

none        /tmp        tmpfs   defaults        0 0

Note: Everything in /tmp will be lost when you reboot.

Tip: The harddrive on the Dell X1 is extremely silent. You can monitor the current state by ‘hdparm -C /dev/hda‘.

Prevent KsCD stealing your CD drive

I really HATE IT when programs that are supposed to make life better for you make it worse. KDE Autorun is such a program. I checks for audio CD’s every second or so, and therefore locks the drive so that ripping CD’s is impossible, or rather - it works only one sometimes. Therefore: Turn off this freakin’ Autorun:
As a normal user:

localhost:~:$ cd .kde
localhost:~/.kde:$ mkdir Autostart.hide
localhost:~/.kde:$ mv Autostart/
Autorun.desktop  .directory
localhost:~/.kde:$ mv Autostart/Autorun.desktop Autostart.hide/
localhost:~/.kde:$ ps aux|grep kscd
username  3397  0.0  0.0   4740   940 ?        S    12:01   0:00 /usr/bin/autorun -l --interval=1000 --cdplayer=/usr/bin/kscd
username  3686  0.0  1.1  30812 14632 ?        S    12:05   0:00 /usr/bin/kscd
username  3774  0.0  0.0   3748   684 pts/1    R+   12:13   0:00 grep kscd
localhost:~/.kde:$ killall autorun
localhost:~/.kde:$ killall kscd
localhost:~/.kde:$ kaudiocreator

Ah, just like cold beer on a sunny day. Phew.

Files

Some files:
/files/

Relevant stuff in the /etc/ folder (including EXPERIMENTAL (i.e. not really working very well) ACPI scripts) can be found here (click the link):
/etc/
These files are included:

etc/rc.d/rc.local
etc/laptop-mode/laptop-mode.conf
etc/acpi/acpi_handler.sh
etc/acpi/actions/sleep.sh
etc/acpi/actions/powermode.sh
etc/acpi/orig/events/sample.conf
etc/acpi/events/video
etc/acpi/events/default
etc/acpi/events/sleep
etc/acpi/events/ac_adapter
etc/acpi/events/lid
etc/grub.conf
etc/X11/xorg.conf

Other Resources

Dell X1 Pages

Other GNU/Linux Pages for Laptops

Stuff

TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile PhonesLinux On Laptops

Changelog

2005-08-27 Link to Jos’ page
2005-07-29 Link to Frank’s page
2005-07-07 Ripping CD’s after killing KsCD
2005-07-07 Link to Debian X1 page
2005-06-29 Hibernation/swsusp2 working.
2005-06-29 Brought the page more up to date.
2005-06-27 Hibernation stuff (unfinished)
2005-06-27 Tuxmobile and linux-on-laptop links
2005-06-26
2005-06-25 Added the portdrv patch in the Files section
2005-06-25 Laptop Mode Tools and updated Files section
2005-06-24 Broadcom tg3 module ACPI sleep/resume fixed by kernel patch.
2005-06-22 Kernel 2.6.12, DRI, and Xorg stuff.
2005-06-20 Nothing new actually, but I’ve been playing around quite a bit…
2005-06-17 Installed Fedora Core 4 (Stentz)
2005-06-06 Actually wrote something that might be useful to anyone.
2005-06-02 Got the computer!
2005-06-02 Still waiting for the laptop…
2005-05-21 Initiated this page

$Id: linux-on-a-dell-x1-aka-samsung-q30.html,v 1.39 2005/08/27 13:25:15 gronslet Exp $