Linux on Laptops

Sponsored by LinuxCertified Inc.

Home | New | Models | Components | Discussion | Submit        


I recently bought a Dell Inspiron 600m. Ever since I gave up Slackware back in '98, I've been happy with RedHat, so you know I had to put Fedora Core 4 on my new laptop. The steps below outline what I had to do to set up my laptop so I could be (mostly) happy with it. I'm assuming you have at least a passing familiarity with Linux commands like rpm, chmod, mv, etc., and can use a text editor (shout out to all my vim homies). You can read through my notes below, or click on one of the links in the component status list if you are stuck trying to set up a specific component.

  1. Component Status
  2. Hardware Specs
  3. Installation
  4. Video
  5. Sound
  6. Wireless
  7. CPU Scaling
  8. Ethernet
  9. DVD RW
  10. Suspend/sleep
  11. IRDA
  12. Modem

Component Status
Component Comments
Video Works out of box
Sound Works after a small tweak
Wireless Works after downloading and installing firmware
CPU Scaling Works with some tweaking
Ethernet Works out of box
DVD RW Works out of box
Suspend/sleep Occasionally hangs on resume
IRDA Works with some tweaking
Modem Works with Linuxant drivers

Hardware Specs
The hardware specs for the Inspiron 600m are:

Installation
The first thing I did was fire up Windows on the 600m, go to RedHat's Fedora site, and download the FC4 CD images. The CD burning software that came with Windows was useless for burning images. While googling for alternatives, I ran across Alex Feinman's ISO Recorder tool for Windows, which worked great for putting the images on CD.

I occasionally use Windows for work or games, so I wanted to keep the NTFS partition around. As far as I know, GNU parted can't resize NTFS partitions, but there might be some other utility out there that does. If you have the Windows CD, you can take the long route and reformat your drive, create a smaller NTFS partition, and reinstall Windows. I took the easy route, and bought a copy of Partition Magic. I used the Partition Magic GUI to specify a size of 20 GB for the NTFS partition, left everything for Linux, then rebooted and waited for Partition Magic to resize partition.

Note: Dell did not ship Windows CDs with the 600m. Apparently there is supposed to be some Dell utility that allows you to create an Windows CD from the OS installed on the laptop, but that utility wasn't installed on the laptop either. I am still wrestling with Dell support to get the Windows CD.

The Inspiron wasn't set to boot from a CD, so I put the FC4 disc 1 in the CD drive, rebooted, and hit F2 during startup to enter BIOS setup. I changed the device boot order in the BIOS settings and booted from the CD. Then I set up partitions using Disk Druid, and told it to put the root partition on hda5.

The Fedora installation was pretty straightforward, except I didn't set enough space aside for the /usr partition. If you're going to install a large percentage of the distro packages, you should set aside at least 3.5 GB if not 4 GB for the /usr package. I only set 2 GB aside (remember when 2GB was too much memory?), and had to redo most of the installation process. Doh! Anyway, the installation eventually finished, and I moved on to configuring my system.

One of the first things I did after RedHat was installed was disable SE Linux. In my experience, you'll have a hard time configuring your new system unless you disable it. You may want to turn it on after you're done tweaking your system, but here's how to turn it off:

  1. Edit /etc/selinux/config
  2. Set SELINUX=Disabled
  3. reboot

Also, if you aren't using yum to do RPM downloads and installs yet, you're missing out. yum removes 90% of the frustration of downloading and trying to install an RPM, only to discover that the RPM depends on another RPM. Here's my /etc/yum.conf:

[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
retries=20
obsoletes=1
gpgcheck=1

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

[core]
name=Fedora Linux $releasever - $basearch - core
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/core
gpgcheck=0

[updates]
name=Fedora Linux $releasever - $basearch - updates
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/updates
gpgcheck=0

[freshrpms]
name=Fedora Linux $releasever - $basearch - freshrpms
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms
gpgcheck=0
KDE vs Gnome - use whichever you want. KDE is cool - in fact, I'm using the Quanta HTML editor to type this up - but I usually use Gnome. Because of that, all of the GUI commands I refer to below are found in GUIs on the Gnome desktop.

Wireless
FC4 already comes with the ipw2200 modules for the built-in Intel wireless card - you just need to install the proprietary firmware. Here's how to do it:
  1. Get the firmware from http://ipw2200.sourceforge.net/firmware.php
  2. Download the 2.2 version of the firmware
  3. Unzip the package, and copy all *.fw files into /lib/firmware
  4. Reload the wireless module with "rmmod ipw2200" and "modprobe ipw2200"
Now you can set up your wireless connection:
  1. Go to Applications-->System Tools-->Internet Configuration Wizard
  2. Select wireless connection
  3. Select wireless card Intel Corporation PRO/Wireless 2200BG
  4. Put in your wireless settings (don't forget 0x in front of your WEP key if it is a hex key)
  5. Click the green check to activate the card.

Video
The video card was detected during installation, but Anaconda came up with a resolution of 800x600 for the LCD screen. This is how I set up my LCD screen. Change as necessary for if your screen has a different resolution.
  1. Go to Desktop-->System Settings-->Display-->Hardware
  2. Select the Generic LCD Display, 1024x786 LCD. I tried using the Dell 1024x786 settings, but had problems with it, so I'm sticking with the generic LCD
  3. Go to Desktop-->Preferences-->Screen Resolution, and set the resolution to 1024x786

I also tried loading the proprietary ATI video drivers in the hopes I could get a faster framerate. The framerate was actually slower with the proprietary drivers! I'd recommend sticking with the DRI drivers.

Sound
The Intel on-board soundcard is supported out of the box, but the external speakers were shutoff in alsa-mixer. To turn them on:
  1. Go to Applications-->Sound & Video-->Volume Control-->Edit--Preferences.
  2. Scroll to the bottom, and click the checkbox for External Amplifier
  3. Click on the Switches tab, and click the External Amplifier checkbox.

Ethernet
It just works. There's not much more to say. You can use the Gnome Network Configuration to enable/disable eth0, or you can type ifup eth0 and ifdown eth0.

DVD RW
I installed the packages for the Totem movie player, but I wasn't happy with it. It didn't show the menu when the movie started, and the controls seemed buggy. I recommend installing xine instead. yum install xine-0.99.4-1.2.fc4.i386 should do what you want.

Recording to DVDs was no problem. Put a blank DVD in, and the Gnome CD/DVD Creator window will pop up. Drag files to the window, and then go to File -->Write to Disc, and the files will be burnt to disc.

Suspend/Sleep
I followed Jeppe Andersen's suspend instructions at http://www.hep.phy.cam.ac.uk/~andersen/fedora2latitude600.html. His instructions worked great for me with the ATI Radeon video card. If you have a different card, they may not work for you. I did make a few modifications to his script, the biggest being extra lines to unload and reload the Linuxant modem drivers during suspend and resume. If you don't use the Linuxant modem drivers, you can remove those lines.

First, download a tool called video_post from an attachment in the bug report at http://bugzilla.kernel.org/show_bug.cgi?id=3670. Firefox will call the file attachment.cgi, but it is actually a compressed tarball, so rename it to something like "video_post.tgz"

Create a directory for the video_post tool. I made one called /etc/acpi/utils. Then, extract video_post.tgz in /etc/acpi/utils. This will create a directory called "emu" with the source and an executable for the video post tool.

Next, create a file called /etc/acpi/events/sleep.conf with the following lines:

event=button/sleep *
action=/etc/acpi/actions/sleep.sh

Now create a file called /etc/acpi/actions/sleep.sh with these lines:

#!/bin/tcsh
# Script to drive the system to S3
# suspend-to-ram
#
# JRA Jan 2005

# Step 1: preparing sleep

if (-e /suspending) then
 wall 'The system is currently in the process of suspending, or stale lockfile "/suspending" exists. If the system does not suspend in a few seconds, remove lock file, and try to suspend again'
else
/bin/touch /suspending
/usr/bin/killall -s SIGUSR1 cpuspeed
/usr/bin/chvt 1 # necessary to make DRI work
/sbin/service anacron stop
# USB doesn't suspend without unloading first
/sbin/rmmod ehci_hcd
/sbin/rmmod uhci_hcd
#unload Linuxant modem drivers
/usr/sbin/hsfstop #if you use the linuxant modem driver
#save the system time
/sbin/hwclock --adjust
/sbin/rmmod wacom # only necessary of you have wacom stylus
/sbin/rmmod -as
/bin/sync
# Step 2: send sleep command via ACPI
echo mem > /sys/power/state

# Step 3: wake-up and reload
/etc/acpi/utils/emu/video_post
/sbin/hwclock --hctosys
#reload Linuxant modem drivers
/sbin/modprobe /dev/modem #if you use the linuxant modem driver
/sbin/modprobe ehci_hcd
/sbin/modprobe uhci_hcd
# initialise X
xinit /bin/false -- :1
/usr/bin/chvt 7
/sbin/service anacron start
/sbin/service cpuspeed restart
rm /suspending
endif
Don't forget to make that script executable, by typing chmod u+x /etc/acpi/actions/sleep.sh. Note that video_post is called in step #3 of the script, so be sure to change the path in the script if you put video_post in a different place.

Also, note that this script creates a lock file called "/suspending" when it starts to suspend the laptop. If you fail to successfully recover from suspend mode, you'll have to remove this lock file by hand. Otherwise, the next time you try to suspend, the script will exit without doing anything.

Then restart the acpi service with "/etc/init.d/acpid restart". Now you just hit Fn+Esc to suspend the 600m. My 600m hangs on resume about every 10th time, and for some reason the maximum scaling frequency is stuck on 600Mhz if resume doesn't work properly. See CPU Scaling for info on how to change the max scaling frequency.

CPU Scaling
When I got my 600m, the CPU speed never went above 600 MHz, as shown by cat /proc/cpuinfo, or Gnome's CPU Frequency Scaling applet. I couldn't set the CPU frequency manually, and it wouldn't go up automatically when I was doing a long build. I was beginning to think that the 600m in "Inspiron 600m" stood for 600 MHz.

I was getting a "No speed steps could be determined" error every time I tried to run /etc/init.d/cpuspeed. After trying many things, I noticed that both scaling_max_freq and scaling_min_freq in /sys/devices/system/cpu/cpu0/cpufreq were set to 600000 (600 MHz).

I did: echo 2100000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq and then /etc/init.d/cpuspeed restart

After that the CPU would throttle up to meet demand, and I could also change the speed manually with the Gnome CPU frequency applet.
If you're trying to set various cpuspeed options, I recommend running the commands in /etc/init.d/cpuspeed manually, instead of using the cpuspeed script, which hides many possible error messages when the script has problems. Once you have the options you need, you can go back to using the cpuspeed script.

IRDA
I am able to sync my Palm Tungsten T3 through the IR port on my laptop. Here's how to do it: The ircomm devices that the irda init script creates are all owned by root. You can either always run pilot-xfer with sudo or as root, or, like I did, you can add a line to the start section of /etc/init.d/irda to make the ircomm0 device world-readable and world-writabe. Here's what mine looks like:
...
#start section of /etc/init.d/irda 
start() {
   # Attach irda device
   echo -n $"Starting $prog: "
   /sbin/modprobe ircomm-tty 2>/dev/null
   /sbin/modprobe irtty-sir 2>/dev/null
   /sbin/modprobe irnet 2>/dev/null
   daemon /usr/sbin/irattach ${DEVICE} ${ARGS}
   touch /var/lock/subsys/irda
   #make the ircomm0 port usable by everyone
   chmod a+rw /dev/ircomm0
   echo
}
...

Modem
lspci -v indicates the modem is a Conexant modem:
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01) (prog-if 00 [Generic])
        Subsystem: Conexant: Unknown device 5422
        Flags: bus master, medium devsel, latency 0, IRQ 5
        I/O ports at b400 [size=256]
        I/O ports at b080 [size=128]
        Capabilities: <available only to root>
First, you need to figure out which driver your modem needs. Go to http://www.linuxant.com/drivers/modemident.php, and download the scanModem script. Unzip it and run the script. You will see output like this:
Providing detail for device at  00:1f.6
  with vendor-ID:device-ID
            ----:----
Class 0703: 8086:24c6   Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01) (prog-if 00 [Generic])
  SubSystem 14f1:5422  Conexant: Unknown device 5422
        Flags: bus master, medium devsel, latency 0, IRQ 5

                  -----PCI_IDs-------                    --CompilerVer-
    Feature List:  Primary  Subsystem Distr  KernelVer   kernel default  CPU
 ./scanModem test 8086:24c6 14f1:5422 redhat 2.6.11-1.1369_FC4  4.0.0 4.0.0    i686
              From records, 14f1:5422 has soft modem codec CXT
 The Subsystem PCI id identifies a ConeXanT CXTnm codec.
 Support is ONLY available the hsfmodem software from http://www.linuxant.com/drivers

Note that the vendor/device id for the modem is 8086:24c6, and support is available with the hsfmodem drivers. The HSF driver README on Linuxant's web site indicates that the 8086:24c6 is supported.

I downloaded hsfmodem-7.18.00.07full_k2.6.14_1.1644_FC4-1fdr.i686.rpm.zip, unzipped it, and installed it with rpm. You may want to check the Linuxant site instead of using this link to see if there is a newer version of their driver.

The free version of the Linuxant driver is limited to 14.4Kbps. If you need more speed, you'll have to drop some cash for a license.


With that, I'm pretty happy with my new laptop. I'm sure I'll continue tweaking it for the next couple of months, but for now, I've got something that works great for work and fun.

Larry Reeder, Sun Oct 23 22:53:03 MDT 2005, lnreeder AT gmail DOT com.

Linux On Laptops