The Thinkpad X22
Introduction
Here are some notes on getting Fedora Core 3 to run on a
Thinkpad X20 - including the modem.
System specifications
Model |
2662-9BU |
Processor |
Intel Pentium III/M at 800 MHz |
Hard Disk |
40GB Model IC25N040ATCS05-0 (hdparm gives transfer rates of about 25 MB/sec) |
Memory |
640 MB |
Video Card |
ATI Technologies Inc Radeon Mobility M6 LY (8 MB) |
Audio |
Intel Corp. 82801CA/CAM AC'97 Audio Controller |
Ethernet |
Intel Corp. 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller |
Modem |
Lucent Microelectronics WinModem 56k |
As with most IBM machines, there are different configurations available for the X22. Mainly, they
differ in the combo card provided in the laptop's miniPCI slot. Some models come with wireless (mine
didn't).
Linux hardware support
Here's a list of drivers for the Thinkpad X22's hardware.
Video |
XFree86 / XOrg radeon driver with DRI support |
Audio |
OSS support via i810_audio module. ALSA support via snd_intel8x0. |
Ethernet |
e100 module |
Modem |
ltmodem module / driver package |
In general, the hardware of the Thinkpad X22 is well-supported. I initially installed Fedora Core 3 on this
laptop, and all the
hardware listed above except the Lucent modem was automatically detected and configured.
Power management is a bit tricky on this machine so far. I've had no luck at all with ACPI, and
APM has been a mixed bag. Power management does not "just work". More notes on power
management are below.
Installation of Fedora Core 3
I wanted to have hibernation working, so I created a 750MB DOS partition
with the Windows 95 fdisk utility. I then formatted the partition with DOS, and copied the DOS system files to it in case
I needed a BIOS update sometime in the future and had to boot to DOS to extract the update utility.
Device |
Boot |
Start |
End |
Blocks |
Id |
System |
Mount Point |
/dev/hda1 |
* |
1 |
99 |
748408+ |
6 |
FAT16 |
Not mounted (for hibernation file) |
/dev/hda2 |
|
100 |
113 |
105840 |
83 |
Linux |
/boot |
/dev/hda3 |
|
114 |
252 |
1050840 |
82 |
Linux Swap |
swap |
/dev/hda4 |
|
253 |
5168 |
37164960 |
83 |
Linux |
/ |
TODO: Add information on creating a hibernation file with tphdisk.c
Most of the install was uneventful. After the install, I had to disable rhgb (Redhat's graphical
booting toy), otherwise X wouldn't work right. To do this, when the system gets to the GRUB
bootloader screen, press a key to stop the system from booting directly into Linux. Hit "a"
to edit the parameters for the kernel to boot. Delete "rhgb" from that line. This is a temporary
change. To make it permanent, you can edit /etc/grub.conf (a symlink to the real
GRUB configuration file) and remove "rhgb".
I installed your basic Personal Desktop system with development tools, then
added multimedia stuff and downloaded the current FC3 updates from FreshRPMs.
Fedora Core 3 quirks and projects
Here's a list of things I'm working on.
ACPI
With no changes to kernel parameters, ACPI suspend locks up on resume. Booting with acpi_sleep=s3_bios
lets the notebook suspend and resume correctly from a text screen. The machine will suspend and resume
from X as well, but the display will be garbled. The machine is still running, and can be shut down
by (blindly) switching to a terminal and running shutdown -h now . This is, of course, not
really useful for my daily work.
Maybe I'll try my luck with ACPI again when Fedora Core 4 comes out.
APM
Booting with acpi=off allows APM hibernate to work, provided a hibernation file exists.
APM suspend, though, still misbehaves - beeping a few times after shutting off the
display and (sometimes) locking up the machine.
To allow the system to go into APM suspend, I edited
/etc/sysconfig/apm-scripts/apmscript (even though the file says not to edit it :) ). I backed up the file first, then
added the lines in bold.
#!/bin/bash
#
# Red Hat APM suspend/resume script
...[SNIP]...
CLOCK="--localtime"
[ "$UTC" = "yes" -o "$UTC" = "true" -o "$UTC" = 1 ] && CLOCK="--utc"
case "$PROG" in
suspend|standby)
/sbin/service pcmcia stop
[ -f /etc/sysconfig/apm-scripts/apmcontinue-pre ] && /etc/sysconfig/apm-scripts/apmcontinue-pre "$@"
...[SNIP]...
resume)
/sbin/service pcmcia start
...[SNIP]...
There is probably a cleaner way to do this, but I can't make sense of the comments at the beginning of
the file telling me what script I am supposed to edit. The edits above will fix APM suspend, but are not
necessary for APM hibernate.
Sound is muted when waking the computer from hibernation or suspend. It can be awakened by muting
and then unmuting the Master and PCM channels. Doing either the master or PCM channels alone
doesn't seem to work. This simple script (if run after resuming) should fix it.
#!/bin/bash
#
# Fix: Unmute sound after suspend/hibernate
#
amixer set Master off
amixer set PCM off
amixer set PCM on
amixer set Master on
I put the script in /etc/syconfig/apm-scripts/apmcontinue . From my reading of the apmscript script, apmcontinue is run when suspending and resuming - but that doesn't matter for this purpose.
Occasionally, the sound will fail completely after a resume, and any
attempt to use sound will spit out a bunch of error messages. If this happens, dmesg
will show things like:
codec_write 0: semaphore is not ready for register 0x2
codec_write 0: semaphore is not ready for register 0x18
codec_write 0: semaphore is not ready for register 0x18
codec_write 0: semaphore is not ready for register 0x2
codec_write 0: semaphore is not ready for register 0x2
codec_write 0: semaphore is not ready for register 0x4
codec_write 0: semaphore is not ready for register 0x26
codec_write 0: semaphore is not ready for register 0x26
This can be fixed by removing and reinserting the snd_intel8x0
module. As root, enter:
modprobe -r snd_intel8x0; modprobe snd_intel8x0
When I am sufficiently motivated, I will probably script this. :)
APM suspend and hibernate seem reliable enough now that messing with ACPI is not a priority for me.
Update January 12, 2005: Fedora's 2.6.10 kernel update seems to have broken APM suspend / hibernate,
so Thinkpad X22 users who use APM may want to stay away from this update for now.
Modem
ltmodem drivers can be compiled without installing the full kernel sources.
To get the modem to work, I had to modify /etc/rc.d/rc.local . I added:
#
# Fix: ltmodem drivers don't load correctly.
#
ln -s /dev/ttLTM0 /dev/modem
modprobe lt_serial
This is a udev thing. I will figure out how to do this "correctly" later, I'm sure.
For some reason the lt_serial module
isn't automatically loading when trying to dial (instead, ppp fails with an error), so I simply load
the module at boot time. The symlink is there because ppp also complains when the modem device is /dev/ttLTM0 .
Thinkpad buttons
It's very easy to get the Thinkpad button to do something useful. In my case, I have
it open up an xterm. To use the Thinkpad button (and to get visual feedback on all the special
keys on the X22), you need two packages: tpb and xosd . You can
get both of these from Fedora Extras.
Once you download the packages and install them, edit /etc/rc.d/rc.local to
load the correct kernel module for you:
#
# Needed for:
# tpb (thinkpad button driver)
#
modprobe nvram
Now, you can run tpb. I use a command line that looks like this, and I have it start
when I log in:
tpb --osd=on --daemon --thinkpad="/usr/bin/X11/xterm"
Printing
Fedora Core 3 will autodetect and automatically set up a print queue for USB printers when they're plugged in.
This is quite nice. Unfortunately, when FC3 sees my Samsung ML-1430 laser printer, the queue added
defaults to a page size of A4. This makes all printouts the wrong size. Changing the page size with
system-config-printer works, but only until the printer is disconnected. When reconnected, FC3 sets up the
printer with A4 paper again. I've worked around the problem by manually creating a print queue for the Samsung printer, but
it'd be nice to fix the automatic system. Any ideas?
Oddly, when I manually created the print queue for the Samsung, the default paper size was set to US Letter, and not A4.
USB fun
I have a Dynex USB 2.0 card based on an NEC chipset. This card works in Fedora Core 1, Fedora Core 2, and earlier versions
of Red Hat, but does not work at high speed with Fedora Core 3. This is probably a kernel bug that needs
to be reported to bugzilla when I get a chance.
dmesg on card insert -
PCI: Enabling device 0000:03:00.2 (0000 -> 0002)
ehci_hcd 0000:03:00.2: EHCI Host Controller
ehci_hcd 0000:03:00.2: irq 11, pci mem e8964000
ehci_hcd 0000:03:00.2: new USB bus registered, assigned bus number 4
ehci_hcd 0000:03:00.2: USB 2.0 enabled, EHCI 1.00, driver 2004-May-10
hub 4-0:1.0: USB hub found
hub 4-0:1.0: 5 ports detected
ohci_hcd: 2004 Feb 02 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
PCI: Enabling device 0000:03:00.0 (0000 -> 0002)
ohci_hcd 0000:03:00.0: OHCI Host Controller
PCI: Setting latency timer of device 0000:03:00.0 to 64
ohci_hcd 0000:03:00.0: irq 11, pci mem e886a000
ohci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 5
hub 5-0:1.0: USB hub found
hub 5-0:1.0: 3 ports detected
PCI: Enabling device 0000:03:00.1 (0000 -> 0002)
ohci_hcd 0000:03:00.1: OHCI Host Controller
PCI: Setting latency timer of device 0000:03:00.1 to 64
ohci_hcd 0000:03:00.1: irq 11, pci mem e8a3a000
ohci_hcd 0000:03:00.1: new USB bus registered, assigned bus number 6
hub 6-0:1.0: USB hub found
hub 6-0:1.0: 2 ports detected
This appears to be normal output.
Now here's dmesg output after plugging in the burner.
ehci_hcd 0000:03:00.2: fatal error
ehci_hcd 0000:03:00.2: HC died; cleaning up
ohci_hcd 0000:03:00.1: wakeup
usb 6-1: new full speed USB device using address 2
usb 6-1: not running at top speed; connect to a high speed hub
SCSI subsystem initialized
Initializing USB Mass Storage driver...
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: IOMEGA Model: CDDVD482416E23-C Rev: 0037
Type: CD-ROM ANSI SCSI revision: 02
USB Mass Storage device found at 2
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
sr0: scsi3-mmc drive: 24x/48x writer cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.20
Attached scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0
At this point, I can "use" the drive, but only at low speed - meaning I
can't burn anything but CDRW discs (which the drive will burn at 4X). Trying to burn
CDRs generates coasters, since this drive's minimum speed for burning CDRs is 8x. This
drive and card combo works with Fedora Core 1 and Fedora core 2 and will burn at high speed.
USB Update - June 1, 2005
Fedora's update kernel 2.6.11-1.14_FC3 fixes the problem with the Dynex USB2 card, and devices
attached to the card will now run at high speed. This update kernel will probably also help you if
you have another card based on the same NEC chipset.
|