Linux on IBM ThinkPad 600: older issues

This page contains information about running older versions of Linux on the ThinkPad 600. It may be of historical interest, but for running the latest stuff, you're probably more interested in the main page.

21 Jun 1999: Thomas Hood sent me this link to his ThinkPad 600 Linux page.

28 Dec 1998: New info on XFree86 3.3.3 and the screen shift problem.

10 Oct 1998: This page updated quite significantly, especially tips on fully functional sound support. Yay!

I have set up Linux on my ThinkPad 600. This page recounts some of my (mis)adventures.

Bottom line: it was very quick and easy to set up basic Linux functionality on this machine. There is only one serious problem: the modem is basically unusable under Linux. Sound and the display were a little harder to set up, but are now working very nicely with new drivers.

The TP600 is a fabulous machine to run Linux. It's powerful, has an unbelievable display (I do graphics development on it), and weighs less than 5 pounds. It doesn't skimp - it holds either a CD or a floppy in the removable bay, and you can even run both at the same time with an external case.

Thanks to a little help from the Linux community, I've been able to overcome the current limitations of running Linux on it (with the exception of the modem), and have a really nicely configured setup.

Installation Report

I started with Red Hat 5.0. I wasn't really thrilled with my choices this time around - the errata list for 5.0 is pretty big, and 5.1 has its own share of problems (like a new version of libjpeg that breaks binary compatibility with lots of other packages). By the time you read this, Debian 2.0 should be out. From the beta reports I've heard, it promises to be a really nice, solid package. Update: It's running 5.1 now with all the errata applied.

The computer came configured out of the box with two partitions already present - a 2.0GB VFAT16 (type 6) partition with Windows 95 and all the preinstalled software, and a 1.0GB VFAT16 partition that was totally empty. If a 1GB Linux partition was sufficient, it would be really quick to install into that.

In any case, I decided to go for 1.5GB in each partition, so I used fips 2.0 to shrink the C: partition. It was surprisingly quick and easy. Given that the partition was VFAT16, it should have been possible to use the fips 1.5 that shipped on the RH5.0 CD, but I didn't bother trying.

For the X configuration, I went with the Neomagic patch linked below. I followed the directions there, and set up the XF86Config for 1024 x 768 x 8bpp. I fiddled around with 16bpp, but didn't get it to work.

That was pretty much it for the basic install. I haven't seriously customized the machine yet. What follows is a more detailed instruction of remaining problem areas.

The screen

The ThinkPad 600 uses a NeoMagic video chipset. Until quite recently, this was a problem for running a free X server, because NeoMagic had chosen not to release the specs for their board.

Since then, RedHat has organized getting a source code release of drivers for the NeoMagic chipset. These drivers are now available on RedHat's FTP site. It's working really well for me, and the display on the TP600 is among the brightest, crispest, and most stable I've ever seen.

There is one minor glitch remaining 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.

28 Dec 1998: XFree86 3.3.3 now has NeoMagic support built in. I can recommend it. It still has the screen shift problem, but drazz has sent in a better provisional patch - run "xvidtune -next", then "xvidtune -prev". He has a WindowMaker key macro bound to this sequence.

31 Jan 1999: XFree86 3.3.3.1 (including the RedHat RPM of this release) is reported to work fine.

Modem

The news here is bleak. The modem in the ThinkPad 600 is based on 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, nor is one planned.

Obviously, the easy way out of this one is to buy a modem PCMCIA card. That's what I ended up doing. If you don't mind pain, you can use the modem under Win95, and transfer files back and forth by mounting the Win95 partition from Linux.

There are a few other longer-term solutions that seem viable. First, IBM may consider doing a Linux driver - it has been speculated that there is interest within IBM for doing so. Certainly with the recent IBM support for Linux, it seems like a reasonable thing. 4 Apr 1999: I think the time is right to publicly call on IBM to support the modem in the TP600. They were present in full force at the LinuxWorld expo, with ThinkPad 600's and lots of other cool hardware, specifically marketed for Linux. Write to IBM and let them know what you think.

Second, it may be possible to develop a totally free-software based modem for this configuration. This would be a great way for some Linux hacker to learn lots about DSPs and modems :)

Sound

Update

Excellent news! It's possible to configure beautiful sound on the TP600 with free software drivers. Here's how I did it.

First, I downloaded and installed ALSA. Second, I added this /etc/conf.modules file (more likely /etc/modules.conf in your distro):

alias char-major-14 snd
alias snd-minor-oss-0 snd-card-cs4236
alias snd-minor-oss-1 snd-opl3
alias snd-minor-oss-3 snd-pcm1-oss
options snd-card-cs4236 snd_port=0x530 snd_cport=0x538 snd_irq=5 snd_dma1=1 snd_dma2=0 snd_fm_port=0x388
alias sound off

Run /sbin/modprobe snd-card-cs4236. You will also have to set the mixer settings, as they are (for some strange reason) muted by default. You can either use a mixer program (amixer and alsamixer are included with alsa), or you can just cat this file to /proc/asound/0/mixer0:

Mixer 'CS4237B'
Channel 'Master D' 0 71 71 71
Channel '3D Center' 0 15 0 0 mute
Channel '3D Space' 0 15 0 0 mute
Channel 'Synth' 0 63 0 0 mute
Channel 'FM' 0 63 0 0 mute
Channel 'DSP' 0 63 63 63
Channel 'PCM' 0 63 63 63
Channel 'Line-In' 0 31 0 0 mute
Channel 'MIC' 0 31 31 31 mute
Channel 'CD' 0 31 31 31
Channel 'Record-Gain' 0 15 15 15
Channel 'In-Gain' 0 3 3 3
Channel 'Loopback' 0 63 0 0 mute
Channel 'Mono' 0 15 0 0 mute
Channel 'Aux A' 0 31 0 0 mute
Switch 'MIC Gain' 0 00000000:00000000:00000000:00000000:00000000:00000000:00000000:00000000
Switch 'Mono Output' 0 00000001:00000000:00000000:00000000:00000000:00000000:00000000:00000000
Switch 'IEC-958 (S/PDIF) Output' 4294967295 00000000:00000000:00000000:00000000:00000000:00000000:00000000:00000000

Instead of having to run modprobe by hand, you can also copy alsa-driver/utils/alsasound into /etc/rc.d/init.d and set up the appropriate symlinks.

I wasn't able to get the FM synthesizer working with this configuration, but it hardly matters. If it's important to you, the tp600 will also do a Sound Blaster Pro emulation which includes FM synthesis (just set up as a Sound Blaster Pro, port 0x220, irq 5, dma 0 in the RedHat sound configuration tool).

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.

Thanks to the many other people who helped me struggle with sound, especially Tein Horng Yuan.

Power management

28 Apr 1999: Allon Percus writes that he's successfully gotten power-off to work by hacking the /etc/rc.d/init.d/halt script as follows: change

command="halt"

to:

command="halt -p"

I've gotten news that a (2.0.35) kernel compiled with APM_NOINTS turned off works fine, including hibernation mode. Thanks to D Sen and Olav Kvittem for pointing this out. Olav writes:

> + My TP600 with Linux 2.0.35 and 2.1.117 hangs when returning from Suspend.
> + The screen comes back fine.
> + Anyone that knows about a cure og owrk going on to fix it ?
> 
> My tp560e was doing this too. I had to undefine APM_NOINTS, i.e.:
> 
> #undef APM_NOINTS
> 
> in the drivers/char/apm_bios.c. This fixed the hanging problem out
> of suspend. Maybe it will for you too.

Yes it did indeed - now everything - even hibernation swings !-)

This should be put into the Linux on TP600 pages like
the ones pointed to by http://www.cs.utexas.edu/users/kharker/linux-laptop/ :
http://www.levien.com/tp600.html

My kernel is 2.0.35 and set up like :
CONFIG_APM=y
# CONFIG_APM_IGNORE_USER_SUSPEND is not set
# CONFIG_APM_DO_ENABLE is not set
CONFIG_APM_CPU_IDLE=y
CONFIG_APM_DISPLAY_BLANK=y
CONFIG_APM_POWER_OFF=y
# CONFIG_APM_IGNORE_MULTIPLE_SUSPEND is not set


> 
> My backlight still doesn't come on when I resume 50% of the time. The
> machine runs when this happens and I can usually get the backlight to
> come on on a second suspend/resume cycle, but I think this is an 
> unrelated problem with the tp56e.

I run the XBF_NeoMagic-driver from Redhat that works fine except
problems with rightshifting the
display 50 pixels or so when returning from an external screen.
Reset by changing display-mode (Ctrl-Alt-KP+/-).

> See ya, -ingo

Thanks - have a nice net-day !-)

Olav

Other issues

Gregory Wright reports that he has to use the boot prompt option floppy=nodma to get floppies to mount (otherwise it hangs). He's using RedHat 5.1 (kernel 2.0.34). I didn't see any problems with this in RH 5.0, but it does seems to be necessary for 5.1. Gregory speculates that some of the recent changes to the kernel's floppy driver may have broken something. Update: Tein Horng Yuan reports that compiling a 2.0.35 kernel with the "Include IDE/ATAPI FLOPPY Support(new)" option enabled makes the floppy work without the nodma flag.

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.

Someone named Andrew reports that Linux is only able to see 64MB of his 96MB RAM (lucky guy!). He tried FreeBSD too, which saw all the RAM, but died when it started using the EIDE controller when configured > 64MB. Update: Tein Horng Yuan and D Sen both report that adding "mem=95M" (or memory size - 1 in general) to the boot options solves the problem.

Currently open issues

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

Terence Hoosen would like to set up SVGATextMode with RedHat 5.1.

Sound goes haywire after a suspend or hibernate. Any ideas?

4 April 1999: Yep, 2.2.x kernels seem to be working, but power-off has to be hacked a bit (see above)

I found this FAQ on upgrading the hard disk. Apparently, the TP600 upgrade drives are about 3 times as expensive (!) as the Travelstar ones. Anyone have experience upgrading?

Links

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

Last update: 10 Oct 1998

* www.levien.com