Debian GNU/Linux on a DELL Inspiron 8500

This is yet another page for installing GNU/Linux on a DELL Inspiron 8500. It is possible that most of this information can be used with the DELL Inspiron 8600, since they are very similar models.

I will report how I got most of the components working, and give some tips on how to do some tasks the "Debian way", although I am still new to Debian myself.

A summary of components and installation status follows.

Device Type Status Updated Comment
Graphics card ATI Radeon Mobility 9000 Working - Default debian X server does not work. 4.3.0 downloaded
Screen WSXGA+ (1680x1050) Working - 1680x1050 modeline auto-detected!
Hard Disk Hitachi DK23EB-40 (40 GB) Working - UDMA 100 available after kernel compile
DVD/CDRW Hitachi GCC-4240N Working - SCSI emulation needed for cdrecord
On-board Ethernet Broadcom BCM4401 Working 17-10-2003 driver module builtin from 2.4.21 and on
On-board Sound Card Intel i810 Some problems - Works with alsa. Some problems with modem
On-board Modem Pctel Some problems - No driver in kernel. Driver source exists
Mini-pci wireless DELL Truemobile 1150 Working 15-11-2003 Could not connect aux antenna
Touchpad/Stick Unknown Working - Works out of the box
PCMCIA/Cardbus Texas Instruments Working - Works out of the box
Infared Unknown Working - SIR driver. Only up to 115200 bps
Firewire Texas Instruments Working - Works out of the box
USB Intel Working - Works out of the box with USB2 support.
Keyboard special keys - Working - Some hacks needed

Other sections:

All downloadable files all located in this directory.

Introduction

Installation

The laptop came with Windows XP Home pre-Installed. I resized the Windows XP partition to 6 GB and installed debian woody (3.0r0) to the rest of the disk, from the CDs (7 of them). When the installation ended, almost nothing worked (this is quite expected on a laptop installation). Once I got the ethernet working, I hacked the apt sources file (replaced the CD entries with network entries) and updated everything:

# apt-get update
# apt-get -u upgrade

Essentially, from that moment on, my system was not 3.0r0 anymore :-).

Short history

When I performed the installation, linux 2.4.20 was the stable kernel. I started with some tips from Graeme Wilford's page (thanks Graeme). Kernel patches that have found their way into the main kernel source tree have fixed some problems reported by Graeme. For instance, the IDE chipset problem and the immature ACPI have been fixed with recent kernels (like 2.4.22 I am using now).

What you will see in this page is the result of experimentation with different kernels and packages, so I cannot document exactly how I arrived at this state step by step. I will explain though, my current configuration and report updates from now on. It is possible that I forgot to include in this page some of the configuration I did, so if you find such a case, please contact me so that I can update this page and make it more usefull.

Kernel Compile

Update 21-02-2004: I am now using kernel 2.6.3

I got linux kernel 2.4.22 from my local kernel mirror and applied the ACPI patch for that kernel (I got that from the ACPI4Linux page).

If you don't compile the kernel the "debian way" you are not a true debian user :-). You will need to install the kernel-package package in order to do that. Documentation for the compilation proccess can be found on the man page of make-kpkg and the documentation directory (/usr/share/doc/kernel-package).
Briefly, here is how it goes:

tar xzvf linux-2.4.22.tar.gz
cd linux-2.4.22
patch -p1 < acpi-20030918-2.4.22.diff

For the configuration you can either use an old configuration file (here is mine):

$ cp config-2.4.22 .config
$ make oldconfig

or start from the beginning:

$ make menuconfig

Nothing unusual up to this point, but here is where the debian magic begins:

# make-kpkg --revision Custom.1 binary

This command will produce four debian packages on the directory below the kernel tree. Installing the kernel is as easy as installing the packages:

dpkg -i kernel-image-2.4.22_Custom.1_i386.deb
dpkg -i kernel-headers-2.4.22_Custom.1_i386.deb
dpkg -i kernel-source-2.4.22_Custom.1_all.deb (optional)
dpkg -i kernel-doc-2.4.22_Custom.1_all.deb (optional)

The default lilo.conf has two entries for /vmlinuz and /vmlinuz.old. Every time you install a kernel package, the new kernel is linked to /vmlinuz and the old to /vmlinuz.old. So when the post-install script of the kernel-image package is executed, both the latest kernel and the previous kernel are installed. It never hurts though to check these things, if you don't want to be looking for rescue disks...

NOTE: The standard way to find kernel headers nowadays is the link /lib/modules/`uname -r`/build. This link *should* point to the root of the kernel tree (only the include directory is used). After the compilation, this links points to the kernel you untared (/usr/local/src/linux-2.4.22 for me). If this link is to be operational, you have two choices. Either leave the untared kernel intact, or change the link to point at /usr/src/kernel-headers-2.4.22 which is the location debian installs kernel headers. I did the former, because I like to have handy the kernel sources of the running kernel.

About kernel modules

When it comes to modules configuration, the "debian way" is NEVER to edit /etc/modules.conf file by hand. A file has to be added in the directory /etc/modutils, with the contents you would normally put in modules.conf, and the utility update-modules has to be called afterwards (warning: changes are coming here for 2.6.x). Quite an elegant solution for installation of packages with kernel modules.

If you want a module to be loaded at system start-up you have to edit the file /etc/modules. One line per module, without options. My file looks like this:

# /etc/modules: kernel modules to load at boot time.
#
# This file should contain the names of kernel modules that are
# to be loaded at boot time, one per line.  Comments begin with
# a "#", and everything on the line after them are ignored.
ptserial
sbp2
usb-uhci
mousedev
hid
usbmouse
snd-card-0
i8k
usb-storage

BIOS

DELL issues BIOS updates from time to time. There is a changelog, but I can't always figure out to what extent they have helped with linux problems.

Anyway, I got the laptop with version A02, but right now I have flashed up to A05. DELL's site is quite complicated so I can't give a direct link from where I got that, go find it yourself if you don't trust me :-).

Power Management

ACPI

Testing, testing and testing... I started with tips from Graeme's page and kernel 2.4.20 to get the battery and proccessor working properly. A lot of experimentation and two kernel versions after that, things are more stable.

I now use 2.4.22 with a minimal (and probably irrelevant) patch from the ACPI4Linux page (see kernel section). The power and lid switches, the battery and the proccessor are all recognized properly. Some problems that still exist:

At the time of this writting I am using bios version A05. I see this at boot time with ACPI debug enabled (google bite):

ACPI: have wakeup address 0xc0001000
On node 0 totalpages: 130990
zone(0): 4096 pages.
zone(1): 126894 pages.
zone(2): 0 pages.
Dell Inspiron with broken BIOS detected. Refusing to enable the local APIC.
ACPI: RSDP (v000 DELL                                      ) @ 0x000fdf00
ACPI: RSDT (v001 DELL    CPi R   0x27d3091e ASL  0x00000061) @ 0x1fff0000
ACPI: FADT (v001 DELL    CPi R   0x27d3091e ASL  0x00000061) @ 0x1fff0400
ACPI: DSDT (v001 INT430 SYSFexxx 0x00001001 MSFT 0x0100000e) @ 0x00000000
ACPI: Subsystem revision 20030918
 tbxface-0117 [03] acpi_load_tables      : ACPI Tables successfully acquired
Parsing all Control Methods:.........................................................................................................................................................................
Table [DSDT](id F004) - 418 Objects with 67 Devices 169 Methods 5 Regions
ACPI Namespace successfully loaded at root c046ffdc
evxfevnt-0093 [04] acpi_enable           : Transition to ACPI mode successful
evgpeblk-0748 [06] ev_create_gpe_block   : GPE 00 to 31 [_GPE] 4 regs at 0000000000000828 on int 9
schedule_task(): keventd has not started
Completing Region/Field/Buffer/Package initialization:...............................................................
Initialized 5/5 Regions 10/10 Fields 23/23 Buffers 25/25 Packages (426 nodes)
Executing all Device _STA and_INI methods:....................................................................
68 Devices found containing: 68 _STA, 3 _INI methods
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: System [ACPI] (supports S0 S1 S3 S4bios S4 S5)
ACPI: PCI Root Bridge [PCI0] (00:00)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 9 10 *11)
ACPI: PCI Interrupt Link [LNKB] (IRQs 5 7)
ACPI: PCI Interrupt Link [LNKC] (IRQs 9 10 *11)
ACPI: PCI Interrupt Link [LNKD] (IRQs 5 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIE._PRT]
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11
PCI: Using ACPI for IRQ routing
PCI: if you experience problems, try using option 'pci=noacpi' or even 'acpi=off'
ACPI: AC Adapter [AC] (on-line)
ACPI: Battery Slot [BAT0] (battery present)
ACPI: Battery Slot [BAT1] (battery absent)
ACPI: Lid Switch [LID]
ACPI: Power Button (CM) [PBTN]
ACPI: Sleep Button (CM) [SBTN]
ACPI: Processor [CPU0] (supports C1 C2 C3, 6 performance states, 8 throttling states)
ACPI: Thermal Zone [THM] (53 C)

Dell laptop kernel module (i8k)

The i8k module does not load gracefully, so I compiled it as a module and forced it to load. I created /etc/modutils/i8k with the following contents:

#i8k has to be forced
options i8k force=1

After the module loads (see this), I can do:

$ cat /proc/i8k
1.0 A05 137KT21 48 1 2 144630 114360 -1 2

I use this module with the i8k plugin for GKrellM. Recently, after noticing that the fans where working too much, and they stopped at gkrellm stutdown, I found out that this plugin regulated the fan speed according to the temperature. This sucks! I want the system to regulate the fan speed, not an application.

While looking at the plugin code I found an option that disables the command sending to the kernel, but also disables reading the status from /proc/i8k. After applying this patch, and recompiling with make fake, the plugin does read the speed from proc and does not issue commands.

Hard Disk

With the default debian kernel, the IDE controller is not recognized so DMA is NOT enabled. Booting with the new, shiny kernel fixes this problem:

Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
ICH4: IDE controller at PCI slot 00:1f.1
PCI: Enabling device 00:1f.1 (0005 -> 0007)
ICH4: chipset revision 3
ICH4: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0xbfa0-0xbfa7, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0xbfa8-0xbfaf, BIOS settings: hdc:DMA, hdd:pio
hda: HITACHI_DK23EB-40, ATA DISK drive
blk: queue c048c8e0, I/O limit 4095Mb (mask 0xffffffff)
hdc: HL-DT-STCD-RW/DVD-ROM GCC-4240N, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: attached ide-disk driver.
hda: host protected area => 1
hda: 78140160 sectors (40008 MB) w/2048KiB Cache, CHS=4864/255/63, UDMA(100)
Partition check:
 hda: hda1 hda2 hda3 hda4 < hda5 hda6 >
ide: late registration of driver.

and gives something like this:

# hdparm -t /dev/hda

/dev/hda:
 Timing buffered disk reads:  64 MB in  2.25 seconds = 28.44 MB/sec

Graphics card / Screen

Framebuffer

After a kernel upgrade (I don't remember which one, but it was somewhere around 2.4.21 I think), the radeonfb module auto-detected the LCD panel size and automatically adjusted the console frame buffer! Now I have a cute penguin at startup (which is what is all about :-) ) and a decent console font. I see this at startup:

radeonfb: ref_clk=2700, ref_div=12, xclk=19500 from BIOS
radeonfb: panel ID string: 7T774^D154P1
radeonfb: detected LCD panel size from BIOS: 1680x1050
Console: switching to colour frame buffer device 210x65
radeonfb: ATI Radeon M9 Lf DDR SGRAM 32 MB
radeonfb: DVI port LCD monitor connected
radeonfb: CRT port no monitor connected

X server

X server does not start with the ancient version of X that comes with woody (4.1.0). I found version 4.3.0 packages backported to woody in http://www.apt-get.org/. I installed xserver-xfree86 but there was some mixup with the xserver-common with dependencies. After experimenting, I decided to keep the xserver-common package that came with debian (4.1.0). This is a little bizarre, but it is working fine. I had to freeze both packages so that they are not upgraded by accident with apt-get upgrade (in order to do this, you have to find them in dselect and press =).

Here is my XF86Config-4 file. Initially I had to define the modeline for 1680x1050 myself (I found it in another site). One of the updates caused the modeline to get automatically detected so I commented my entry (it was probably the radeonfb update). Here are the device and monitor sections:

Section "Device"
	Identifier	"RADEON 9000 - ati"
	# native X driver, loads "radeon" module
	Driver		"ati"
#	Kernel hangs when this is enabled
#	Option		"AGPMode"		"4"
#	This works
	Option		"AGPFastWrite"	"on"
#	Option		"DDCMode" "on"
#	Option		"CloneDisplay" "1"
#	Option		"CloneMode" "640x480"
EndSection

Section "Monitor"
	Identifier	"TFT"
	HorizSync	30-60
	VertRefresh	60
	Option		"DPMS"
#	UseModes	"WIDE"
EndSection

Actually there are two drivers for this card, ati (included in the X server) and fglrx (released by ATI, with binary-only parts). I have tried them both and they work pretty fine when it comes to X on the TFT monitor. I choose the ati driver not only because the other is proprietary, but because it offers nothing more.

DRI

As expected, the dri module included in the kernel is really old, and it fails to work with X. I downloaded dri source from the X server site and compiled the dri module, but when I enable DRI the system hangs some times on X server shutdown.

No luck with the proprietary DRI driver either. The system hangs when I switch from X to console.

As a result, I disabled DRI in X to avoid this problems. No 3D accelaration for me, but I don't really mind, I can wait for the next version (I haven't found much use for it anyway).

TV-out

No luck here either. No TV-out support for the ati driver.

With the fglrx driver, the TV does show something, but the image is really messed up (looks like a really wrong modeline for the screen). Moreover, when I switch from console to X and back, something weird happens to the color map.

External Monitor

Both drivers work with the external monitor. The main problem is that the graphics card drives the CRT at "1680x1050" which is a resolution that no sane CRT monitor supports. I had no luck driving the external monitor and the LCD panel at different resolutions, although I have not done extensive tests. If someone has a solution from this problem (pereferably with the ati driver), please contact me.

Ethernet adapter

There is a lot of history here. Initially drivers existed only here. Later, broadcom started giving its own drivers (source), here.

From version 2.4.22-pre10, the official linux kernel tree has a driver for the bcm 440x card. I don't know where the source that was embedded in the kernel came from.

For some time I have been using the driver from broadcom (version 2.0.5), without any problems. Now I switched to the driver included in the kernel and is seems to be working good as well.

For the auto module loading to work, I created the file /etc/modutils/eth0 with the following contents:

# build-in ethernet card from Broadcom
alias eth0 b44

Update 17-10-2003: I just discovered that the on board ethernet auto detects a cross or straight etnernet configuration. The b44 module has some problems with that. I was using a straight etnernet cable to connect two computers and this driver failed some times. The only solution I found was to remove the module and reload it.

Sound card

The chipset of the sound card works pretty well with ALSA. I tried all the versions from 0.9.4 that was out a few months ago, to 0.9.7c that was released recently. They all worked fine. I compiled the driver, the library and the utilities myself, although some debian packages do exist. I compiled with --with-cards=intel8x0 and added another file (/etc/modutils/alsa) to the modules directory with the following contents:

# ALSA portion
alias char-major-116 snd
alias snd-card-0 snd-intel8x0
# module options should go here
 
# OSS/Free portion
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
  
# card #1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss

The only problem I had so far is that all channels are muted on system startup. The alsa sound script that is installed at /etc/init.d/alsasound is supposed to restore the volume levels on startup to a preffered setting by calling the alsactl utility, but I had no luck with that yet.

Modem

No driver exitst in the main kernel tree. A driver for the modem can be found here (compile with --with-hal=i8xx). This driver works with the problems reported by Graeme (no dialtone can be heard, a "DELAYED" is returned at dial-out). The DELAYED problem is fixed by a later version found at this site.

For modules configuration, I added the file /etc/modutils/modem with the following contents:

# Built-in modem from PCTEL
# values from /proc/pci
alias char-major-62 ptserial
install ptserial insmod -f ptserial irq=11 iobase=0xb400 iobase1=0xb080 country_code=0

This it the kernel output when I load the pctel and ptserial modules:

AC97 modem device forced to iobase_0=0xb400, iobase_1=0xb080, irq=11
PCTel driver version 0.9.7-6 [5.05c-4.27.215 (09-14-2001)] (MR) (2002-01-31) with MANY_PORTS SHARE_IRQ SERIAL_PCI AUDIO_ROUTING[INTEL] enabled.
PCTel driver built on [Linux 2.4.22 i686 unknown "2.4.22 <132118>"] with gcc-2.95.4.
ttyS15 at 0xb400 (irq = 11) is a PCTel

A device has to be added to access the modem:

mknod c /dev/ttyS15 62 79

I noticed that when the modem is first accessed, the frequency of the sound card is messed up (the sound plays faster than normal). I tried loading the modules in a different order but the problem still exists. I have not looked into this, because I never use the modem (my network access is always through the ethernet card),

Mini-pci Wireless (15-11-2003)

I bought the Dell truemobile mini-pci wireless card after reading reports that is is supported on linux. Indeed the card was recognized with the first boot.

Surprisingly, the card was used by the PCMCIA subsystem. The orinoco_cs module was loaded, which I already had compiled as a module in my kernel. I had compiled the orinoco_pci driver to be prepared, but that wasn't needed at all. It looks like the mini-pci slot is bridged to the second PCMCIA slot. Well, that explains the detection of the second PCMCIA slot in linux...

Of course I have the same problem the others did with the antenna. The auxiliary antenna cable is too short to be connected to this card. A cable was included in the package, but there is no way to find where the other side ends inside the laptop. So I connected only the main antenna and so far I have no problem with reception.

Touchpad / Stick

Works out of the box. Both devices are mapped to the PS/2 port and work simultaneously. I have not found a way to activate and de-activate the controls and buttons, like the winXP driver does.

PCMCIA

Works out of the box with all kernels. I have not tried a cardbus card, only PCMCIA cards, but I have no reason to believe that there will be a problem. I have tried several cards: two wireless adapters (Lucent orinoco and D-Link DWL-650) and two ISDN controllers from AVM (Fritz and B1). They all work as expected.

Infared

The infared interface it binded by the BIOS to ttyS1 and works with the irtty driver. The debian packages required are idra-common and irda-tools. I edited the /etc/irda.conf file:

#irda.conf Version: 1.0
IRDADEV=/dev/ttyS1
#DONGLE= # specify dongle type
DISCOVERY=-s
ENABLE=yes # if you do not need to start irattach, set "no"

The irattach daemon (called by the irda script /etc/init.d/irda) now make the ttyS1 device available for applications. I have used the irda port successfully with my NOKIA phone (7110) and gnokii (or xgnokii).

The irtty module restricts the irda port to serial speeds (115200 bps), while the port can support higher speeds. I have found no use for the rest of the supported irda protocols (irLAN, irNET, irCOMM) and the serial speed is enough for communication with the mobile phone. The proper way to support the irda device is with an FIR driver (4Mbps), but I believe that such driver does not exist for this chipset.

Firewire

I use firewire with an external hard disk enclosure from CHRONOS. It works pretty well with the ohci1394 and sbp2 modules.

ohci1394: $Rev: 1010 $ Ben Collins <bcollins@debian.org>
ohci1394_0: OHCI-1394 1.1 (PCI): IRQ=[11]  MMIO=[faffd800-faffdfff]  Max Packet=[2048]
This script is needed for the hot-plugging to work properly. I run this script every time I remove the hard disk. Kernel 2.6 will support hot-plugging internally, so this will not be needed.

USB / USB2

USB works also out of the box with the default kernel modules (usb-uhci). I use an optical mouse from Logitech (usbmouse and hid modules) and have also tested a lot of devices with the usb-storage module. An external hard disk enclosure, a memory stick, some digital cameras and a camcorder.
Here is the kernel output for the usb modules:
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
usb-uhci.c: $Revision: 1.275 $ time 00:00:22 Oct 17 2003
usb-uhci.c: High bandwidth mode enabled
PCI: Setting latency timer of device 00:1d.0 to 64
usb-uhci.c: USB UHCI at I/O 0xbf80, IRQ 11
usb-uhci.c: Detected 2 ports
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
PCI: Setting latency timer of device 00:1d.1 to 64
usb-uhci.c: USB UHCI at I/O 0xbf40, IRQ 11
usb-uhci.c: Detected 2 ports
usb.c: new USB bus registered, assigned bus number 2
hub.c: USB hub found
hub.c: 2 ports detected
PCI: Setting latency timer of device 00:1d.2 to 64
usb-uhci.c: USB UHCI at I/O 0xbf20, IRQ 11
usb-uhci.c: Detected 2 ports
usb.c: new USB bus registered, assigned bus number 3
hub.c: USB hub found
hub.c: 2 ports detected
usb-uhci.c: v1.275:USB Universal Host Controller Interface driver

Using the ehci-hcd module:

ehci_hcd 00:1d.7: Intel Corp. 82801DB USB2
ehci_hcd 00:1d.7: irq 11, pci mem e2aa8c00
usb.c: new USB bus registered, assigned bus number 4
ehci_hcd 00:1d.7: enabled 64bit PCI DMA
PCI: 00:1d.7 PCI cache line size set incorrectly (0 bytes) by BIOS/FW.
PCI: 00:1d.7 PCI cache line size corrected to 128.
ehci_hcd 00:1d.7: USB 2.0 enabled, EHCI 1.00, driver 2003-Jun-19/2.4
the USB2 devices (the disk enclosure and the memory stick) where recognized correctly and operated at high speeds.

DVD/CDRW

Also works pretty well. At first, I used the IDE-CDROM driver, but later I switched to SCSI emulation because of the cdrecord software requirements. I compiled IDE-CDROM driver and the SCSI emulation (ide-scsi) drivers as modules and the SCSI-CDROM driver builtin. When the system boots my device is recognized as a SCSI CD-ROM drive:

hdc: HL-DT-STCD-RW/DVD-ROM GCC-4240N, ATAPI CD/DVD-ROM drive
SCSI subsystem driver Revision: 1.00
hdc: attached ide-scsi driver.
scsi0 : SCSI host adapter emulation for IDE ATAPI devices
  Vendor: HL-DT-ST  Model: RW/DVD GCC-4240N  Rev: D110
  Type:   CD-ROM                             ANSI SCSI revision: 02
Attached scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0
sr0: scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.12

Some Debian script automatically fixes the /dev/cdrom0 link to point now at /dev/scd0, which is the correct device.

I have written CDs at the highest speed available (24X) with no problems. Some disks refuse to be written at high speeds, but I guess this is due to the detection of the cdrecord software.

DVD region

My DVD/CDRW combo is region 1 because I bought it from the US. Recently a firmware has been released from the The firmware page that makes the region information reset on every reboot. So technically, the DVD is not region free, it still has only 5 changes, but on every boot the number always resets to 5. I downloaded the firmware and the related DOS utilities from this page.

Keyboard special keys

There are a few different aproaches to this issue. Initially I installed lineakd, but I gave up on that and used a more custom solution.

I created this Xmodmap file and saved it to my home directory as ".Xmodmap". By default gnome does not allow user-defined keymaps, so I had to add allow-user-modmap to the /etc/X11/Xsession.options file. After this, I was able to grab the keycodes with the sawfish configuration tool and assign functions to them. I configured the CD buttons (the ones on the right) to control xmms.

This is my sawfish configuration for the keys:

Key Code Action ("run-shell-command" directive)
CDROM eject F28 eject /cdrom
Next Track F29 ps -ef | grep xmms | grep -v grep && xmms -f
Previous Track F30 ps -ef | grep xmms | grep -v grep && xmms -r
Stop F31 ps -ef | grep xmms | grep -v grep && xmms -s
Play/Pause F32 ps -ef | grep xmms | grep -v grep && xmms -t
Mute F33 amixer set Master toggle; amixer set Headphone toggle
Volume Up F34 amixer set Master 2+; amixer set Headphone 2+
Volume Down F35 amixer set Master 2-; amixer set Headphone 2-

Linux kernel 2.6 stable (Update 21-2-2004)

Note: I removed the old stuff in this section because kernel updates are too frequent now and there isn't much point in keeping all the history.

I now run kernel 2.6.3. This is my .config file.

Transition from v2.4 to v2.6

The most obvioys requirement are the module utilities which are now called module-init-tools. They are backward compatible with modutils, so they can safely be used both with v2.4 and v2.6. The /proc filesystem has also changed in 2.6, so the old linux utilities are not reliable any more (top, ps, ...). Documentation included in the kernel suggests other updates as well. I found most of them from http://www.backports.org/.

So far I have updated module-init-tools, e2fs utilities, util-linux, lilo, procps and the nfs-kernel-server, nfs-common and reiserfsprogs from this repository.

What works without new configuration

What changed and needs new configuration

Some of the modules required for the USB mouse have been renamed. I have all of them now compiled in, so I removed all the related lines from /etc/modules. The mouse works nice just like it did in v2.4.

The same thing happened with the infared modules. I put everything inside the kernel also, and the infared port works again. I tested it with my mobile phone with gnokii, as well as pppd with GPRS.

The CD recorder access method has changed. The SCSI emulation is not required anymore. I downloaded and compiled CDR tools 2.01a21 which support IDE block driver access for recording CDs. My CD devide is now again /dev/hdc. I have burned a few CDs without problems.

CPU frequency scaling has been included in the kernel tree. I downloaded and installed the CPU frequency daemon, cpufreqd. This is my configuration file. This ruleset makes the CPU run at 1,2 MHz at most cases. When more power is needed and some conditions are met, the CPU switches to 2 GHz. This configuration has decreased the laptop temperature considerably!

Problems

The modem driver fails to compile with 2.6.0. I had some report about a way to make it work, but I have not tried it yet.

The radeon framebuffer device didn't work at 2.6.0. The display was messed up, as if it had a wrong modeline. I patched it myself and the problem was fixed. In 2.6.1 a patched was included that fixed this problem. In 2.6.3 a new radeonfb module has been included and is the default. It didn't work with my screen. I tried both with DDC/I2C and without it. On boot, the screen gets white and gradually dark. It looks like it enters an unsupported colour mode. Now I switched back to the old module that is still included in the kernel.

New stuff, not tested

System suspend is now supported both to RAM and disk. I tried it without reading any documentation but naturally, it didn't work. Soon, I will look into this with more detail.

Contact info

Email: amanous@softlab.ntua.gr

Valid HTML 4.01! Best view with VI!