Shiny new IBM T43 laptop and Fedora core 4.
I have a cool new IBM T43 laptop. It's, thin, light, fast and runs for 3.5 hours on batteries. My sys-admin guys configured it to have a dual-boot win XP and "blank" where they left it to me install "blank".
I decided to install Fedore Core 4 because I had found it to be a btter distro for development although it was a close run with ubuntu. (I also love Marc's fantastic AbiWord support for Fedore Core.)
OK after some mucking around I finally have it configured to be pretty much perfect.
Firstly, most things "Just worked" out of the box on Fedora Core 4.
What didn't work were:
1. All the cool patent/proprietry protected stuff. (mp3, java, flash, videos)
2. Wireless (needs the ipw2200 firmware for the Intel centrino)
3. ATI proprietry drivers.
4. ntfs filesystem support.
5. Suspend to RAM.
6. External Display
Firstly after installing FC4 from a DVD drive do yum update
Come back next day...
Next install the goodies Redhat leaves out of Fedora because of patent rubbish.
See:
http://www.fedorafaq.org/#installsoftware
Follow the directions to get mp3's, mplayer, java and flash working nicely.
To get wireless working goto:
http://ipw2200.sourceforge.net/firmware.php
and install version 2.2 in /lib/firware
To get the ati and ntfs working follow the directions given in http://www.fedorafaq.org
Which brings me to how to get suspend-to-ram going. This was a real pain. The T43 has this cool SATA disk-drive which I believe is means of employing scsi disks in a laptop. This works really nicely as a development system. Recompiling AbiWord is very fast on this nice little laptop.
Unfortunately Linux does not yet support power-management for SATA systems. There is a kernel patch to support it. You can find pointers to it here.
http://www.thinkwiki.org/wiki/Problems_with_SATA_and_Linux
To make suspend-to-RAM work you have to apply a patch to the kernel. I followed the instructions on how to do this woth fedora here:
http://forums.fedoraforum.org/showthread.php?t=29434"
And used the patch for 2.6.13-rc5. This worked with a few offsets.
I then copied the ntfs and the ati kernel module to the new /lib/modules/kernel directory and ran depmod.
Next my grub.conf needed an extra kernel line to enable suspend-to-RAM
kernel /vmlinuz-2.6.13-martin1 ro root=LABEL=/ rhgb quiet acpi_sleep=s3_bios
OK finally put together the following sleep.sh
-----------------------------------------------------------------------------------
#!/bin/sh
# if launched through a lid event and lid is open, do nothing
echo "$1" | grep "button/lid" && grep -q open
/proc/acpi/button/lid/LID/state && exit 0
# remove USB 1.1 driver
rmmod uhci_hcd
# sync filesystem and clock
sync
/sbin/hwclock --systohc
# switch to console
FGCONSOLE=`fgconsole`
chvt 6
/usr/sbin/radeontool light off
/usr/bin/dbus-send --system
--dest=org.freedesktop.NetworkManager
--type=method_call
/org/freedesktop/NetworkManager
org.freedesktop.NetworkManager.sleep
/sbin/hwclock --systohc
# go to sleep
echo -n 3 > /proc/acpi/sleep
# readjust the clock (it might be off a bit after suspend)
/sbin/hwclock --adjust
/sbin/hwclock --hctosys
# reload USB 1.1 driver
modprobe uhci_hcd
# turn on the backlight and switch back to X
radeontool light on
chvt $FGCONSOLE
/usr/bin/dbus-send --system
--dest=org.freedesktop.NetworkManager
--type=method_call
/org/freedesktop/NetworkManager
org.freedesktop.NetworkManager.wake
-------------------------------------------------------------------
and call it in /etc/acpi/events/lid.conf and
/etc/acpi/events/sleep.conf
-------------------------------------
event=button/lid
action=/etc/acpi/actions/sleep.sh
------------------------------------
and
---------------------------------------
event=button/sleep
action=/etc/acpi/actions/sleep.sh
-------------------------------------
The final thing was to make sure the external display worked. For this my xorg.conf is as is shown below:
Notice that the driver used is the "radeon" rather than the proprietry "fglrx". This was because I couldn't get the "fglrx" driver to recover after a suspend to RAM. There are rumours on the net about how to do this but I haven't had the time or patience to track them down yet.
So all in all it has taken a LOT of tweaking to get this laptop to work up to the level of winXP in Fedora Core.
I hope all this info is useful to the Fedora Core community. I no longer have the time to keep up with the email on the FC-devel or FC-user mailing lists. I hope that the FC community is interested in making Fedora "Just work" on laptops. It's clear that we still have a long way to go.
Comments Here
------------------------------------------------------------------------
# Xorg configuration created by system-config-display
Section "ServerLayout"
Identifier "Multihead layout"
Screen 0 "Screen0" LeftOf "Screen1"
Screen 1 "Screen1" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Synaptics" "AlwaysCore"
Option "Xinerama" "off"
Option "Clone" "on"
EndSection
Section "Files"
# RgbPath is the location of the RGB database. Note, this is the name of the
# file minus the extension (like ".txt" or ".db"). There is normally
# no need to change the default.
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Red Hat 6.0 and later now use a font server independent of
# the X server to render fonts.
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "unix/:7100"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
Load "fbdevhw"
Load "glx"
Load "record"
Load "freetype"
Load "type1"
Load "synaptics"
# Load "dri"
EndSection
Section "InputDevice"
# Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
# Option "Xleds" "1 2 3"
# To disable the XKEYBOARD extension, uncomment XkbDisable.
# Option "XkbDisable"
# To customise the XKB settings to suit your keyboard, modify the
# lines below (which are the defaults). For example, for a non-U.S.
# keyboard, you will probably want to use:
# Option "XkbModel" "pc102"
# If you have a US Microsoft Natural keyboard, you can use:
# Option "XkbModel" "microsoft"
#
# Then to change the language, change the Layout setting.
# For example, a german layout can be obtained with:
# Option "XkbLayout" "de"
# or:
# Option "XkbLayout" "de"
# Option "XkbVariant" "nodeadkeys"
#
# If you'd like to switch the positions of your capslock and
# control keys, use:
# Option "XkbOptions" "ctrl:swapcaps"
# Or if you just want both to be control, use:
# Option "XkbOptions" "ctrl:nocaps"
#
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "yes"
EndSection
Section "InputDevice"
Identifier "Synaptics"
Driver "synaptics"
Option "Device" "/dev/input/mice"
Option "Protocol" "auto-dev"
Option "Emulate3Buttons" "yes"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "IBM 9514-B TFT Panel"
HorizSync 48.0 - 65.0
VertRefresh 60.0 - 75.0
Option "dpms"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Monitor Vendor"
ModelName "External- generic"
HorizSync 31.5 - 57.0
VertRefresh 50.0 - 70.0
Option "dpms"
EndSection
Section "Device"
Identifier "Videocard0"
Driver "radeon"
VendorName "Videocard vendor"
BoardName "ATI Radeon Mobility M300"
# Option "VideoOverlay" "on"
Option "DynamicClocks" "on"
Screen 0
EndSection
Section "Device"
Identifier "Videocard1"
Driver "radeon"
VendorName "Videocard Vendor"
BoardName "ATI Radeon Mobility M300"
# Option "VideoOverlay" "on"
Option "DynamicClocks" "on"
Screen 1
EndSection
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 16
Modes "1280x1024" "1024x768" "800x600"
"640x480"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1400x1050" "1280x960" "1280x800" "1280x1024" "1152x864" "1024x768" "800x600"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Videocard1"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection
Section "DRI"
Group 0
Mode 0666
EndSection
------------------------------------------------