Linux on the Thinkpad R31
On this webpage you find some information about the
adventure of using GNU/Linux on my IBM Thinkpad R31.
Maybe this is usefull for you. In any way, have
fun!
Description of the R31
The notebook comes with a 1.13 GHz Intel Celeron processor, Intel chips for video and sound, 128 Mb memory of which 8 Mb is used for the display, a 14.1" TFT-display (1024x768 @ 60 Hz). The harddisk is 10 Gb, devided in a so-called "hidden" partition of about 2 Gb from which the Microsoft XP Home Edition Windows can be re-installed and a 8 Gb partition where this XP Home Edition is supposed to live. The machines comes without a floppydrive, it hosts a CD-ROM-player instead.
In the Netherlands this model comes with a so-called Dutch keyboard layout, which really is a great mistake.
The keyboard works fine (although working a couple of month
only only on the laptop resulted in some pain in the upper
arms), but the white ink on the keys wear quite fast.
Also the temperature-management seems to be fine. I have had
several times uptimes over a week with high cpu-loads (0% idle)
without any problems or disturbing fan-noises (yes, I should
not have run those programs on a laptop, but the R31 is the
fastest machine I have available :-).
The machine can playback divx-movies, but when going to full-screen mode mplayers complains about lack of computingpower and I have to add the framedrop switch. The result is fine though (even when hooked up to a beamer :-)
Making room for GNU/Linux
Because I haven't decided yet if I want to keep the XP that
comes with the laptop, I choose to go for a dual boot. I put a
Linux installation-CD in the CD-ROM-drive, booted from that CD
and choose for rescue. Using fdisk I repartitioned the 8 Gb
XP-partition into a smaller primary partition (2.9 Gb) and an
extended partition, in which I set up a Linux-partition and a
Linux swap space.
Then I rebooted and hit <F11> in order to let the
IBM-installed rescuer do it's work. When the XP was back up and
running on it's new smaller partition, I installed Debian (sid)
on the new created space.
Update: XP is removed completely. I didn't use it at all.
Framebuffer
When in text-mode, I had to use a framebuffer in order to
get a proper display. This is what I added in my
lilo.conf:
vga=0x305
/proc
Below some interresting stuff copied from the /proc directory.
/proc/cpuinfo
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 11 model name : Intel(R) Celeron(TM) CPU 1133MHz stepping : 1 cpu MHz : 1133.216 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse bogomips : 2260.99
lspci -vv
00:00.0 Host bridge: Intel Corp. 82830 830 Chipset Host Bridge (rev 04)
Subsystem: IBM: Unknown device 1017
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
Latency: 0
Region 0: Memory at <unassigned> (32-bit, prefetchable)
Capabilities: <available only to root>
00:02.0 VGA compatible controller: Intel Corp. 82830 CGC [Chipset Graphics Controller] (rev 04) (prog-if 00 [VGA])
Subsystem: IBM: Unknown device 0505
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin A routed to IRQ 11
Region 0: Memory at 98000000 (32-bit, prefetchable) [size=128M]
Region 1: Memory at 90100000 (32-bit, non-prefetchable) [size=512K]
Capabilities: <available only to root>
00:02.1 Display controller: Intel Corp. 82830 CGC [Chipset Graphics Controller]
Subsystem: IBM: Unknown device 0505
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0 (2750ns max)
Region 0: Memory at 88000000 (32-bit, prefetchable) [size=128M]
Region 1: Memory at 80200000 (32-bit, non-prefetchable) [size=512K]
Capabilities: <available only to root>
00:1d.0 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #1) (rev 02) (prog-if 00 [UHCI])
Subsystem: IBM: Unknown device 1017
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin A routed to IRQ 11
Region 4: I/O ports at a4a0 [size=32]
00:1d.1 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #2) (rev 02) (prog-if 00 [UHCI])
Subsystem: IBM: Unknown device 1017
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin B routed to IRQ 11
Region 4: I/O ports at a4e0 [size=32]
00:1d.2 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #3) (rev 02) (prog-if 00 [UHCI])
Subsystem: IBM: Unknown device 1017
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin C routed to IRQ 11
Region 4: I/O ports at a800 [size=32]
00:1e.0 PCI bridge: Intel Corp. 82801BAM/CAM PCI Bridge (rev 42) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 00007000-00007fff
Memory behind bridge: 80100000-801fffff
BridgeCtl: Parity- SERR- NoISA+ VGA- MAbort- >Reset- FastB2B-
00:1f.0 ISA bridge: Intel Corp. 82801CAM ISA Bridge (LPC) (rev 02)
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
00:1f.1 IDE interface: Intel Corp. 82801CAM IDE U100 (rev 02) (prog-if 8a [Master SecP PriP])
Subsystem: IBM: Unknown device 1017
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin A routed to IRQ 11
Region 0: I/O ports at a830 [size=8]
Region 1: I/O ports at a848 [size=4]
Region 2: I/O ports at a860 [size=8]
Region 3: I/O ports at a878 [size=4]
Region 4: I/O ports at a890 [size=16]
Region 5: Memory at 10000000 (32-bit, non-prefetchable) [size=1K]
00:1f.3 SMBus: Intel Corp. 82801CA/CAM SMBus (rev 02)
Subsystem: IBM: Unknown device 1017
Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin B routed to IRQ 11
Region 4: I/O ports at 8000 [size=32]
00:1f.5 Multimedia audio controller: Intel Corp. 82801CA/CAM AC'97 Audio (rev 02)
Subsystem: IBM: Unknown device 0500
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin B routed to IRQ 11
Region 0: I/O ports at 9800 [size=256]
Region 1: I/O ports at 9c00 [size=64]
00:1f.6 Modem: Intel Corp. 82801CA/CAM AC'97 Modem (rev 02) (prog-if 00 [Generic])
Subsystem: IBM: Unknown device 0503
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin B routed to IRQ 11
Region 0: I/O ports at a000 [size=256]
Region 1: I/O ports at a400 [size=128]
01:08.0 Ethernet controller: Intel Corp. 82801CAM (ICH3) Chipset Ethernet Controller (rev 42)
Subsystem: IBM: Unknown device 1031
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 66 (2000ns min, 14000ns max), cache line size 08
Interrupt: pin A routed to IRQ 11
Region 0: Memory at 80100000 (32-bit, non-prefetchable) [size=4K]
Region 1: I/O ports at 7000 [size=64]
Capabilities: <available only to root>
01:09.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus Controller (rev 02)
Subsystem: IBM: Unknown device 1017
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 168, cache line size 08
Interrupt: pin A routed to IRQ 11
Region 0: Memory at 80101000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=01, secondary=02, subordinate=05, sec-latency=176
I/O window 0: 00007400-000074ff
I/O window 1: 00007800-000078ff
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite+
16-bit legacy interface ports at 0001
/proc/interrupts
CPU0
0: 281528 XT-PIC timer
1: 6256 XT-PIC keyboard
2: 0 XT-PIC cascade
11: 45491 XT-PIC Texas Instruments PCI1410 PC card Cardbus Controller, usb-uhci, usb-uhci, usb-uhci, eth0, Intel ICH3
12: 13557 XT-PIC PS/2 Mouse
14: 7463 XT-PIC ide0
15: 3 XT-PIC ide1
NMI: 0
LOC: 281170
ERR: 0
MIS: 0
Kernel modules
/etc/modules.conf
alias sound-slot-0 i810_audio pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || : options sound dmabuf=1 alias synth0 opl3 options opl3 io=0x388 options cs4232 isapnp=1 alias eth0 eepro100 alias sound-slot-2 ad1848 post-install sound-slot-2 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 || : pre-remove sound-slot-2 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || : alias char-major-10-134 apm alias /dev/apm_bios /dev/misc/apm_bios alias /dev/misc/apm_bios apm alias tty-ldisc-11 irtty alias char-major-161 ircomm-tty alias char-major-60 ircomm_tty alias /dev/ppp ppp_generic alias char-major-108 ppp_generic alias tty-ldisc-3 ppp_async alias tty-ldisc-14 ppp_synctty alias ppp-compress-21 bsd_comp alias ppp-compress-24 ppp_deflate alias ppp-compress-26 ppp_deflate alias /dev/tts serial alias /dev/tts/0 serial alias /dev/tts/1 serial alias /dev/tts/2 serial alias /dev/tts/3 serial post-install serial /etc/init.d/setserial modload > /dev/null 2> /dev/null pre-remove serial /etc/init.d/setserial modsave > /dev/null 2> /dev/null ### update-modules: start processing /etc/modutils/thinkpad path[thinkpad]=/lib/modules/uname -r`/thinkpad #options thinkpad enable_smapi=1 enable_superio=1 enable_rtcmosram=1 enable_thinkpadpm=1 alias char-major-10-170 thinkpad alias /dev/thinkpad thinkpad alias /dev/thinkpad/thinkpad thinkpad alias /dev/thinkpad/smapi smapi alias /dev/thinkpad/superio superio alias /dev/thinkpad/rtcmosram rtcmosram alias /dev/thinkpad/thinkpadpm thinkpadpm alias parport_lowlevel parport_pc alias char-major-10-144 nvram alias binfmt-0064 binfmt_aout alias char-major-10-135 rtcThere is here some cleaning up to do, Debian comes with quite a large modules.conf.
Sound is working, the grey IBM-soundvolume-keys don't seem to have any effect. Dont know yet if this could be solved.
Also the network-interface does it's work properly.
Update: Lukasz Walewski pointed me to the Thinkpad Buttons page (see "links", below), the keys can do their work (haven't tried that yet, but soon will).
I haven't have tried the modem nor the irda-stuff yet.
X-Configuration
In order to get X working on this laptop, XFree86 4.2.0 had
to be installed as well as a 2.4 kernel.
I was happy to find testing packages for XFree 4.2 and put them
in my sources.list.
By pressing <Fn-F7> the laptop-output can be switched between only TFT, only external VGA and both. This works as expected, which is great when doing presentations using a beamer :-)
I have not been able to get the S-VHS-connector in the back working. With XP this was possible, so the hardware is OK. If somebody can give me a hint on this matter, I would be very grateful.
/etc/X11/XF86Config-4
Section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
FontPath "unix/:7100"
EndSection
# Module loading section
Section "Module"
Load "dbe" # Double-buffering
Load "type1" # Adobe Type 1 font handler
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "XkbLayout" "nl"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Device" "/dev/psaux"
Option "Protocol" "PS/2"
Option "Emulate3Buttons" "off"
Option "ZAxisMapping" "4 5"
EndSection
Section "Monitor"
Identifier "My Monitor"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 31.5 - 48.5
VertRefresh 50-70
Option "dpms"
EndSection
Section "Device"
Identifier "Intel Corp.|82830 CGC [Chipset Graphics "
Driver "i810"
BoardName "Unknown"
VideoRam 0
EndSection
Section "Device"
Identifier "Linux Frame Buffer"
Driver "fbdev"
BoardName "Unknown"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Intel Corp.|82830 CGC [Chipset Graphics "
Monitor "My Monitor"
DefaultDepth 24
Subsection "Display"
Depth 24
Modes "1024x768"
EndSubSection
EndSection
PCMCIA
I was able to mount a CompactFlash-card through a PCMCIA-CompactFlash-card adapter.
USB
The daily use of the R31 led to some pain in the upperarms.
Now I do most of the time work with an USB-keyboard (there is
no "normal" keyboard-connector on the back of the laptop) and
an USB-mouse (same reason). The keyboard is from HP, the mouse
is a Logitech scroll-mouse.
The both work well. I load the following modules to use
them:
- input
- usb-uhci
- keybdev
Option "Device" "/dev/input/mice"
Option "Protocol" "IMPS/2"
Option "Buttons" "5"
Option "Emulate3Buttons" "off"
Option "ZAxisMapping" "4 5"
The keyboard
Using this laptop is quite a shocking experience, because of
the descision of IBM to put a "Dutch" keyboard in it.
First of all I don't see why this keyboard should be more
efficient to use then f.e. a standard US keyboard for typing
Dutch language. What makes this keyboard layout really a pain
in the behind is the fact that the following keys are moved to
a very different position:
- : (probably the most used key in vim, exept perhaps the <Esc>-key)
- ; (envision yourself writing some piece of source-code)
- ~ (painful when using vim)
- <
- >
- [
- ]
- {
- }
- /
- \
- =
- "
In the XF86Config-4 you see a line
Option "XkbLayout" "nl"
Unfortunately, this is not enough. In the modmap I also had to change the definition of some keys.
Mailing-list
Robos from Aachen created a IBM R31 mailinglist!
For more information, please see http://rnbhq.org/cgi-bin/mailman/listinfo/
Usefull links
There are some very informative R31-related pages out there:
- http://web.qx.net/jonatha/r31/main.htmlby Jonathan Edwards
- http://www.axu.de/steff/ by Stephan Fuhrmann
- http://tim.suttonfamily.co.uk/modules.php?name=News&file=article&sid=1 by Tim Sutton
- http://lpn.rnbhq.org/R31/R31.shtml by Robos
- http://www.nongnu.org/tpb/ Thinkpad Buttons by Markus Braun
- http://swoosh.enemy.org/misc/r31/sound.txt (haven't seen this page yet due to a 500-error ...)
- See also http://tuxmobil.org/ibm.html
Credits
- Thanks Jonathon Edwards for pointing me to his pages and providing some links.
- Thanks Robos for creating the R31-mailingiist and telling me that the modem now works, too :-)
- Thanks Sebastian Sauer for pointing us to the ALSA-page
- Thanks Lukasz Walewski for pointing me to Markus Braun's Thinkpad Button Page
The end
At this moment, I can't tell much more. Linux can run easely
on this system, that is for sure.
There is a lot of work that needs to be done:
- Powermanagement (as soon as my current project is done, I can finally solve this - at this moment I don't dare to tinker with anything, not even an apt-get upgrade :-)
- Modem (haven't tried Robos solution yet)
- IBM-specific things (haven't tried any special stuff yet)
- IrDA and powersafestuff
- And probably a lot more ...
| Walk through this site | |
| ← previous page | next page → |
![[tux]](/i/tuxsm.png)






