Linux on IBM ThinkPad 600

22 Oct 2002: I've summarized the battery problem and feedback I've gotten on its own page. As far as I know, this is a defect in the product, and affects both Windows and Linux users.

20 Oct 2002: Redhat 8.0 installs cleanly, with the exception of sound. I'm sure it can be made to work, but don't really care enough.

13 Feb 2001: IBM has released a GPL modem driver for the MWave modems. More discussion is at Slashdot. Huzzah!

I haven't really been updating this page, but a few notes are in order. I haven't resolved the battery issues. I broke down and bought an Xtend B320 replacement battery, and so far it's working just fine.

I've also switched my laptop to Debian Potato. For the most part, the installation went easily, although I did have to recompile the kernel to get APM working. Unfortunately, I did the install in a bit of a hurry, so I didn't have time to post a blow-by-blow description here.

7 Feb 2000: Till Straumann has written a user mode TrackPoint driver for ThinkPads. It enables Z-axis clicking. Till would like help with raw Z-axis data, as well as the usual testing. Check it out!

6 Feb 2000: I've been experiencing frustrating lifetime problems with my battery, and am determined to fix them. See the Battery section below.

14 Sep 1999: Amazingly, IBM has a Guide to installing Red Hat Linux 6.0 on their support webpage. It's quite informative.

14 Jul 1999: Benedikt Eric Heinen has set up a linux-tp600 mailing list. Subscription info is below, archive is coming soon.

Subscribe:      send email to majordomo@icemark.ch with
                subscribe linux-tp600
                in the message body.

Unsubscribe:    send email to majordomo@icemark.ch with
                unsubscribe linux-tp600
                in the message body.

I've reinstalled my system more or less from scratch using RedHat 6.0. You can also read about my experiences setting up older Linux versions on the ThinkPad.

As before, the basic install went smoothly, but there were quite a number of issues to iron out before the machine really came up to speed. I've divided the rest of this page into individual sections. The only insoluble problem currently is the modem. Aside from that, the ThinkPad 600 makes a nice Linux platform.

Be sure to check out the other Linux/TP600 pages, linked at the bottom of this page.

Video display

Very good news for the video display: the default install for RH 6.0 works fine. I set "Generic 1024x768 monitor" with 31.5-57.0 KHz horizontal and 50-100 Hz vertical.

The support for the NeoMagic chipset is now built into XFree86 (thanks, Precision Insight!), so it should work pretty cleanly in most distributions. Getting video to work well with older Linux versions was quite a bit trickier.

I've experienced one minor glitch with the video. When you close the case and open it again, the screen is shifted by a hundred pixels or so. The easiest way I've found to fix this problem is to run xvidtune and just click on the "apply" button. The authors of the NeoMagic driver are aware of the problem and hopefully a patch will be forthcoming soon. Actually now that I have power management running, I rarely see the problem.

As a quick hack, running "xvidtune -next; xvidtune -prev" seems to work, assuming you've set up more than one resolution (thanks to drazz for pointing this out). Another possibility (suggested on Thomas Hood's page) is to set up two identical modelines in the XF86Config file, and toggle between them.

Sound

Sound is just a bit tricky, as the TP600 contains a Crystal 4237B chip. Success has been reported using both OSS and ALSA. I've had more success with ALSA, so I'll describe that first:

ALSA sound

First, get and install the latest version of ALSA.

Put these lines in your /etc/conf.modules:

alias char-major-116 snd
alias snd-card-0 snd-card-cs4232
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-3 snd-pcm1-oss
alias sound-service-0-12 snd-pcm1-oss
options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0666 snd_device_gid=0 snd_device_uid=0
alias sound snd-card-cs4236
options snd-card-cs4236 snd_port=0x530 snd_cport=0x538 snd_mpu_port=-1 snd_fm_port=0x388 snd_irq=5 snd_dma1=1 snd_dma2=0

Note: the above configuration works just fine for me. However, Thomas Hood reports that changing the "alias snd-card-0 snd-card-cs4232" line to snd-card-cs4236 works much better for him - the old config caused some freezes. Your experiences either way are welcome.

Finally, use xamixer2 to set the mixer to non-zero values. Set the "Master Digital" sliders most of the way up, and check the bottom pair of checkboxes. Turn both PCM sliders all the way up, and check both checkboxes. For other audio things, like the microphones and synthesizer, you'll want to fiddle with the other sliders.

My guess is that there should be magic invocations for automatically loading the driver and unmuting the sound. If you manage to figure it out, let me know (actually, I have a recipe somewhere in my mail archives).

Note: the latest versions of ALSA seem to fix the "click" problem. Thomas Hood reports that versions 0.4.1f or later work correctly. Make sure to check his site for detailed install instructions.

OSS sound

I used the following settings for the sound card (they go into /etc/conf.modules):

alias sound cs4232
alias midi opl3
options opl3 io=0x388
options cs4232 io=0x530 irq=5 dma=1 dma2=0 mpuio=0x330 mpuirq=5 synthirq=-1 synthio=-1

A lot of times, sound won't play correctly (it sounds reminiscent of Max Headroom). Doing the following magic invocation (as root) seems to fix it:

/sbin/rmmod cs4232
/sbin/modprobe sound

Sound doesn't automatically re-enable itself after a suspend or hibernate. Charles Wright has a handy little script to re-enable it after coming out of hibernation:

prompt% sudo soundoff; sleep 1; sudo soundon

Charles recommends muting the speakers (Fn-Backspace) first, because if the microphone is enabled you'll get feedback.

Manoj Kasichainula reports that OSS sound (set up with sndconfig in his case) pretty much works, but not with Civ:Call to Power!

D Sen also had success with the commercial OSS sound drivers. He wrote:

To get 16 bit sound working, I used the OSS drivers from http://www.4front-tech.com. I downloaded the driver (osslinux39h-2034.tar.gz) for kernel 2:0:34 (which I had compiled without only modular support for sound). (I am running Red Hat 5.1). Trying to get the sound working with SB16 drivers that came with the kernel only resulted Sound Blaster Pro compatible sound (8 bits). The procedure was as follows:

1) tar -xvzf osslinux39h-2034.tar.gz and run ./oss-install

2) Choose the following card from the multitude of cards and chips in the "Add Cards" option.

Generic Crystal CS4237 based soundcard or motherboard (non PnP)

3) Go to "Manual Configuration" and make sure the following I/O/DMA/IRQs are set. (I found these from the Windows95 Control Panel - it might be possible to change these in the BIOS using PS2 commands but I havent tried this).

Device: MPU401 MIDI interface (enabled)
I/O port = 330
IRQ = 9
Device: Audio device (WSS compatible) (enabled)
I/O port = 530
IRQ = 5
DMA (A) = 1
DMA (B) = 0
Device: Yamaha OPL2/OPL3 FM synthesizer chip (enabled)
I/O port = 388

4) Save and exit

5) run soundon

It should work from there. You do need to get a license from OSS for $20.00 which you install by running soundconf. You can rerun soundconf to change the parameters chosen in steps 2 and 3 above.

Serial Port

The serial port is disabled by default in the TP600. The TP600 can only run one of the serial and infrared ports at a time. The easiest way to enable the serial port is to go into Windows 95 and use the config tool there.

Apparently it is possible to enable both the serial port and IrDA by moving around IRQ's. In general, you'll need to fiddle with the sound configuration as well. See Thomas Hood's ThinkPad 600 page for more details, if you're brave.

Another common problem is inserting PC cards containing serial devices (like modems). The PC card conflicts with the built-in serial port (even if disabled). Adding "exclude irq 4" and "exclude port 0x2f8-0x2ff" to your /etc/pcmcia/config.opts resolves the conflict.

Incidentally, Evan Carey found a utility on the IBM website that allowed him to disable the IR port and enable the serial port from a DOS bootable floppy.

Modem

The ThinkPad 600 uses an Mwave MDSP3780i DSP chip, rather than a traditional modem chipset. Modem functions require the cooperation of the DSP and host software. There is currently no Linux driver. I hear rumors that IBM may be considering doing one. These rumors are even more plausible now that IBM is officially supporting Linux. Get in touch with them and let 'em know what you think. Here's a Web page where you can send a message to IBM CEO Lou Gerstner. I found the link from a page maintained by a disgruntled Aptiva owner.

Thomas Hood reports that he has been in touch with someone who may be able to write a modem driver for Linux. He needs proof that there is a demand. If you have (or are considering buying) a TP600 but want the modem to work, go to Bill Mair's MWave Petition webpage and add your name. I did!

In this LinuxWorld interview, IBM has promised Linux support for modems. However, judging from this email, the "ACP" modem is no longer being actively developed, so it's unlikely that IBM will do the development themselves. Still, nothing to keep them from just releasing the code and letting the community finish the job.

Power Management

You will need to recompile your kernel for power management to work. Here are the settings for APM I used:

Advanced Power Management BIOS support (CONFIG_APM) [Y/n/?] 
   Ignore USER SUSPEND (CONFIG_APM_IGNORE_USER_SUSPEND) [N/y/?] 
   Enable PM at boot time (CONFIG_APM_DO_ENABLE) [N/y/?] 
   Make CPU Idle calls when idle (CONFIG_APM_CPU_IDLE) [N/y/?] 
   Enable console blanking using APM (CONFIG_APM_DISPLAY_BLANK) [N/y/?] 
   Power off on shutdown (CONFIG_APM_POWER_OFF) [Y/n/?] 
   Ignore multiple suspend (CONFIG_APM_IGNORE_MULTIPLE_SUSPEND) [Y/n/?] 
   Ignore multiple suspend/resume cycles (CONFIG_APM_IGNORE_SUSPEND_BOUNCE) [Y/n/?] 
   RTC stores time in GMT (CONFIG_APM_RTC_IS_GMT) [N/y/?] 
   Allow interrupts during APM BIOS calls (CONFIG_APM_ALLOW_INTS) [Y/n/?] 

A number of other people have reported slightly different configurations working for them. The important one is CONFIG_APM_ALLOW_INTS. Manoj Kasichainula reports that CONFIG_APM_IGNORE_MULTIPLE_SUSPEND also needs to be set for correct operation.

Also, use the most up-to-date version of apmd you can find. Older versions have bugs on the TP600. I use 3.0beta8, which works well, but displays a wierd message on startup.

As long as you're recompiling the kernel, you might as well enable DMA on the hard drive. This seems to work just fine, and is a significant performance improvement. Alternatively, you can do "hdparm -d 1 /dev/hda" in the /etc/rc.d/rc.local.

Don't forget to reinstall pcmcia when you recompile the kernel. Also, I had to enable the "experimental" stuff to get NFS service running.

Alexander Krumeich points out: Please note that hibernation and suspend do not work if the machine is running on main power and has a network card installed. Before hibernating/suspending, be sure to unplug the machine or remove the PCMCIA network card. 6 Feb 2000: You don't have to physically remove the card, you can use /sbin/cardctl eject instead. Also, you might try apm -s (suspend) or hibernating through tpctl.

Alfred Ganz writes the following, which might be helpful for people struggling with power management stability issues:

I use a ThinkPad 560, and everything has worked out fine, except for power manangement, where I had the "can't suspend a second time" problem, that is I could suspend once and return to normal operation but the second time around the BIOS would refuse to change state. This happened with 2.0.* and 2.2.* kernels, although it might have been addressed with the latest of the 2.2.* or with the 2.4.* kernels.

The problem for this seems to come from the floppy disk driver. As soon as I made it a loadable module, the above problem went away. Since many people now use kernel builds that make almost everything loadable modules, this problem may not show, but when it shows it is rather difficult to identify, and it might therefore be worthwhile to be noted.

The line in question is:

CONFIG_BLK_DEV_FD=m

Battery

The battery problems (and a possible solution!) have now moved to their own page.

Other issues

I haven't gotten the infrared port or the Universal Serial Bus running, as I have no need for either. I understand that there is active Linux development of the infrared drivers, though.

Tein Horng Yuan and D Sen both report that you can get the TP600 to recognize 96MB of RAM by adding "mem=95M" (or memory size - 1MB in general) to the boot options. Manoj Kasichainula reports that this wastes a few hundred K of RAM. You can look at the number in the upper left on machine startup (130496K for Manoj's 128M machine) and use that instead.

I found this FAQ on upgrading the hard disk. Apparently, the TP600 upgrade drives are about 3 times as expensive (!) as the Travelstar ones. I bought the 6.4G Travelstar (for under $200, Jun 1999), and it works great. It is a little noisier than the 3G that came with the machine.

Currently open issues

If you have any solutions for these problems, please let me know and I'll add them to my page.

Sound goes haywire after a suspend or hibernate. Any ideas for how to really fix it (you can sound off and on manually, as described above)? Note: there are workarounds on some of the other Linux/TP600 pages. I haven't tried them myself, though.

Links

This page maintained by Raph Levien <raph@acm.org>.

Last update: 6 Feb 2000

This Linux on ThinkPads site owned by Raph Levien.
[ Previous 5 Sites | Previous | Next | Next 5 Sites | Random Site | List Sites ]

* www.levien.com