IBM
Thinkpad 240x
Updated 15 March 2001
I wrote this page originally to document my experiences with installing
and using RedHat 6.2 on my new Thinkpad 240X. Recently, I got tired
of waiting for RedHat to release 7.1 (with all of the issues surrounding
the GCC packages in RedHat 7.0, I decided not to touch it) and defected
to Mandrake 7.2 Since this page mostly discusses hardware and drivers,
it's still relevant, regardless of which distribution you use.
Of course, this page is still under construction. There are a
lot of unanswered questions, questions that need more detailed answers,
and, overall, I need to clean up the grammar. My goal for right now
was just to get some information out there quickly.
There are several web pages (found on Kenneth E. Harker's excelent
Linux
on Laptops page) about installing various Linux distributions
on Thinkpad 240's, but the 240 and 240x have some subtle differences.
Below, is a listing of of the major subsystems and their levels of support
within Linux. (Note that this is how *my* 240x was configured - check
yours carefully to make sure you have the same things.)
Since the 240x doesn't come with a CD-ROM, I planned to do the installation
via NFS, using one of my other Linux boxes to serve up the RedHat CD.
With the exception of some problems with the PCMCIA network drivers (see
below
for my rant on that subject) the install went quite smoothly. The
only glitch was that I had to specify a text install because the install
program choked when it tried to switch to graphical mode. This was
no great inconvienience, and except for the problems with the network card,
everything went smoothly. Once the installation was complete, there
were a few tricks required to get everything up and running and I've tried
to document those below.
Note: If you're interested in using Mandrake
7.2, see below for a brief synopsis of my experiences
installing it.
Video: Silicon Motion LynxEM+
-
XFree86 4.0.2 has arrived! Even better, it's got native support for
the LynxEM+. I installed it over the weekend and am pleased.
The xf86cfg program crashed on me, but it wasn't a big deal since I was
able to use my XF86Config file from 4.0.1 (At the request of a reader,
I've made the file available here
.)
-
I'm still having a few display problems with Netscape (parts of the screen
not being redrawn..) but for now, I'm assuming that this is a Netscape
problem.
-
XFree86 3.3.6 supposedly has native support (use the XF86_SVGA server),
but I had lot's of wierd problems.... If I disabled acceleration,
the display would look all right, but still wouldn't reset itself properly
when exiting from X.
-
Frame Buffer works driver works fine. Using it has both good and
bad points though:
-
Good: Allows one to use the full 800x600 resolution in text mode.
(Gives you 100x37 characters.)
-
Bad: If I understand this right, the video is always in 'graphics
mode'. That is, the characters on the console are rendered as graphics.
This is slower than the usual way of just sending text to the screen, and
is particularly noticeable when one scrolls a screen full of text.
It will actually cause music from Xmms to skip when one scrolls through
a large file (I think because the CPU is so busy dealing with screen redraws
that it doesn't have time for Xmms....)
-
Bad: Trying to use either of the faster scrolling methods (ywrap
and ypan) hung the system at boot. (See the vesafb.txt file in /usr/src/linux/Documentation/fb
)
-
Bad: No acceleration in X.
-
For more information, check out http://www.linux-fbdev.org
-
Right now, I'm using the accelerated driver in X and the frame buffer for
the text consoles and I'm reasonable happy with that.
Sound: Crystal Sound 4281
-
Kernel version 2.2.18 has been officially released. You probably
want to upgrade your kernel as this version fixes some bugs in the sound
driver that were present in 2.2.17. (I finally have - just in time
for 2.4.0..;)
-
A visiter to this sight (there actually are a few - wow! :) was kind enough
to email me and let me know that the latest version of the Alsa sound drivers
also support this chipset. I haven't had a chance to mess about with
these drivers (and given the quality of the driver in the kernel, it's
not a real priority of mine, either), but if you want to try them out,
their homepage is here.
-
The OSS site says that you should disable apmd prior to loading the sound
driver, but this doesn't seem to be necessary on my setup (YMMV).
-
Several sites have mentioned that you should unload the sound module before
entering standby or susbend modes. This seems to be the case for
me, as well. Luckily, RedHat has made this easy to do:
-
Edit (as root) the file /etc/sysconfig/apmd
-
Near the bottom of the file you should find three entries for sound: RESTORESOUND,
RESTORESOUNDPROGS and SOUNDMODULES
-
Change the RESTORESOUND line to read: RESTORESOUND="yes"
-
Change the SOUNDMODULES line to read: SOUNDMODULES="cs4281 soundcore"
-
Optionally, you can also change the RESTORESOUNDPROGS line from "no" to
"yes", but I didn't bother
-
Occasionally, the module will fail to load, and spit out a message
to the effect that it couldn't calibrate the codec. I haven't been
able to figure out the exact conditions that this occurs, (or even what
it really means) but the only way I've found to fix it is to shut down
and power off. (Simply restarting doesn't help.) If you load
the driver at boot time, you'll probably have no troubles.
-
I haven't figured out how to make it play midi files. I can
play them in Windows, so I know the card has the hardware. Does the
driver not activate it? It's not a big deal, since I've pretty much
converted to mp3's, but I'm curious....
-
I'm no audiophile, but sound quality through a decent pair of headphones
is just fine. The single 1" diameter speaker really isn't good for
anything more complicated than a system beep or two, but that's to be expected.
APM:
-
Battery life doesn't seem too great, (2 hours?) but I'm still looking at
this....
-
Standby and Suspend modes work just fine.
-
Automatic suspend on lid close and resume on lid open.
-
Hibernate mode:
-
Good news: Works just fine. And the BIOS even pops up a slick graphic
while the process runs...
-
Bad news: The progress bar that is part of the aformentioned graphic
appearantly has no basis in reality - it shows 100% complete long before
the hibernation is complete.
-
I have my computer set up to hibernate to a file on a FAT32 partition (this
is sort of the default) but another reader has told me that you can, in
fact, set up a "hibernation partition" and thus do away with the FAT partition
completely. His instructions are here
.
Modem: Lucent LTModem
I was visiting my family over the holidays and had a chance use the
modem pretty extensively for a couple of weeks (ie: I had to leave my cable
modem behind and use my Dad's dial-in account....) and here's what I found
out:
-
There's a new driver available as source code! Get it from LinModems.org.
The instructions were pretty good, and compiling it was a snap under 2.2.18.
(Haven't tried under 2.4.x, yet, though that's supposed to work as well.)
I don't use dial-up internet access, so I haven't been able to test it
with PPP, but I did get it to take the phone off hook and dial a number.
For good measure, the instructions also explain how to set up the driver
so that it is loaded by the kernel as needed. On the whole, I'm quite
happy.
With the release of the source code version of the driver, the following
pretty much obsolete:
-
The binary-only driver that Lucent released will work just fine with 2.2.18pre18
(and presumably 2.2.18) providing that you don't mind making a minor change
to part of the serial code, and recompiling your kernel. (Detailed
instructions are available here.)
-
Use 'insmod -f ltmodem' to insert the driver (the driver is compiled
for 2.2.12-20, so ignore the warning messages).
-
Assuming that you've followed the directions that came with the driver,
you will now have a modem attached to /dev/ttyS14 that will work just like
a 'regular' modem. Just fire up your favorite dial-up script and
you'll be surfing in no time....
-
Note: From what I've heard (I haven't actually tried, yet) this driver
won't work at all with the 2.4 series of kernels. It looks like it's
time to pester Lucent to just release the source code...
-
Some folks are also working on an open-source driver, but it doesn't seem
to be progressing too fast.
-
More information is also available at Linmodems.org
IrDA: The findchip util reports an NSC PC87338
-
2.2.17 has native FIR support, but I had a little trouble getting the module
to load at first.
-
I had to update the BIOS to the most recent, and then make sure that IrDA
was enabled in the BIOS.
-
Once I did this, the nsc_irda.o module loaded fine and the messages in
the syslog seem to indicate that everything is working fine, but I don't
have any other IR devices to try it on.
-
ir_comm also seems to work, but again, I haven't actually tested
it....
USB: Haven't tried this yet....
-
The drivers load and the messages in the syslog seem to indicate
that everything is working. I don't have any USB devices, though,
so I don't know.
Wish List (in rough order of importance):
-
Proper XFree86 Drivers. Unaccelerated X is just too slow.
(You can actually count the number of redraws after resizing a Netscape
window..) NOTE: This one looks like it's about to come true! (See
above :)
-
Ability to use the full 800x600 resolution in console mode *without* resorting
to the frambuffer - perhaps by using SVGATextMode?
-
Faster scrolling with the frame buffer. (This is probably a hardware
issue, and so can't be fixed.)
If anyone figures out a solution to any of these things, I'd love to hear
about it. You can email me at the address below.
Carrying Case:
If you're looking for a minimalistic carrying case for your 240,
check out the Case Logic PSC1. It's designed to carry a Sony Playstation,
and is just the right size for a 240. It doesn't offer a lot of protection,
and you won't be able to carry much other than the computer, but if you
don't want to lug around a traditional computer briefcase (which is probably
too big to hold a 240 securely anyway...) then this is case is perfect.
There's some pictures of it at Case Logic's website.
The front pocket is large enough for a spare battery, but I'd be careful
putting a floppy or cd drive in there as it has almost no padding.
Another reader has also reported that the Day Traveler Wanderer (made
by Eagle
Creek) is also a good fit. More details about this bag are available
here.
A word on network cards: If your time
is at all valuable to you, go with 3Com cards!!! I speak from experience:
3Com cards install and work more smoothly and reliably than cards from
any other manufacturer. (Not just with Linux, or laptops, but in
general...) Case in point: When I ordered my 240x, I also ordered
a Linksys Etherfast 10/100 cardbus PCMCIA card. Since the 240 lacks
a CDROM, I planned on doing an NFS install. Not only did the PCMCIA
drivers not recognize the Linksys card, they hung the computer! After
much gnashing of teeth, I went to the local CompUSA and purchased a D-Link
10/100 card (non-cardbus). It didn't work either. Finally,
I managed to disassemble the RedHat install disk, compile new PCMCIA drivers
from the latest version of the source code and build a new, custom PCMCIA
install disk. The Linksys card *still* didn't work, though the D-Link
card did. (In fact, I never did get that card to do anything except
crash my system; I finally just returned it.)
A few days later, I borrowed a 3Com 10/100 cardbus card from a friend,
stuck it in, booted up using the standard 6.2 PCMCIA install disk, and
everything went great. (This was just a test - by this time, I'd
already installed RedHat using the D-Link card...)
The moral of the story: For ease of use and painless installation,
go with 3Com. If, however, you feel you computing experience isn't
complete without stress, frustration and several reboots, then by all means,
buy another manufacturer's card......
Mandrake Users:
I recently decided to replace RedHat 6.2 with Mandrake 7.2. Since
I have another computer, the easiest thing to do was copy all of my important
files onto its drive, then reformat my laptop's drive and to a fresh install.
The install went very easily and the only problem I had was with X.
Mandrake 7.2 comes with XFree86 4.0.1, which doesn't work with the LynxEM+
video chipset. I decided to skip the X setup during the install and
deal with it later.
Installing XFree86 4.0.2 turned out to be a bit of a challenge - the
source RPM that I got failed to build, and the precompiled RPM's wanted
me to upgrade to GLIBC 2.2 Upgrading to GLIBC 2.2 unfortunately caused
some other problems with the C++ libraries. In the end, I found that
the easiest thing to do was to not upgrade any RPMS, but to download part
of 4.0.2 precompiled from the XFree86.org site. Specifically, I downloaded
the Xxserv.tgz and Xmod.tgz files. After I unpacked those in the
correct directories, and copied my old XF86Config file back to /etc/X11
(and renamed it XF86Config-4, which is appearantly what XFree86 defaults
to now), I had a working XFree86 4.0.2 server.
I don't like bypassing the RPM system like this, since it means
that my RPM database is probably no longer accurate. But, this method
works and when Mandrake 8.0 comes out (it should include XFree86 4.0.2),
I'll upgrade everything, and my RPM database will be accurate again.
A few other Mandrake specific tidbits:
-
Neither sound nor networking seem to come back properly after a resume.
I need to look at apm scripts some more. This worked fine on RedHat
6.2, so I may end up replacing the apm RPM from Mandrake with the
one from RedHat.
-
For those of you who use DHCP to connect to you network and like to
compile your own kernels, be aware that the DHCP client in the Mandrake
distribution (dhclient) requires you to enable Packet sockets and Socket
Filtering (CONFIG_PACKET and CONFIG_FILTER) in your kernel configuration.
Once I did that, though, DHCP worked just fine.
Questions, comments and (especially) fixes, solutions
and tips can be mailed to Ross_Miller@baylor.edu
Note: The Thinkpad images used on this page were
snagged from IBM's web site. I hope they don't mind....