Debian Etch on a ThinkPad T23
by Jonathan Yavner <jyavner@comcast.net>, April 2007

I got it for $225+40 on Ebay!

Tried to install Ubuntu Feisty Fawn, but Ubuntu took a ½ hour to boot, and the installer... well, after two hours of thrashing the CD-ROM it still hadn't finished painting its initial screen.  So I got a 256 MB RAM module for it and tried again.  Boot time was then decent, but the controls for telling Ubuntu to ignore the wired Ethernet port and use my wireless connection instead didn't seem to "take", so I couldn't get the installer to work.

So I installed Debian Etch.  Debian claims to be the Linux that "just works".  Ha ha ha ha ha!  Well, it works *now*, after I spent over 50 hours beating it into shape.

ThinkWiki - The Linux Thinkpad Wiki I highly recommend ThinkWiki's page about the T23!

It was so much effort to make this thing work properly that I'm thinking about making up a DVD install disk: "Debian Etch tuned for a ThinkPad T23" and selling it on eBay.

See also my notes for RedHat 8 on a ThinkPad 600E.

Table of Contents
Hardware:  CPU   RAM   Hard Drive   GPU   Keyboard/Mouse   Sound System   DVD   Battery   CardBus (PCMCIA)   USB   Parallel Port   Serial Port   ThinkLight   Lid Switch   Cooling Fan   IrDA (infrared transceiver)   Ethernet   Modem   UltraPort   Docking Port   TPM   (non-T23 hardware)  
Firmware:  ACPI   Suspend/Resume/Hibernate   BIOS Update  
Software:  Desktop   Web Browsers   Backup/Restore  
Conclusions:  Conclusions  
Appendices:  A   B   C   D   E   F  

Hardware


Motherboard module:


My keyboard sticker:


The sticker I don't have:

Central Processing Unit

Type: Pentium IIIm
Speed: 733 MHz or 1133 MHz
SpeedStep:  v2.1
Status: Works!

Problem: The CPU speed cannot be adjusted.
Fix:
1.  Add these lines to file /etc/modules:
acpi-cpufreq
cpufreq-ondemand
cpufreq-powersave
2. Reboot.
3. In panel applet "CPU Frequency Scaling Monitor", right-click to "Preferences", change Frequency Selector to "governors".
4. Left-click on the applet to show governors 'performance', 'ondemand', and 'powersave'.  More info.

Problem: Selecting the 'ondemand' governor using the applet does not stick; governor reverts to 'performance' after reboot.
Fix: Add this line (before "exit 0", if present) to /etc/rc.local:

cpufreq-set -g ondemand

Problem: The 'ondemand' governor goes to high-power mode when the screensaver runs.
Fix: Turn off the screensaver: Select menu "Desktop ⇒ Preferences ⇒ Screensaver", uncheck the box "Activate screensaver when session is idle".  (Use "Desktop ⇒ Preferences ⇒ Power Management" to have the LCD turn off instead.)

Cosmetic Problem: My T23's keyboard has a sticker on it that says "Intel Inside—Pentium III", but the CPU type is actually IIIm.  This unit was "refurbished" and may have a front-plate that originally came from some other kind of ThinkPad.  My daughter's T23 has no sticker at all.
Reader-submitted note: Victor O. writes, "All new T23 (at least most of them) got the black sticker. I bought mine on 2001".
Workaround: Live with it or scrape off the sticker.  Treat it as an artifact of historical interest.



2 user-replaceable boards:

RAM

Type: PC-133, 144 pins
Size: 256 MB, upgraded to 384 MB.
Status: Works okay.  I plan to upgrade to 640 MB.

Problem: Many Linux distros still claim that they can run in 256 MB, but these days very few of them actually work well with so little.
Fix: Buy a RAM upgrade.  Ebay Express is much cheaper than CompUSA!



User-replaceable unit:

Hard Drive

Type: Fujitsu, IDE, ATA-5, 9mm form factor
Size: 30 GB
Status: Works, but too much activity.

Problem: Hard drive makes an annoying click every 2-3 seconds.
To Fix: (Open issue)

Test Result: Running "hdparm -t /dev/hda" shows a transfer speed of 19 MB/sec, using the UltraDMA protocol.  (My old ThinkPad 600E can only do 6 MB/sec.)
Note: The driver automatically chooses the best I/O settings for this drive.  I added option 'interrupt_unmask' in /etc/hdparm.conf and it is now enabled, but it doesn't seem to help anything.  All the other options seem to just slow it down.

Doc Problem: ThinkWiki's page doesn't mention that the T23's hard drive is a different shape from the one used in the 600E.  I was disappointed to learn that I couldn't swap the drives back and forth.
Fix: Changed wiki page to say that T23 requires a hard drive that's 9mm tall while the 600 and 600E use 12mm drives.



Motherboard chip:


LCD screen:


VGA port on rear panel:


S-video jack on rear panel:

Graphics Processing Unit

Type: S3 SuperSavage IX/C
Size: 14.1 inches, 16 MB of video RAM
Geometry: 1024×768 pixels, 16-bit color
Status: Works, with glitch.  S-video jack not tested.

Problem: No graphics acceleration.  Anything that requires animation (such as the "tuxkart" game) is horribly slow.
Fix: This one was nasty!  It turns out that both Feisty Fawn and Etch were released with a defective driver for the savage GPU.  For now, fixing this bug requires recompiling the affected modules (see Appendix A for gory details).
Test Result: "glxgears -printfps" now generates 2500 frames in five seconds!  Tuxkart now looks good, as do YouTube videos.

Problem: Sometimes gets into a mode where moving the cursor around leaves a trail of garbage (looks like random data from another video page).  Usually happens immediately after boot or resume.  At one point I consistently saw this problem when starting "gdmflexiserver" for switching user logins—exiting from gdmflexiserver made the program go away, so clearly the driver is capable of getting back out of this mode!
Fix: (Open issue)

Non-problem: Some sources say that this display supports 24-bit color.  But then glxgears produces only 1200 frames in 5 seconds, and most websites look exactly the same as in 16-bit mode (a few rare images that have noticable banding at 16 look better at 24), and tuxkart causes a system hang in the third lap.
Workaround: Stick with the 16-bit mode selected by Debian installer.

Note: The FN+F7 key-combo selects "VGA port", "VGA+LCD", then "LCD only".  When not using the VGA port, this amounts to "LCD off", "LCD on (wasting extra power)", then "LCD on (efficient)".



ThinkPad button
(upper left of kbd):



TrackPoint mouse
(middle of kbd):



Right ALT key
(low-center of kbd):



Mouse buttons
(below kbd):



Mouse port
(rear panel):

Keyboard and Mouse

Type: PS/2
Status: Works!

Problem: The ThinkPad button doesn't do anything.
Fix:
1.  Install Debian package "tpb" (which uninstalls package "hotkey-setup").
2. Add "nvram" to file /etc/modules.
3. Uncomment the THINKPAD line in file /etc/tpbrc and change it to "THINKPAD /usr/bin/gdmflexiserver".
5. Reboot.
Now pressing the ThinkPad button will perform the "switch user" function for sharing the computer with others.

Problem: Various "hotkey-setup not found" messages are displayed during boot, suspend, resume, etc.
Fix: Select menu "Desktop ⇒ Administration ⇒ Synaptic Package Manager".  Click on "Not installed (residual config)", then right-click on the square next to "hotkey-setup" and select "Mark for complete removal".  Click on "Apply".

Note: The right ALT key works properly!  On my 600E it did nothing (was using RedHat 8, then Fedora Core 2).  Apparently Feisty Fawn still disables this key.

Note: No problems with TrackPoint or mouse buttons.  A mouse plugged into the mouse port "just works".

Non-problem: Need a PS/2 splitter cable to plug an external keyboard into the "mouse" port.  It seems the keyboard cable costs as much as a keyboard!
Workaround: Pretend that the T23 doesn't support external keyboards.



Motherboard chips:
 

Speakers (front underside):


Microphone (front):


Jacks on left panel
(headphone, line-in, mic):

Sound System

Type: Cirrus Logic cs4299, Intel 82801CAM
Status: Works!  Jacks not tested.

(This was a problematic area.  I tried lots of things that didn't work, plus these that did:)

Problem: No MIDI support.  Application programs like "rosegarden" and "noteedit" produce no output.
Fix:
1.  Install Debian packages "timidity" and "freepats".
2. In /etc/defaults/timidity, uncomment the line "TIM_ALSASEQ=true"
3. Add "snd-seq" to /etc/modules.
4. Reboot.
5. In the application programs, select output device "Timidity, port 128:0"
Note: Never could get this to work on my 600E.  Now I have music editing!

Problem: When other programs are running, MIDI starts to sound choppy.
Fix: Increase timidity's task priority.  In file /etc/init.d/timidity, add "--nicelevel -5":
    START="--nicelevel -5 --start --quiet --exec ${DAEMON} --pidfile ${PIDFILE} -- ${PARAMS}"

Problem: The cs4299 has only one (stereo) output channel.  When the computer is told to play two sounds at the same time, the second one gets lost.
Fix: Add a software mixer.  Create file /etc/asound.conf with the text from Appendix C.

Problem: When the cute "systems sounds" are enabled (menu "Desktop ⇒ Preferences ⇒ Sound"), Flash videos play silently.
Workaround: Do without system sounds.  At Sound preference panel, disable ESD (and therefore also system sounds).  The fixes described at Launchpad do not work!
Fix: Tell ESD to let go of the sound channel after one second of inactivity.  Change the "auto_spawn" and "spawn_options" values in file /etc/esound/esd.conf to:
    auto_spawn=1
    spawn_options=-terminate -nobeeps -as 1

Grump: A chirp is sometimes heard when ESD lets go.
Note: The cute sound files are in Debian package "gnome-audio".  Cute sounds are another thing that never worked on my 600E.

Problem: The "Sound Recorder" application records nothing but silence.
Fix:
1.  Select menu "Applications ⇒ Sound&Video ⇒ Volume Control".
2.  Within the Volume Control, select menu "Edit ⇒ Preferences", put checkmarks in the options for "Capture" and "Microphone Capture", click on "Close".
3.  In the Capture tab, click on the × to unmute and raise the slider to max.
4.  In the Switches tab, click on "Microphone capture".
5. Close Volume Control and select menu "Desktop ⇒ Preferences ⇒ Multimedia Systems Selector".  Change "Input" to "OSS - Open Sound System".
Note: For Playback tab of Volume Control, you can unmute the microphone and then running one's finger over the mic will spew static from the speakers, without creating a feedback squeal.

Note: The default installation includes MP3 support!  Double-click on an MP3 file to play it using totem.

Doc Problem: The 82801 is a multifunctional "South bridge" chip.  ThinkWiki's category page for the T23 calls it an "audio controller", but on its own page they call it an "I/O controller".
Fix: Edit the Wiki.



Empty UltraBay-2000, right-side panel:


User-replaceable unit:


"UltraBay power is on" lamp:

DVD-ROM Drive

Type: Hitachi GDR-8081N, UltraBay 2000
Modes: CD-ROM (24×), DVD-ROM (8×)
Status: Mostly works, but commercial movies not good enough.

Non-problem: Don't really need this drive very often.
To Fix: Swap it out and replace with a second battery.

Problem: Ejecting drive from UltraBay causes system crash.
Fix: Install debian package "hotswap", which is then accessed via menu "Applications ⇒ Debian ⇒ Apps ⇒ System ⇒ xhotswap" or via line-mode command "hotswap".
Grump: The hotswap program complains about a missing file /etc/hotswaprc.  The minimum contents for that file are "<hotswap></hotswap>".
Grump: The hotswap command does not turn off power to the UltraBay.  For that, use "echo eject >/proc/acpi/ibm/bay".

Problem: Commercial DVD movies do not play, due to lack of libdvdcss library.  Debian "unofficial" has the library, but apt-get can't seem to find it.
Fix: Download the file manually, then use "dpkg -i" command to install it manually.
Test Result: The default movie player is "totem", which displays garbage except in full-screen mode.  The movie's on-screen controls for selecting bonus scenes, etc., don't seem to work.  In full-screen mode the movie appears jerky, but the "System Monitor" applet says the CPU is less than 100% busy, so WTF?  Result from "hdparm -t /dev/hdc" says the DVD drive is putting out 6 MB/sec.
To do: Might want to investigate alternative movie players to see whether Totem is the problem.  (Open issue.)



User-replaceable unit:

Battery

Type: Smart lithium-ion
Status: Works!

Test Result: Run time for this 5 year old(?) battery is about 2 hours (original spec was 3½ hours).  This is barely adequate for my needs.
Potential Problem: As the battery gets older, it will eventually not hold enough charge for me.
To Fix: Get an UltraBay-2000 battery from Ebay to extend the run time.  (Open issue)



On left-side panel, with wireless card installed:

CardBus

Type: PCMCIA
Modes: Type II (16-bit), Type III (32-bit)
Status: Type II cards work, with glitch.  Type III cards unclear.

Problem: Type II wireless 802.11b networking card (NetGear MA401) is recognized by Debian installer, but "roaming" fails because my neighbor's signal is stronger than my own and he uses WEP for pseudo-security.
Fix: After it fails, select "Reconfigure wireless settings" to set the access point's name.

Big Problem: When the installed system boots, it fails to access the MA401 properly, emitting messages about zeroes received from the card when nonzero values were expected.
Workaround: Use wired Ethernet for initial software installation, then insert card and let the installed system "discover" it.

Problem: Hotplug doesn't work: ejecting card and reinserting it does not automatically restart networking, like it did on 600E.  The 'route' command hangs instead of displaying the "chadmin" default route.
Workaround: Use 'ifdown -a; ifup -a' after inserting card.

Problem: Sometimes hangs when trying to access the Debian package repositories (I use "ftp.us.debian.org").  Manually invoking "ftp ftp.us.debian.org" will hang at such times.
Workaround: Invoke "ftp ftp.debian.org", which doesn't hang.  Use Ctrl/C at the FTP login prompt.  Then package-installation works again!  Weird.  (Open issue)

Problem: Type III wireless networking card (MA521) is not recognized.
Note: The MA521 contains a RealTek 8180 chip that was never well supported and is now orphaned, while the MA401 contains a Intersil PRISM chip (using Linux driver 'orinoco').
Workaround: Use the MA401 instead.



2 jacks, rear panel:

Universal Serial Bus

Type: USB 1.1
Status: Works!

No problems!

Test Results: Digital camera "just works".  MP3 player "just works".



Jack on rear panel:

Parallel Port

Type: IEEE1284
Status: Works!

Problem: The program "Desktop ⇒ Administration ⇒ Printing ⇒ New Printer" doesn't actually add the printer.
Fix: Use "Applications ⇒ System Tools ⇒ Printers ⇒ Add" instead.

Problem: Changes to printer settings via "Applications⇒SystemTools⇒Printers" don't seem to take effect, at least for pages printed from Iceweasel.
Fix: Use "Desktop⇒Administration⇒Printing" for printer settings.

Test Result: The HP LaserJet IIIp printer "just works".

Problem: The Canon i550 printer has no entry in the foomatic database.
Note: Last time I checked, the only Linux driver available for it was direct from Canon with documentation only in Japanese (worked on my 600E, though).
Workaround: Transfer the files to my wife's Windows machine and print to the Canon using her driver.  (Open Issue)



Jack on rear panel:

Serial Port

Type: 16550A compatible
Status: Works?

Problem: Serial port is disabled by default in the Firmware.
Fix: Press F1 during boot to access Firmware.  Select "Config ⇒ Serial Port".  Change setting to "Enabled".  Press F10 to save settings and exit.

Test Result: A Garmin eTrex Summit, with Interface set to "Text Out" mode, spews GPS information that can be received via the serial port (after installing Debian package "minicom").
Problem: Can't prove that transmission is working.  Garmin firmware update (running inside a WINE bottle) can't find any serial ports!

Problem: An X10 Firecracker doesn't work.
Failed Fix: Install Debian package "wmx10", which is designed specifically to control this home-automation device (which uses a wacky DSR/RTS protocol instead of sending normal bytes).  The package installer asks me for the name of the serial port, but then tries to create /dev/firecracker directly (the /dev directory is recreated on boot).  Nothing happens when clicking on the program's buttons (and the Firecracker has no ability to provide feedback.)
Note: Directory /sys/devices/platform/serial8250 doesn't mention ttyS0, only ttyS1 through ttyS3 which don't exist.  There's something funny going on here.
Workaround: Don't use Firecracker with T23.



Top-left inside edge of lid:

ThinkLight

Type: IBM proprietary
Status: Works!

Note: Use the FN+PgUp key-combo to turn the lamp on and off.



Upper-right keyboard,
near power-on indicator:

Lid-closing switch

Status: Works!

Problem: System doesn't suspend when lid is closed.
Fix: Select menu "Desktop ⇒ Preferences ⇒ Power Management", change item "When laptop lid is closed" to "Suspend" for both Running on AC and Running on Battery tabs.
Revised Fix: In file /etc/acpi/event/lidbtn, change the action to "/etc/acpi/sleep.sh", then either reboot or invoke "/etc/init.d/acpid restart".  This bypasses the Power Management preference.  See "Suspend/Resume/Hibernate" below for more info.



Exhaust port on left side:

Cooling fan

Status: Needs work

Problem: Takes too long to turn on, leading to unconfortable temperatures perceived on user's left thigh.
To Fix: See here for info.  (Open issue)



Left-side panel, between
CardBus & audio jacks:

Infrared transceiver

Type: Intel 82561ET
Modes: SIR (115 kbps), FIR (4 mbps)
Status: Untested

Problem: Driver installed but no IP address assigned.
To Fix: See here for more info.  (Open issue)

Doc Problem: IrDA is not mentioned in ThinkWiki's list of ports on a T23.
Fix: Edit the wiki.

Check: Can this thing act as a TV remote?



User-replaceable board:   Jack on rear panel:

Ethernet

Type: Intel 82561ET
Modes: 10 or 100 megabits per second
Status: Works!

No problems!

Test Result: Copying 3 GB of data from my 600E to an FTP server over an 11 Mbits/sec wireless link takes an hour and a half.  Copying that data from the server to the T23 using a 100 Mbits/sec Ethernet link takes five minutes!



Jack on rear panel:

User-replaceable board,
with FCC certificate attached:


Modem

Type: Ambit Winmodem
Status: Works!

Problem: No driver is pre-loaded.
Fix:
1.  Download, compile, and install the martian driver.  After "make install", Linux will automatically detect the modem and load the driver.
2. Add to /etc/rc.local:
    martian_modem --daemon
Test Result: Using minicom (initialize with Ctrl/A o, "Serial port setup", Serial Device = "/dev/ttySM0"), AT commands can be sent to the modem.  Didn't try calling anyone.



Connector on lid front (normally
covered by rubber guard):


UltraPort

Type: USB 1.1
Status: Untested.

Problem: It just sits there, begging me to find a use for it.
Potential Fix: Could get a stereo microphone or micro webcam for it, but I don't have much need.



Bottom:

Docking Port

Type: IBM proprietary
Status: Untested.

Problem: Useless without a dock to connect it to.
Workaround: Ignore it.



Motherboard module(?)

Trusted Platform Module

Type: v1.0, which does not match TCG specs.
Status: Untested.

Problem: Seems to be useless.  For signing emails, the CPU is faster.  With current firmware this module cannot be used to prevent booting of non-Microsoft operating systems.  More info.
Workaround: Ignore it.  This is typical of what happens when politics overrules engineering.



(Non-T23 Hardware)

The Debian installer erroneously includes support for some hardware that I don't have.

Bluetooth: Uninstall Debian packages "bluetooth", "libbluetooth2", "bluez-gnome", and "bluez-utils".  This eliminates three useless daemon processes.

Synaptics Touchpad: Remove section "Synaptics Touchpad" and line 'InputDevice "Synaptics touchpad"' from file /etc/X11/xorg.conf.

A recent Hewlett-Packard printer: I have an older HP printer, so I could uninstall Debian packages "hplip" and "hplip-data".  This would eliminate two daemon processes that I don't need, shaving a second off the boot-up time.


Firmware


BIOS splash screen:

Communication with Linux kernel

Status: Works!

The T23 supports both APM and ACPI as ways for the firmware to talk to the operating system.  On some ThinkPads, such as the T20, ACPI is unreliable and should be disabled, but it's fine on the T23.

Problem: Some sources claim that kernel parameter "acpi=off" is needed for a T23.  Don't you believe it!  Also, the Debian installer specifically mentions "acpi=off" on its F2 and F3 help screens as an option you might want to try.  But any kernel option given to the installer is silently copied to the installed system.  With ACPI turned off, the battery applet says the battery is always empty, the suspend/resume functions doesn't work right, etc.
Fix: Remove "acpi=off" from the "kernel" command in /boot/grub/menu.lst, or reinstall Debian without specifying any kernel options.



Suspend/Resume/Hibernate

Status: Seems to be working.  Needs more testing to ensure that no glitches remain.

I had a *lot* of problems with suspend!  I tried many fixes that didn't work.  Here are the ones that did:

Problem: When in text mode, the LCD displays garbage when returning from suspend.
Fix: Add "acpi_sleep=s3_bios,s3_mode" to "kernel" command in /boot/grub/menu.lstMore info.
Grump: Fills the LCD with useless system messages, which looks unclean.

Problem: The crescent moon indicator does not blink during suspend/resume.
Fix:
1.  Uninstall Debian package "uswsusp".  Reboot.
2. In file /etc/acpi/events/ibm-sleepbtn, change the action from "/etc/acpi/sleepbtn.sh" to "/etc/acpi/sleep.sh".  Otherwise the sleep.sh script doesn't run?
3. In file /etc/acpi/sleep.sh, comment out these lines:
      # If gnome-power-manager or klaptodaemon are running, let them handle policy
      if [ x$1 != xforce ] && [ x$1 != xsleep ] && [`CheckPolicy` = 0 ]; then
          exit;
      fi
Otherwise sleep.sh just exits and ¿some other program? does the suspend wrongly.
4. Add line "ibm-acpi" to file /etc/modules.  This enables the code that's already in the "acpi-support" package to blink the crescent moon indicator.

Problem: The "hibernate" button, FN+F12, doesn't do anything.
Fix: In file /etc/acpi/events/ibm-hibernatebtn, change the action from "/etc/acpi/hibernatebtn.sh" to "/etc/acpi/hibernate.sh".

Problem: After resuming from suspend or hibernate, the wireless networking card is not properly reconfigured (ESSID is back to default, no routing-table info).
Fix: Create file /etc/acpi/resume.d/97-cardreset.sh containing the lines
      ifdown -a
      ifup -a

Give the file 'executable' permissions.

Problem: When the computer suspends itself due to inactivity, it uses the wrong method (HAL?) and so the crescent moon doesn't blink, the GPU crashes on resume, etc.
Fix: Select menu "Applications ⇒ System Tools ⇒ Configuration Editor", then select "apps ⇒ gnome-power-manager", then uncheck the boxes for "can_suspend" and "can_hibernate".  Hopefully this will teach GNOME to stay out of the suspend process and let package acpi-support handle it as above.
Grump: Now there's no suspend-on-inactive function.

Problem: When in "suspend" mode, the T23 uses 25% of its battery power in 10 hours.  At this rate it would drain itself in 1½ days.
Fix: See "BIOS Update" below.
Test Result: Battery usage after 10 hours of suspend is reduced to 10%, so estimated maximum suspend-time is now increased from 40 hours to 100.



BIOS Update

BIOS: 1.02 (5 Feb 2002), updated to 1.20 (18 Oct 2006)
Embedded controller: 1.03a, updated to 1.06a
Status: Works!

Problem: BIOS is old.  More recent versions include "improved battery management".  For the 600E this made a big difference in battery life.
Fix: Update the BIOS.

Problem: The BIOS updates provided by IBM require either a floppy drive or Microsoft Windows.  I have neither.
Fix: Transmute the Windows updates into bootable CD-ROMs.  See my Appendix B for details.

Problem: The BIOS splash screen just says "IBM ThinkPad", with no penguin logo.
Failed Fix: ThinkWiki says you can replace the logo, using program prepare.exe found in cab file 1yu****.exe, but I can't find that file.
Workaround: Live with the standard BIOS splash screen.

Big Problem: After BIOS update, suspend no longer works — get a white screen on resume.
Small Fix: After trying lots of stuff that didn't work, this did: In file /etc/defaults/acpi-support, comment out the line "USE_DPMS=true".


Software


The Desktop

Status: Works.  Not sure if NTP clock-update is working.

Problem: The "Network Manager" notifier-applet can't find the wireless networking card, so it says the computer is off-line even when it's on-line.
Fix: Replace "Network Manager" with "Network Monitor":
1.  Select menu "Desktop ⇒ Preferences ⇒ Sessions", go to Startup Programs tab, click on "nm-applet --sm-disable", click on "Delete", click on "Close".
2. Right-click on the top-panel, select "Add to Panel", click on "Network Monitor", "Add", "Close".

Problem: Subpixel smoothing is not enabled by default.  Text does not look its best on an LCD.
Fix: Select menu "Desktop ⇒ Preferences ⇒ Font", click on "Subpixel Smoothing", then "Details", then "VRGB".  Since very few fonts support subpixel smoothing, set the Application, Document, and Desktop fonts to "Bitstream Charter 11".

Problem: Local clock does not automatically synchronize itself to a government clock.
Fix: Install Debian package "ntp".  Right-click on clock and select "Adjust Date & Time". Click on "Synchronize clock with Internet servers".  Click on "Select Servers" and choose someplace nearby.

Problem: There's no easy way to eject CD-ROM's and USB devices.
Fix: Add panel applet "Disk Mounter".



Iceweasel
(≅ Firefox)



Iceape
(≅ Seamonkey)


Web Browsing

Status: Works!

Problem: Java plugin does not self-install.
Fix:
1.  Download Linux (self-extracting file) to Desktop.
2. Make downloaded file be executable: chmod +x ~/Desktop/jre-6u1-linux-i586.bin
3. Uncompress the files: mkdir /usr/java; cd /usr/java; ~/Desktop/jre-6u1-linux-i586.bin
4. Connect the plugin: cd /usr/lib/iceweasel/plugins; ln -s /usr/java/jre1.6.0_01/plugin/i386/ns7/libjavaplugin_oji.so
5. Repeat step 4 for other browsers: cd /usr/lib/iceape/plugins, etc.

Problem: Java plugin does not function.
Fix: Install Debian package "libstdc++5".  I think this is a bug; only libdeploy.so within Java wants this old version.
Test Result: Works!

Problem: Flash plugin does not self-install.
Fix:
1.  Download Linux (x86) .tar.gz file to Desktop.
2. Uncompress the installer: cd /tmp; tar zxvf ~/Desktop/install_flash_player_9_linux.tar.gz
3. Invoke the installer: cd install_flash_player_9_linux; ./flashplayer-installer
4. Enter the target directory when requested: /usr/lib/iceweasel
5. Repeat steps 3-4 for other browsers.
Test Result: Works!

Problem: Shockwave-Director plugin is not available for Linux.  This is "must-have" software for my daughter.
Fix:
1.  Download and execute Crossover Office.  I used /usr/cxoffice as the installation directory.
2. Invoke /usr/cxoffice/bin/cxsetup.  On plugins tab, change system software locations to /usr/lib/iceweasel and /usr/lib/iceape.
3. Invoke /usr/cxoffice/bin/cxinstallwizard, select "Shockwave Player 8.5" as the desired software.
Test Result: Works!
Note: Similar process to install Windows Media Player.
Note: Crossover is the only commercial software installed on this machine.  The CodeWeaver folks did a great job!  (*snarl* *grumble* Software hoarders *hmph*)



Backup/restore

Status: Needs work.

Problem: Can't do a "full" backup at a decent speed over a 500 KB/s wireless link.
Fix: Install Debian package "dump", which provides utilities dump and restore.  These programs honor the 'd' file attribute provided by the ext3 filesystem, which is used to mark files that should not be backed up (because they are caches, reloadable from packages, etc.)

Problem: No files are marked with the 'd' attribute.
Fix:
1.  Use the script in Appendix D to put the 'd' attribute on all files already loaded from packages.  This removes 2.2 GB from the backup!
2. Set the 'd' attribute on large groups of files not marked above:
    find / -name '*.pyc' -type f -print0 | xargs -0 chattr +d
    find / -name '*.xml' -type f -print0 | xargs -0 chattr +d
    find /boot /usr/share/ppd/gutenprint/5.0/en -type f -print0 | xargs -0 chattr +d
3. Set the 'd' attribute on large static redownloadable things other than packages.  Examples:
    find /usr/java -type f -print0 | xargs -0 chattr +d
    find /usr/src/linux-source-2.6.18 -type f -print0 | xargs -0 chattr +d
    find /usr/lib -name 'libflashplayer.so' | xargs chattr +d
4. Remove the 'd' attribute from standard files that I overrode before doing all this chattr stuff.  These need to be backed up!
    chattr -d /lib/modules/2.6.18-4-686/kernel/drivers/char/drm/{savage,drm}.ko
5. Set the 'd' attribute on temp, cache and backup directories, to skip backup for temp files:
    chattr +d /tmp /var/tmp /var/backups /var/cache ~/.Trash ~/.mozilla/*/Cache ~/.mozilla/firefox/*/Cache ~/.gimp-2.2/tmp
Test Result: "dump -h0 -f /tmp/test /" shows that only 112 MB of the 920 MB on my root partition needs backing up; "dump -h0 -f /tmp/test /usr" shows that only 44 MB of the 2200 MB on that partition failed to get the 'd' attribute.  These amounts can be backed up over a 500 KB/sec wireless connection in about five minutes.

Problem: What about packages installed in the future?
Fix: Create files /etc/apt/apt.conf.d/99nodump and /usr/local/bin/pkg-no-dump (listings in Appendix E) to ensure that packages loaded in future will also get 'd' attributes on their files.

Problem: How exactly do you do backups with 'dump' over a wireless network?
Fix: Use my ftpbackup script (see Appendix F).  Use "ftpbackup 0" for a full backup, or "ftpbackup 1" for an incremental backup of files changed since last full.

Problem: The ftpbackup script prints "cannot seek on data source" and hangs for 30 seconds after backing up each partition.
Fix: Upgrade Debian package "lftp" to the "unstable" version, which is here.

Problem: How exactly do you do a full restore, e.g. after a hard-drive crash?  The "rescue" feature of Debian's install disk doesn't include the restore program!
To Fix: If I actually end up making that DVD for sale, I'll include restore in its "rescue" feature.  (Open issue)
Check: Can version 0.4b32 of program restore (which is on my FSF membership card) deal with backups created by version 0.4b41 of program dump (installed from Debian package)?


Conclusions

  1. This was *not* as easy as I had expected!  What was this guy smoking?  Or did he just not care about wireless networking, lack of graphics acceleration, etc?

  2. Suspend/resume still needs work, although hibernation is much better than with distros from four years ago.

  3. MIDI works now!  But the sound-sharing system could still use more improvement.

  4. USB support is much improved!

  5. Winmodem support is improved, although I don't really need it.

  6. Backup situation is worse—restore program is no longer on Debian rescue disk!  Just because Linus Torvalds hates dump and restore doesn't mean that they're bad programs!


Appendices

A.  Recompiling the savage driver to enable graphics acceleration:


B.  Updating the firmware:

Doc Problem: ThinkWiki says the reason why you have to mention *.IMG twice is because "some versions of mkisofs get confused about why you would want to create an iso with no contents".  Actually the reason why is because the -b option must refer to one of the other parameters; if you use
        touch empty
        mkisofs -b *.IMG -o name.iso empty
then you get the error message "Uh oh, I cant find the boot image".
Fix: Update the wiki.


C.  Telling ALSA to use its software mixer:

Create /etc/asound.conf containing this code, which I got from ALSA's wiki.

   pcm.amix {
     type dmix
     ipc_key 50557
     slave {
	 pcm "hw:0,0"
	 period_time 0
	 period_size 1024
	 buffer_size 8192
     }
     bindings {
	 0 0
	 1 1
     }
   }
   # route ALSA software through pcm.amix
   pcm.!default {
     type plug
     slave.pcm "amix"
   }

D.  Adding 'no-dump' flag to all files pre-loaded from packages:

We avoid marking config-files, although that's probably not harmful since editing those will create new files without 'd' flags.  We avoid marking directories because 'd' on a directory means "don't backup *anything* inside this dir".


E.  Adding 'no-dump' for packages installed in future:

This code (which I wrote) is a hack to get around the lack of suitable options for program apt.  What I really want is "call me whenever you create a new file", but all they offer is "call me before installing a package" and "call me after doing anything".  In particular, *reinstalls* don't get the no-dump attribute on their files.  Oh well.


F.  The "ftpbackup" script:

I wrote this script.  The items in italics need to be customized for your particulars.

    #! /bin/sh

    FTPNODE="the name or IP address of the machine to receive the backups"
    FTPUSER="your FTP login,your FTP password"
    FTPDIR="subdirectory where backup files should be placed"

    PARTITIONS="/ /usr /home"

    for part in $PARTITIONS
    do
      echo "Partition $part"
      PARTNAME=backup_`hostname`_level${1:-0}_`date +%F``echo $part | sed -e 's=/$=/root=' -e 's=/=_=g'`.dump
      echo $PARTNAME
      mknod /tmp/backup.pipe.$$ p
      dump -${1:-0} -h 0 -f /tmp/backup.pipe.$$ -q -u $part &
      while [ "`pstree -p $! | tr -cd ')'`" = ")" ]
      do
	# Wait for subprocess to start
	sleep 3
      done
      if [ "`pstree -p $! | tr -cd ')'`" != "))" ]
      then
	echo "Abort"
	exit 1
      fi
      lftp -u $FTPUSER -e "cd $FTPDIR; put /tmp/backup.pipe.$$ -o $PARTNAME; quit" $FTPNODE
      rm /tmp/backup.pipe.$$
    done