Linux on a Dell Latitude x200


Started July 22, 2002
Last updated December 4, 2002








Send comments and suggestions to "maccabe at cs.unm.edu"

The backlight on my Thinkpad T21 died over the July 4th holiday. When I returned on Monday the 8th, I looked to find a replacement for a trip I was taking on the 9th. The lab staff was building a Dell Latitude x200 for the chairman, but they were about to return it because they couldn't get the DVD CD/RW working under Linux (we did manage to get it working). I needed a laptop for a trip and didn't really care about having the disk work. I grabbed the x200 and have been having fun ever since.

The intent of this page is to document how I got various things working under Linux on a Dell Latitude x200. While my machine is dual booted, I almost never run MS Windows, so making things work under Linux is pretty critical to me.

I assume that you are fairly familiar with Linux and are comfortable doing things like re-building kernels. As such, lots of those kinds of details are not documented here. If you need something that isn't documented, feel free to drop me a note and I'll try to answer your question.

I have been running Linux on laptops since 1994 when I convinced my wife that it would be OK to buy that Sharp notebook. As I recall, the machine had 8MB of RAM, a 1GB drive, a floppy drive, and a VGA display (it was important to shut down X when compiling the kernel). Slackware required 52 floppies. Since that machine, I have had two Gateway laptops (an original Solo and a 2300) and the Thinkpad T21.

Related sites:

There aren't very many pages on this machine yet. The Gateway 200 is virtually the same machine, but it is almost impossible to define a search for the Gateway 200 (too bad they didn't use something other than "200"). It seems pretty clear that both the Latitude X200 and the Gateway 200 are really Samsung Q10's with minor modifications. A saleskid at the local Gateway store tried to convince me that they were both made by Sony. The machines certainly share many features with the Viaos (battery in the back), but there are significant differences (the video chipset, the ports are on the left instead of the right, the display border is not the same shape as any of the Sonys, etc).

In any event, here are the pages that I have found:

Note, there may be many more pages out there. Google seems to take a couple of weeks to "find" new pages and the Linux on Laptops page hasn't been updated since March 26th!

Initial impressions

This is a fantastic laptop. It is amazingly light (less than 3 lbs), but feels very sturdy. The display (1024x768) is small (compared to the 1400x1050 on the Thinkpad), but very bright and clear. The battery life with the default battery is only 2 hours, far too short for any significant travel. I have ordered the larger battery.

I live on my laptop. I do not have a desktop in my office and rarely use my desktop at home. Given this, I had assumed that I really needed a "desktop replacement" class machine. The x200 is changing my perspective.

Overall, this is a keeper. IBM has fixed my Thinkpad (we sent the machine in on a Friday and it came back on Monday!), so I'm facing a tough decision. When I use the Thinkpad, it doesn't seem too heavy, but when I go back to the Dell, I am amazed at how light it is..... At this point, I use the X200 when I'm in travel mode and the T21 when I'm in mostly in town.

System configuration and price

The base machine costs about $1,680 and comes with a 12.1" XGA display, 128MB RAM, a 30 GB Ultra ATA disk, an internal 56K winmodem, an internal 3Com 10/100 Ethernet card, an 800 MHz Mobile PIII processor, an external (firewire) CD ROM, and a single (Type 1 or 2) PCMCIA slot.

Adding 512MB RAM (total 640MB), a bigger battery, an extra power brick, internal wireless, and upgrading the external drive to a DVD CD/RW combo, brings the price to about $2,650.

There is no IrDA! A bit annoying because I was using IR to sync my Sony Clié. I managed to get USB based synchronization working. While it means that I have to use the cradle to sync, it is faster and more reliable.

Software environment

I am running Debian GNU Linux (sid, AKA unstable), Linux kernel 2.4.20 and XFree86 4.2.

Summary

Everything pretty much works.

Fully Working

Mostly Working

Working OK

Problems

Initial Installation

When I received this machine, the support staff had already partitioned the disk and installed Linux, so I didn't have the joy of doing the initial install.

The system should boot from the CD without any trouble (the BIOS understands the firewire drive). However, once it is booted, the Linux kernel will not recognize the drive, unless your distribution uses a fairly recent kernel and you can install the appropriate modules (see the discussion related to the external disk below). This would be a show stopper, except that the kernel will recognize the built-in network controller, so you should be able to do a network install.

From Christian Perrier:

Genuine Debian 3.0 installation CD's kinda work on the X200, but you cannot
install from the CD's as the generic kernel (kernel-image-2.2.20-idepci)
does not have proper support for the DVD/CDRW. Anyway, network installation
works like a charm, either by putting the CD's elsewhere on the network and
accessing them via NFS, or by directly download the packages from Debian
sites.

The bf24 kernel (also on Debian CD1) does not have proper support for the
integrated Ethernet card, so it is not very useful there (I did not checked
wether modules are included).

I did not check with other kernels (those on CD2)

Anyway, I always use my custom kernels so this is not really a big problem.
I already have compiled a custom kernel package which is suppose to include
the support for Firewire.

Another idea would be compiling a special kernel with the appropriate
support inside, then the modules for Firewire and put all these on Debian
"rescue" and "drivers" diskettes....

More Details

Configuration files

Here's my current XF86Config-4 file and here's my current kernel .config file.

The Display

The video chip is an Intel 830M. This is a fairly new chip, but it is well supported by Intel, they even provide Linux support.

You must run Xfree86 4.2 to use this chipset. While the standard Debian distribution does not support this release of Xfree86, testing debs are available from the maintainer for sid (unstable).

From Christian Perrier:

The appropriate APT entry
for sources.list is:

# EXPERIMENTAL XFree 4.2 packages for Debian unstable
# DO NOT USE Debian BTS for reporting bugs
deb http://people.debian.org/~branden/ sid/i386/

Kernel Configuration

In the Character devices section, enable:

XFree86 Configuration

Here are the Module and Device sections from /etc/X11/XF83Config-4:

Section "Module"
        Load    "GLcore"
        Load    "bitmap"
        Load    "dbe"
        Load    "ddc"
        Load    "dri"
        Load    "extmod"
        Load    "freetype"
        Load    "glx"
        Load    "int10"
        Load    "pex5"
        Load    "record"
        Load    "speedo"
        Load    "type1"
        Load    "vbe"
        Load    "xie"
EndSection

Section "Device"
        Identifier      "Generic Video Card"
        Driver          "i810"
        VideoRam        8192
EndSection

What various parts of Linux See

From lspci -v:

00:02.1 Display controller: Intel Corp. 82830 CGC [Chipset Graphics Controller]
        Subsystem: Dell Computer Corporation: Unknown device 0122
        Flags: bus master, fast devsel, latency 0
        Memory at f0000000 (32-bit, prefetchable) [size=128M]
        Memory at e0080000 (32-bit, non-prefetchable) [size=512K]
        Capabilities: [d0] Power Management version 1

From the boot messages:

Jul 23 09:14:17 munchkin kernel: Linux agpgart interface v0.99 (c) Jeff Hartmann
Jul 23 09:14:17 munchkin kernel: agpgart: Maximum main memory to use for agp memory: 556M
Jul 23 09:14:17 munchkin kernel: agpgart: Detected an Intel 830M Chipset.
Jul 23 09:14:17 munchkin kernel: agpgart: detected 8060K stolen memory.
Jul 23 09:14:17 munchkin kernel: agpgart: AGP aperture is 128M @ 0xe8000000
Jul 23 09:14:17 munchkin kernel: [drm] AGP 0.99 on Intel i810 @ 0xe8000000 128MB
Jul 23 09:14:17 munchkin kernel: [drm] Initialized i810 1.1.0 20010616 on minor 0

From /var/log/XFree86.0.log:

(--) PCI:*(0:2:0) Intel i830M rev 4, Mem @ 0xe8000000/27, 0xe0000000/19
(--) PCI: (0:2:1) Intel i830M rev 0, Mem @ 0xf0000000/27, 0xe0080000/19

lots of stuff omitted

(II) LoadModule: "i810"
(II) Loading /usr/X11R6/lib/modules/drivers/i810_drv.o
(II) Module i810: vendor="The XFree86 Project"
        compiled for 4.2.0, module version = 1.1.0
        Module class: XFree86 Video Driver
        ABI class: XFree86 Video Driver, version 0.5
(II) LoadModule: "mouse"
(II) Loading /usr/X11R6/lib/modules/input/mouse_drv.o
(II) Module mouse: vendor="The XFree86 Project"
        compiled for 4.2.0, module version = 1.0.0
        Module class: XFree86 XInput Driver
        ABI class: XFree86 XInput driver, version 0.3
(II) I810: Driver for Intel i810 chipset: i810, i810-dc100, i810e, i815,
        i830M
(II) Primary Device is: PCI 00:02:0
(--) Assigning device section with no busID to primary device
(WW) I810: No matching Device section for instance (BusID PCI:0:2:1) found
(--) Chipset i830M found

lots of stuff omitted

(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Reloading /usr/X11R6/lib/modules/linux/libint10.a
(**) I810(0): Depth 16, (--) framebuffer bpp 16
(==) I810(0): RGB weight 565
(==) I810(0): Default visual is TrueColor
(WW) I810(0): Bad V_BIOS checksum
(II) I810(0): Primary V_BIOS segment is: 0xc000
(--) I810(0): Chipset: "i830"
(--) I810(0): Linear framebuffer at 0xE8000000
(--) I810(0): IO registers at addr 0xE0000000
(II) I810(0): detected 8192K stolen memory.
(II) I810(0): I810CheckAvailableMemory: 569340k available
(==) I810(0): Will alloc AGP framebuffer: 16384 kByte
(==) I810(0): Using gamma correction (1.0, 1.0, 1.0)
(II) I810(0): Currently active displays on Pipe A:
(II) I810(0):     LFP (Local Flat Panel) child device
(II) Loading sub module "vbe"
(II) LoadModule: "vbe"
(II) Reloading /usr/X11R6/lib/modules/libvbe.a
(II) VESA BIOS detected
(II) VESA VBE Version 3.0
(II) VESA VBE Total Mem: 8000 kB
(II) VESA VBE OEM: Almador Graphics Chip Accelerated VGA BIOS
(II) VESA VBE OEM Software Rev: 1.0
(II) VESA VBE OEM Vendor: Intel Corporation
(II) VESA VBE OEM Product: Almador Graphics Controller
(II) VESA VBE OEM Product Rev: Hardware Version 0.0
(II) Loading sub module "ddc"
(II) LoadModule: "ddc"
(II) Reloading /usr/X11R6/lib/modules/libddc.a
(II) I810(0): VESA VBE DDC supported
(II) I810(0): VESA VBE DDC Level none
(II) I810(0): VESA VBE DDC transfer in appr. 0 sec.
(II) I810(0): VESA VBE DDC read failed
(==) I810(0): DPI set to (75, 75)
(--) I810(0): Virtual size is 1024x768 (pitch 1024)
(**) I810(0): Default mode "1024x768"
(**) I810(0): Default mode "800x600"
(**) I810(0): Default mode "640x480"

lots of stuff omitted

(==) I810(0): Default visual is TrueColor

lots of stuff omitted

(II) I810(0): [drm] drmOpen failed
(EE) I810(0): [dri] DRIScreenInit failed. Disabling DRI.
(WW) System lacks support for changing MTRRs
(II) I810(0): vgaHWGetIOBase: hwp->IOBase is 0x03d0, hwp->PIOOffset is 0x0000
(II) I810(0): Adding 768 scanlines for pixmap caching
(II) I810(0): Allocated Scratch Memory
(II) I810(0): Using XFree86 Acceleration Architecture (XAA)
        Screen to screen bit blits
        Solid filled rectangles
        8x8 mono pattern filled rectangles
        Indirect CPU to Screen color expansion
        Solid Horizontal and Vertical Lines
        Offscreen Pixmaps
        Setting up tile and stipple cache:
                24 128x128 slots
                6 256x256 slots
(==) I810(0): Backing store disabled
(==) I810(0): Silken mouse enabled
(II) I810(0): Initializing HW Cursor

The Hard Drive

Kernel Configuration

In ATA/IDE/MFM/RLL support, in IDE, ATA, and ATAPI Block Devices, enable:

What various parts of Linux See

From lspci -v:

00:1f.1 IDE interface: Intel Corp. 82801CAM IDE U100 (rev 02) (prog-if 8a [Master SecP PriP])
        Subsystem: Dell Computer Corporation: Unknown device 0122
        Flags: bus master, medium devsel, latency 0, IRQ 11
        I/O ports at  [size=8]
        I/O ports at  [size=4]
        I/O ports at  [size=8]
        I/O ports at  [size=4]
        I/O ports at 9000 [size=16]
        Memory at 28000000 (32-bit, non-prefetchable) [disabled] [size=1K]

From the boot messages:

Jul 23 09:14:17 munchkin kernel: Uniform Multi-Platform E-IDE driver Revision: 6.31
Jul 23 09:14:17 munchkin kernel: ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
Jul 23 09:14:17 munchkin kernel: ICH3M: IDE controller on PCI bus 00 dev f9
Jul 23 09:14:17 munchkin kernel: ICH3M: (ide_setup_pci_device:) Could not enable device.
Jul 23 09:14:17 munchkin kernel: hda: IC25N030ATCS04-0, ATA DISK drive
Jul 23 09:14:17 munchkin kernel: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Jul 23 09:14:17 munchkin kernel: hda: 58605120 sectors (30006 MB) w/1768KiB Cache, CHS=3648/255/63
Jul 23 09:14:17 munchkin kernel: Partition check:
Jul 23 09:14:17 munchkin kernel:  hda: hda1 hda2 hda3 hda4

From hdparm:

/dev/hda:

 Model=IC25N030ATCS04-0, FwRev=CA3OA72A, SerialNo=CSH305DAGGTYGB
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=DualPortCache, BuffSize=1768kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=58605120
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes: pio0 pio1 pio2 pio3 pio4 
 DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5 
 AdvancedPM=yes: mode=0x80 (128) WriteCache=enabled
 Drive Supports : ATA/ATAPI-5 T13 1321D revision 3 : ATA-2 ATA-3 ATA-4 ATA-5 

Internal Modem

This machines uses a pctel modem. Linux drivers are available from The unofficial PCTEL linux modem site. The current version, 0.9.3, requires a slight modification to work with the x200.

Here are the steps to building and installing the modules:

  1. Download and untar the source tree.

  2. Configure the code: "./configure --with-hal=i810"

  3. Now, you need to modify the file src/ptserial/ptserial.c. In particular, change the #define on line 296 to read:

    #define PCI_DEVICE_ID_I810_MR_LAPTOP    0x2486   /*  laptop  */

    This was taken from Liberating the Dell Latitude C400. This makes the modem work, but I suspect that something more is needed as I do not hear any of the standard modem sounds when the modem is dialing or connecting.

  4. Now, do the "make install" thing to install the modules.

  5. If you want the modules automatically installed on boot (the pctel.o module is pretty large, so you may want to install it as needed), add pctel and ptserial to /etc/modules.

  6. Remember to enable PPP in the Network Device Support part of the kernel configuration.

When it is installed, the modem will be attached to /dev/ttyS15, i.e., "ln -s /dev/ttyS15 /dev/modem"

What various parts of Linux See

From lspci -v:

00:1f.6 Modem: Intel Corp. 82801CA/CAM AC'97 Modem (rev 02) (prog-if 00 [Generic])
        Subsystem: PCTel Inc: Unknown device 4c21
        Flags: bus master, medium devsel, latency 0, IRQ 11
        I/O ports at 8800 [size=256]
        I/O ports at 8c00 [size=128]

From the boot messages:

Jul 23 10:13:18 munchkin kernel: ac97_codec: AC97 Modem codec, id: 0x5349:0x4c21 (Unknown)

After the pctel module is installed

Jul 23 10:13:18 munchkin kernel: AC97 modem device found: devnum = 8000FE00, devid = 8086/2486
Jul 23 10:13:18 munchkin kernel: iobase_0=0x8800, iobase_1=0x8c00,irq=11
Jul 23 10:13:18 munchkin kernel: PCTel driver version 0.9.3 [5.05c-4.27.215 (09-14-2001)] (MR) (2002-01-31) with MANY_PORTS SHARE_IRQ SERIAL_PCI AUDIO_ROUTING[INTEL] enabled.
Jul 23 10:13:18 munchkin kernel: PCTel driver built on [Linux 2.4.19-rc3 i686 unknown "2.4.19-rc3 <132115>"] with gcc-2.95.4.
Jul 23 10:13:18 munchkin kernel: ttyS15 at 0x8800 (irq = 11) is a PCTel

Internal Ethernet

In addition to the modem, this machines comes with a built-in 3Com Ethernet controller. This works fine.

Kernel Configuration

In the Network Device Support, in the Ethernet(10 or 100Mbit) menu, enable:

What various parts of Linux See

From lspci -v:

02:05.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78)
        Subsystem: Dell Computer Corporation: Unknown device 0122
        Flags: bus master, medium devsel, latency 80, IRQ 11
        I/O ports at a000 [size=128]
        Memory at e0200800 (32-bit, non-prefetchable) [size=128]
        Expansion ROM at  [disabled] [size=128K]
        Capabilities: [dc] Power Management version 2

From the boot messages:

Jul 22 16:44:40 munchkin kernel: 3c59x: Donald Becker and others. www.scyld.com/network/vortex.html
Jul 22 16:44:40 munchkin kernel: 02:05.0: 3Com PCI 3c905C Tornado at 0xa000. Vers LK1.1.16

PCMCIA

PCMCIA works fine.

Kernel Configuration

In the General Setup menu, in the PCMCIA/Cardbus Support menu, enable:

What various parts of Linux See

From lspci -v:

02:03.0 CardBus bridge: Ricoh Co Ltd RL5c475 (rev b8)
        Subsystem: Dell Computer Corporation: Unknown device 0122
        Flags: bus master, medium devsel, latency 168, IRQ 10
        Memory at e0201000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=02, secondary=03, subordinate=03, sec-latency=176
        I/O window 0: 0000a400-0000a4ff
        I/O window 1: 0000a800-0000a8ff
        16-bit legacy interface ports at 0001

From the boot messages:

Jul 23 10:13:18 munchkin kernel: Linux Kernel Card Services 3.1.22
Jul 23 10:13:18 munchkin kernel:   options:  [pci] [cardbus] [pm]

External (Firewire) Disk

As noted earlier, making the external DVD CD/RW work under Linux is not a high priority for me, but I did manage to get it working to an extent. I suspect that the big problem is in the hotplug support -- this is a new machine and it looks like the Linux hot plug stuff doesn't quite know about this particular drive yet.

I have not tried playing a DVD. I can read and write CDs. I have tried to play an audio CD, the disk spins and the cdplayer thinks it is making progress. I suspect that the problem is with the sound card, not the disk. (See the discussion below.)

The trick to making things work is to attach the drive before inserting (modprobe) the appropriate modules. Once the disk has been connected, you should insert the following modules:

If you compiled them as modules, you will also need to insert:

Once everything is in place, the device will be /dev/scd0, i.e., "ln -s /dev/scd0 /dev/cdrom"

Kernel Configuration

Once it is recognized, this device will be a SCSI disk, in the SCSI support menu, enable:

The disk is accessed through the Firewire port. In the IEEE1394 (Firewire) support (EXPERIMENTAL) menu, enable:

What various parts of Linux See

From lspci -v:

02:03.1 FireWire (IEEE 1394): Ricoh Co Ltd: Unknown device 0551 (prog-if 10 [OHCI])
        Subsystem: Dell Computer Corporation: Unknown device 0122
        Flags: bus master, medium devsel, latency 64, IRQ 11
        Memory at e0200000 (32-bit, non-prefetchable) [size=2K]
        Capabilities: [dc] Power Management version 2

From the boot messages:

after "modprobe ieee1394; modprobe ohci1394"

Jul 23 13:52:29 munchkin kernel: ohci1394: $Rev: 515 $ Ben Collins 
Jul 23 13:52:29 munchkin kernel: PCI: Found IRQ 11 for device 02:03.1
Jul 23 13:52:29 munchkin kernel: PCI: Sharing IRQ 11 with 00:1d.2
Jul 23 13:52:29 munchkin kernel: PCI: Sharing IRQ 11 with 00:1f.1
Jul 23 13:52:29 munchkin kernel: ohci1394_0: OHCI-1394 1.1 (PCI): IRQ=[11]  MMIO=[e0200000-e0200800]  Max Packet=[2048]

after "modprobe sbp2"

Jul 23 13:53:38 munchkin kernel: ieee1394: sbp2: Logged into SBP-2 device
Jul 23 13:53:38 munchkin kernel: scsi0 : IEEE-1394 SBP-2 protocol driver (host: ohci1394)
Jul 23 13:53:38 munchkin kernel: $Rev: 515 $ James Goodwin 
Jul 23 13:53:38 munchkin kernel: SBP-2 module load options:
Jul 23 13:53:38 munchkin kernel: - Max speed supported: S400
Jul 23 13:53:38 munchkin kernel: - Max sectors per I/O supported: 255
Jul 23 13:53:38 munchkin kernel: - Max outstanding commands supported: 8
Jul 23 13:53:38 munchkin kernel: - Max outstanding commands per lun supported: 1
Jul 23 13:53:38 munchkin kernel: - Serialized I/O (debug): no
Jul 23 13:53:38 munchkin kernel: - Exclusive login: yes
Jul 23 13:53:38 munchkin kernel:   Vendor: TOSHIBA   Model: CDRW/DVD SDR2102  Rev: 1D13
Jul 23 13:53:38 munchkin kernel:   Type:   CD-ROM                             ANSI SCSI revision: 02

after "mount /cdrom"

Jul 23 13:54:39 munchkin kernel: Attached scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0
Jul 23 13:54:39 munchkin kernel: sr0: scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda tray
Jul 23 13:54:39 munchkin kernel: Uniform CD-ROM driver Revision: 3.12

at this point, the kernel also inserts the cdrom and sr_mod modules.

Sound Card

The sound card sort of works. It seems to be detected correctly, but it has problems playing wav files.

Freeamp seems to work just fine for playing mp3's.

The sound card is a Cirrus Logic CS4299 integrated in the Intel i810. I have not tried using the ALSA modules.

Kernel Configuration

In the Sound menu, enable:

What various parts of Linux See

From lspci -v:

00:1f.5 Multimedia audio controller: Intel Corp. 82801CA/CAM AC'97 Audio (rev 02)
        Subsystem: Dell Computer Corporation: Unknown device 0122
        Flags: bus master, medium devsel, latency 0, IRQ 11
        I/O ports at 8400 [size=256]
        I/O ports at 80c0 [size=64]

From the boot messages:

Jul 22 16:44:40 munchkin kernel: i810: Intel ICH3 found at IO 0x80c0 and 0x8400, IRQ 11
Jul 22 16:44:40 munchkin kernel: i810_audio: Audio Controller supports 6 channels.
Jul 22 16:44:40 munchkin kernel: ac97_codec: AC97 Audio codec, id: 0x4352:0x5934 (Cirrus Logic CS4299 rev D)
Jul 22 16:44:40 munchkin kernel: i810_audio: AC'97 codec 0 supports AMAP, total channels = 2

USB

This machine has three USB controllers! The important thing is that it has two USB connectors, one on the left and another on the right.

My goal in enabling USB support was to make it possible to sync my Sony Clié using gnome-pilot. If you have other USB devices, you may need to change things a bit, but it should work.

Kernel Configuration

In the USB support menu, enable:

The "Preliminary USB device filesystem" makes it possible for the USB drivers to register devices in the /proc file system. In order to make this visible, you also need to mount the usbdevfs filesystem. You can do this by hand:

# mount -t usbdevfs none /proc/bus/usb

Or, you may want to add the following line to /etc/fstab (right after the line that mounts the /proc filesystem):

none    /proc/bus/usb   usbdevfs        defaults,auto   0       0

In the USB Serial Converter support menu, enable:

Notice that the serial converter components are compiled as modules. The modules are usbserial.o and visor.o. I added these to /etc/modules so I don't have to remember to insert them. Alternately, you could use "modprobe visor.o"

What various parts of Linux See

From lspci -v:

00:1d.0 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #1) (rev 02) (prog-if 00 [UHCI])
        Subsystem: Dell Computer Corporation: Unknown device 0122
        Flags: bus master, medium devsel, latency 0, IRQ 10
        I/O ports at 8c80 [size=32]

00:1d.1 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #2) (rev 02) (prog-if 00 [UHCI])
        Subsystem: Dell Computer Corporation: Unknown device 0122
        Flags: bus master, medium devsel, latency 0, IRQ 11
        I/O ports at 8ca0 [size=32]

00:1d.2 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #3) (rev 02) (prog-if 00 [UHCI])
        Subsystem: Dell Computer Corporation: Unknown device 0122
        Flags: bus master, medium devsel, latency 0, IRQ 11
        I/O ports at 8cc0 [size=32]

From the boot messages:

Jul 28 23:55:26 munchkin kernel: usb.c: registered new driver usbdevfs
Jul 28 23:55:26 munchkin kernel: usb.c: registered new driver hub
Jul 28 23:55:26 munchkin kernel: Yenta IRQ list 02b8, PCI irq10
Jul 28 23:55:26 munchkin kernel: Socket status: 30000410
Jul 28 23:55:26 munchkin kernel: uhci.c: USB Universal Host Controller Interface driver v1.1
Jul 28 23:55:26 munchkin kernel: PCI: Found IRQ 10 for device 00:1d.0
Jul 28 23:55:26 munchkin kernel: PCI: Sharing IRQ 10 with 00:02.0
Jul 28 23:55:26 munchkin kernel: PCI: Sharing IRQ 10 with 02:03.0
Jul 28 23:55:26 munchkin kernel: PCI: Setting latency timer of device 00:1d.0 to 64
Jul 28 23:55:26 munchkin kernel: uhci.c: USB UHCI at I/O 0x8c80, IRQ 10
Jul 28 23:55:26 munchkin kernel: usb.c: new USB bus registered, assigned bus number 1
Jul 28 23:55:26 munchkin kernel: hub.c: USB hub found
Jul 28 23:55:26 munchkin kernel: hub.c: 2 ports detected
Jul 28 23:55:26 munchkin kernel: PCI: Found IRQ 11 for device 00:1d.1
Jul 28 23:55:26 munchkin kernel: PCI: Sharing IRQ 11 with 02:05.0
Jul 28 23:55:26 munchkin kernel: PCI: Setting latency timer of device 00:1d.1 to 64
Jul 28 23:55:26 munchkin kernel: uhci.c: USB UHCI at I/O 0x8ca0, IRQ 11
Jul 28 23:55:26 munchkin kernel: usb.c: new USB bus registered, assigned bus number 2
Jul 28 23:55:26 munchkin kernel: hub.c: USB hub found
Jul 28 23:55:26 munchkin kernel: hub.c: 2 ports detected
Jul 28 23:55:26 munchkin kernel: PCI: Found IRQ 11 for device 00:1d.2
Jul 28 23:55:26 munchkin kernel: PCI: Sharing IRQ 11 with 00:1f.1
Jul 28 23:55:26 munchkin kernel: PCI: Sharing IRQ 11 with 02:03.1
Jul 28 23:55:26 munchkin kernel: PCI: Setting latency timer of device 00:1d.2 to 64
Jul 28 23:55:26 munchkin kernel: uhci.c: USB UHCI at I/O 0x8cc0, IRQ 11
Jul 28 23:55:26 munchkin kernel: usb.c: new USB bus registered, assigned bus number 3
Jul 28 23:55:26 munchkin kernel: hub.c: USB hub found
Jul 28 23:55:26 munchkin kernel: hub.c: 2 ports detected

When the usbserial and visor modules get loaded:

Jul 28 23:55:26 munchkin kernel: usb.c: registered new driver serial
Jul 28 23:55:26 munchkin kernel: usbserial.c: USB Serial support registered for Generic
Jul 28 23:55:26 munchkin kernel: usbserial.c: USB Serial Driver core v1.4
Jul 28 23:55:26 munchkin kernel: usbserial.c: USB Serial support registered for Handspring Visor
Jul 28 23:55:26 munchkin kernel: usbserial.c: USB Serial support registered for Palm 4.0
Jul 28 23:55:26 munchkin kernel: usbserial.c: USB Serial support registered for Sony Clié 3.5
Jul 28 23:55:26 munchkin kernel: usbserial.c: USB Serial support registered for Sony Clié 4.x
Jul 28 23:55:26 munchkin kernel: visor.c: USB HandSpring Visor, Palm m50x, Sony Clié driver v1.5

Finally, when you push the "Hot sync" button on the USB cradle, you should get something like the following:

Jul 28 23:57:23 munchkin kernel: hub.c: USB new device connect on bus1/1, assigned device number 2
Jul 28 23:57:23 munchkin kernel: usbserial.c: Sony Clié 4.x converter detected
Jul 28 23:57:23 munchkin kernel: visor.c: Sony Clié 4.x: Number of ports: 2
Jul 28 23:57:23 munchkin kernel: visor.c: Sony Clié 4.x: port 1, is for Generic use and is bound to ttyUSB0
Jul 28 23:57:23 munchkin kernel: visor.c: Sony Clié 4.x: port 2, is for HotSync use and is bound to ttyUSB1
Jul 28 23:57:23 munchkin kernel: usbserial.c: Sony Clié 4.x converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
Jul 28 23:57:23 munchkin kernel: usbserial.c: Sony Clié 4.x converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
Jul 28 23:57:28 munchkin kernel: usb.c: USB disconnect on device 2
Jul 28 23:57:28 munchkin kernel: usbserial.c: Sony Clié 4.x converter now disconnected from ttyUSB0
Jul 28 23:57:28 munchkin kernel: usbserial.c: Sony Clié 4.x converter now disconnected from ttyUSB1

From "ls /proc/bus/usb"

001  002  003  devices  drivers

From "cat /proc/bus/usb/devices"

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI-alt Root Hub
S:  SerialNumber=8cc0
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms
T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI-alt Root Hub
S:  SerialNumber=8ca0
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms
T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI-alt Root Hub
S:  SerialNumber=8c80
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

APM

For my purposes, APM provides two critical services: suspend/resume and an indication of how much battery remains. Both of these work, although the battery only reports percentage remaining.

On several occasions my machine has frozen when I plug in the power cord while running on battery. I can move the mouse cursor for several seconds after plugging in the power cord. Then the screen goes white and the machine is locked up. The only thing I can do is to power cycle it.

I tried enabling ACPI; however, there is a conflict with pcmcia services and I have not explored this in any depth.