Linux on the Toshiba Satellite Pro 430CDS

Linux on the Toshiba Satellite Pro 430CDS Notebook


ares (1997-2004)
My 430CDS ceased to function on May 2004, from board corrosion by leaking battery fluid by the internal clock batteries. It served me for 7 years, and was continuously used until I bought its replacement, a Toshiba Satellite 3000-601, in May 2002.


Introduction
The Toshiba Satellite Pro 430 CDS is a notebook with a Pentium 120 Processor, equipped with 16MB EDO RAM, a 1.26GB hard disk, a 10x CD-ROM, and a external floppy drive swappable with the internal CD-ROM. I consider it to be a very good computer for running Linux. For more information, consult the Toshiba specs page or the Detailed Specs PDF Document. This document tries to describe my experience with the installation of Linux on this notebook. I also describe the options I used when compiling kernel 2.0.30 to customize it to my needs.
Since the 430 has now been discontinued, and all the hardware support is already in the main releases, I do not plan to update this page anymore. Thanks to all the thousands of visitors!. Please don't ask me to include links to your site. If I thought your site should have a link, I would already have included it.

Installation:
  • The first time you turn the computer on, it boots Windows and asks you if you want to use Windows 95 (4.00.1111) or Windows for Workgroups (3.11). After it has installed itself, you can then proceed to make the diskettes for the OS you have chosen (about 40 disks total). After all this, it is (finally) time to begin installing Linux.
  • I used FIPS to split the disk in two partitions. I left a big one in the vfat file-system (I use it for shareable files, like this page), about 800MB in size, and the rest for Linux (500MB).
  • I used RedHat, on CD and the autoboot feature to install Redhat 4.0 direct from the CD, without any floppy (this uses an executable to start a DOS boot program from the CD-ROM).
  • The installation is almost the same for this computer as for any other PC. When asked about the type of mouse answer PS/2, since the pointing stick is a PS/2 mouse. In the XFree setup, choose only the SVGA driver. Probably there is an option to select the graphics chipset, choose the Chips and Technologies set.
  • Mission accomplished. You now have a Notebook running Linux.
  • I recommend a kernel recompilation, to make the sound driver work, and also to get rid of all the unnecessary drivers. As long as you're doing it, add the noblink patch, as it is very useful to avoid having to make a cursor search every time you are using a console program (e.g. joe). The included patch fails, so download also a patch for the recent kernels, available in the same site.

Common Problems:
  • Several times through this document I mention the problem of interrupt conflicts. Usually they are introduced by the PCMCIA card services stealing irq 12 from the mouse. Interrupts are a very limited resource in this notebook (as in all multimedia PCs), as you can see by my assignment of interrupts:
     0 System timer               6 Floppy Controller  12 PS/2 mouse
     1 Keyboard                   7 ECP parallel port  13 FPU
     2 2nd Interrupt Controller   8 Clock              14 1st IDE interface
     3 serial port 2 (IrDA)       9                    15 2nd IDE interface
     4 serial port 1             10
     5 Sound card                11
    
    I recommend a change of interrupts for the Sound card from the factory default of irq 10 to irq 5, since many DOS games cannot use a Sound Card above irq 7. To do this, run TSETUP.EXE or press F1 during boot to change the BIOS settings.
  • If you are using a XFree version prior to 3.3, my advice is to upgrade to 3.3 ASAP. The older versions are very buggy, causing frequent lockups.
  • A very common problem is the lack of any sound coming from the CD. This happens because the sound driver initializes with the CD output at level 0. To solve this problem, get a mixer utility from Metalab or any other Linux ftp site, and manually set the CD level whenever you get this problem.

X-Windows:
Starting from version 3.2, XFree86 has support for the Chips & Technologies CT65550 that the 430 uses. However, this support is only stable on version 3.3. If you use 3.2, you should be experiencing a lot of lockups, I would advise you to upgrade to 3.3. Until then, maybe setting option "noaccel" will help you, at the expense of slower performance.
I have reports from 430CDT users that at 800x600 16 bits-per-pixel and up, "snow" appears on the screen. This problem is also solved by option "noaccel".
XFree is running perfectly now, with no problems whatsoever. It supports both 640x480 and 800x600 directly on the Dual Scan Display. I used XSetup to make my XF86Config file, but it only gave me 640x480 max resolution. I had to alter it to give me 800x600. Don't bother to use 640x480, although the new version supports image stretching (a lower resolution is simulated using a higher resolution), the image is not so good and the cursor hot-spot is not on the same point as the cursor (/usr/X11R6/lib/X11/doc/README.chips has details on how to solve this).

XF86Config (excerpt)

Section "Pointer"
   Protocol        "PS/2"
   Device          "/dev/mouse"
   Emulate3Timeout 50
   Emulate3Buttons
EndSection

Section "Monitor"
   Identifier      "Laptop Screen"
   VendorName      "Toshiba"
   ModelName       "DD-STN"
   HorizSync       31.5-43
   VertRefresh     40-75
# VESA 800x600@60Hz Non-Interlaced mode Horizontal Sync = 37.9kHz
   Modeline  "800x600"    40.00 800 840 968 1056 600 601 605 628 +hsync +vsync
# VESA 640x480@72Hz Non-Interlaced mode Horizontal Sync = 37.9kHz
   Modeline  "640x480"    31.50 640 664 704 832 480 489 492 520
EndSection

Section "Device"
   Identifier      "Chips & Technologies CT65550"
   VendorName      "Chips & Technologies"
   BoardName       "CT65550"
EndSection

Section "Screen"
   Driver          "SVGA"
   Device          "Chips & Technologies CT65550"
   Monitor         "Laptop Screen"
   BlankTime       2
   SuspendTime     5
   OffTime         10
   DefaultColorDepth 16
   SubSection "Display"
      Depth        8
      Modes        "800x600"
      ViewPort     0 0
   EndSubSection
   SubSection "Display"
      Depth        16
      Modes        "800x600"
      ViewPort     0 0
   EndSubSection
   SubSection "Display"
      Depth        24
      Modes        "800x600"
      ViewPort     0 0
   EndSubSection
   SubSection "Display"
      Depth        32
      Modes        "800x600"
      ViewPort     0 0
   EndSubSection
EndSection

XFree Startup message

XFree86 Version 3.3 / X Window System
(protocol Version 11, revision 0, vendor release 6300)
Release Date: Jun  2 1997
    If the server is older than 6-12 months, or if your card is newer
    than the above date, look for a newer version before reporting
    problems.  (see http://www.XFree86.Org/FAQ)
Operating System: Linux 2.0.30 i586 [ELF] 
Configured drivers:
  SVGA: server for SVGA graphics adaptors (Patchlevel 0):
      .....
      cl6412, cl6420, cl6440, video7, ct65520, ct65525, ct65530, ct65535,
      ct65540, ct65545, ct65546, ct65548, ct65550, ct65554, ct64200,
      ct64300, ark1000vl, ark1000pv, ark2000pv, ark2000mt, mx, realtek,
      AP6422, AT24, s3_virge, generic
(using VT number 7)

XF86Config: /usr/X11R6/lib/X11/XF86Config
(**) stands for supplied, (--) stands for probed/default values
    XIE extension module for XFree86 3.3 
(**) module xie.so successfully loaded from /usr/X11R6/lib/modules
    PEX extension module for XFree86 3.3 
(**) module pex5.so successfully loaded from /usr/X11R6/lib/modules
(**) XKB: rules: "xfree86"
(**) XKB: model: "pc102"
(**) XKB: layout: "pt"
(**) Mouse: type: PS/2, device: /dev/mouse, baudrate: 1200,
       3 button emulation (timeout: 50ms)
(**) SVGA: Graphics device ID: "Chips & Technologies CT65550"
(**) SVGA: Monitor ID: "Laptop Screen"
(**) FontPath set to "/usr/X11R6/lib/X11/fonts/misc:unscaled,/usr/X11.....
(--) SVGA: CHIPS: chip revision: 69
(--) SVGA: Chipset: ct65550 
(--) SVGA: CHIPS: no monitor detected.
(--) SVGA: CHIPS: 2048 kB VRAM
(--) SVGA: CHIPS: DD-STN probed.
(--) SVGA: CHIPS: LCD
(--) SVGA: CHIPS: Display Size: x=800; y=600
(--) SVGA: CHIPS: Frame Buffer used.
(--) SVGA: CHIPS: Using embedded Frame Buffer.
(--) SVGA: CHIPS: Frame Accelerator Enabled.
(--) SVGA: CHIPS: VL Bus
(--) SVGA: CHIPS: base address is set at 0x7000000.
(--) SVGA: CHIPS: Linear addressing is enabled at 0x7000000.
(**) SVGA: CHIPS: 16 bpp.
(--) SVGA: CHIPS: Internal DAC disabled.
(--) SVGA: CHIPS: using programmable clocks.
(--) SVGA: chipset:  ct65550
(--) SVGA: videoram: 2048k
(**) SVGA: Using 16 bpp, Depth 16, Color weight: 565
(--) SVGA: Maximum allowed dot-clock: 80.000 MHz
(**) SVGA: Mode "800x600": mode clock =  40.000
(--) SVGA: Virtual resolution set to 800x600
(--) SVGA: SpeedUp code selection modified because virtualX != 1024
(--) SVGA: CHIPS: 1002752 bytes off-screen memory available
(--) SVGA: CHIPS: H/W cursor selected
(--) SVGA: CHIPS: SpeedUps selected (Flags=0xF)
(--) SVGA: CHIPS: Memory mapped I/O selected
(--) SVGA: Using XAA (XFree86 Acceleration Architecture)
(--) SVGA: XAA: Solid filled rectangles
(--) SVGA: XAA: Screen-to-screen copy
(--) SVGA: XAA: 8x8 pattern fill
(--) SVGA: XAA: 8x8 color expand pattern fill
(--) SVGA: XAA: CPU to screen color expansion (bitmap, TE/NonTE imagetext, TE/NonTE polytext)
(--) SVGA: XAA: Using 6 128x128 areas for pixmap caching
(--) SVGA: XAA: Caching tiles and stipples
(--) SVGA: XAA: Horizontal and vertical lines and segments


APM:
I used the apmd-2.4-1.i386.rpm in the RedHat CD to install the apm package (it was a contributed package). This package provides access to battery status information and may help you to conserve battery power, depending on your laptop and the APM implementation. If you use a recent kernel ( > 1.3.46), you will not need to apply any kernel patches. You should however compile the kernel with APM support, just answer yes to Advanced Power Management BIOS support in the Character Devices section while making make config or make menuconfig. After it is installed it provides a program to print battery status information, a program to display that same information in a nice bar graphic in X. It also provides a daemon to monitor the battery level, and can even warn you if it reaches a low level. You can also use this package to put the computer in stand-by and suspend mode. You can get apmd from the apmd for Linux page

APM kernel options (make menuconfig)

[*] Advanced Power Management BIOS support
[ ]    Ignore USER SUSPEND
[*]    Enable PM at boot time
[*]    Make CPU Idle calls when idle
[ ]    Enable console blanking using APM
[*]    Power off on shutdown
I enabled PM at boot time and CPU idle calls, because the kernel help mentions power savings when these options are enabled. I disabled Console Blanking, since this causes some problems when switching to graphics mode (the screen stays blank until you press a key). The other two options seem to work with none of the problems described in the kernel compilation helpfile.

kernel messages

APM BIOS version 1.2 Flags 0x02 (Driver version 1.2)
    Entry f000:dee3 cseg16 f000 dseg f000 cseg len ffff, dseg len ffff
    Connection version 1.1
    AC on line, battery status charging, battery life 100%
    battery flag 0x09, battery life 184 minutes

PCMCIA:
In order to use PCMCIA services, you have to install and run the pcmcia_cs package. This is already included in the RedHat CDs. I need to enable PCMCIA Card Services to use my Ovislink LS-PCM T2T Ethernet Card. I had previously problems with setting up this card. After it got damaged, I sent it to be repaired and I was given a new one. Because a certain amount of time passed, a newer version of pcmcia-cs was released. It works OK now, but I don't know how the problem was fixed. You can get the PCMCIA package from pcmcia-cs.sourceforge.net. The following is the file I use to configure pcmcia and the kernel messages when loading the PCMCIA modules:

/etc/sysconfig/pcmcia

PCMCIA=yes
PCIC=i82365
PCIC_OPTS="irq_list=9,10,11 poll_interval=100"
CORE_OPTS=
CARDMGR_OPTS=
poll_interval I use to spare the use of a interrupt, if you want to let card services use a interrupt for monitoring card status changes, remove this option.irq_list is used to avoid PCMCIA driver from assigning one of the already assigned interrupts. This last option is very important, since the card services usually steal the mouse interrupt, thus preventing access to the mouse, with this option set correctly that is impossible.

kernel messages

Linux PCMCIA Card Services 2.9.10
Intel PCIC probe: 
  Intel i82365sl B step at 0x3e0 ofs 0x00, 2 sockets
    host opts: none
    irq list (scanned) = 9,10,11 polled status, interval = 1000 ms
cs: IO port probe 0x0100-0x03ff: excluding 0x1f8-0x1ff 0x220-0x22f 0x378-0x37f 0x388-0x38f 0x3f8-0x3ff
cs: IO port probe 0x0a20-0x0a27: excluding 0xa20-0xa27
cs: memory probe 0x0c0000-0x0fffff: excluding 0xe4000-0xfffff
eth0: NE2000 Compatible: port 0x300, irq 9, hw_addr 00:A0:0C:11:5C:86

Sound:
The Toshiba 430CDS uses a ESS688 Audio Drive, which is supported by Linux under the Sound Blaster driver. This is a 16-bit Sound Blaster Pro compatible. The notebook comes with integrated speaker and microphone, but you can also connect an external microphone and/or speaker through standard jacks. The card is factory configured to use irq 10, but for DOS game compatibility I reassigned it to use irq 5. If you have problems not hearing the audio, please try to use a mixer program to set the output levels correctly. You will most certainly need to recompile the kernel to use the card, so here is my kernel setup for the sound (I use the sound driver as a module):

Sound kernel options (make menuconfig)

<M> Sound card support
Old configuration script  (For: SM Wave, PSS & AudioTrix Pro) -->
[ ] ProAudioSpectrum 16 support
[*] Sound Blaster (SB, SBPro, SB16, clones) support
[ ] Generic OPL2/OPL3 FM synthesizer support
[ ] Gravis Ultrasound support
[ ] MPU-401 support (NOT for SB16)
[ ] 6850 UART Midi support
[ ] PSS (ECHO-ADI2111) support
[ ] 16 bit sampling option of GUS (_NOT_ GUS MAX)
[ ] GUS MAX support
[ ] Microsoft Sound System support
[ ] Ensoniq SoundScape support
[ ] MediaTrix AudioTrix Pro support
[ ] Support for MAD16 and/or Mozart based cards
[ ] Support for Crystal CS4232 based (PnP) cards
[ ] Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers
[*] /dev/dsp and /dev/audio support
[ ] MIDI interface support
[*] FM synthesizer (YM3812/OPL-3) support
(220) I/O base for SB Check from manual of the card
(5) Sound Blaster IRQ Check from manual of the card
(1) Sound Blaster DMA 0, 1 or 3
(5) Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 or 7 (use 1 for 8 bit cards)
(330) MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card
(5) SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16
(65536) Audio DMA buffer size 4096, 16384, 32768 or 65536
[ ] Additional low level drivers

/dev/sndstat

Sound Driver:3.5.4-960630 (Wed Aug 13 23:13:38 WET DST 1997 root,
Linux localhost 2.0.30 #3 Mon May 26 00:00:04 WET DST 1997 i586 unknown)
Kernel: Linux ares 2.0.30 #1 Wed Aug 13 23:15:39 WET DST 1997 i586
Config options: 0

Installed drivers: 
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster

Card config: 
Sound Blaster at 0x220 irq 5 drq 1,5
OPL-2/OPL-3 FM at 0x388 drq 0

Audio devices:
0: ESS ES1688 AudioDrive (rev 6) (

Synth devices:
0: Yamaha OPL-3

Midi devices: NOT ENABLED IN CONFIG

Timers:
0: System clock

Mixers:
0: Sound Blaster

Pointing Stick:
In order to use the Pointing Stick you must have PS/2 mouse support compiled in the kernel. If you use modules, you only have to insmod psaux to load the mouse driver (or use kerneld). To make sure you have support, do cat /proc/misc, and you should see a line mentioning 1 ps2aux. If this line didn't appear, or there was some other error, you probably don't have mouse support in the kernel. To compile PS/2 mouse support in the kernel, you must answer yes to Mouse Support in the Character devices section, and then choose PS/2 mouse support. As you can see below, I use a kernel module, for this part. If you are not familiar with using and compiling kernel modules, please compile this device into the kernel by choosing Y.

Many persons have reported problems with the mouse. Usually this is a interrupt conflict with the PCMCIA card services. If you have problems, check /proc/interrupts to see if irq 12 is being used by the mouse. If it is not, then the device that is using irq 12 is responsible for your problem. If it is the PCMCIA card services, refer to the PCMCIA section.

PS/2 kernel options (make menuconfig)

[*] Mouse Support (not serial mice)
< > ATIXL busmouse support
< > Logitech busmouse support
< > Microsoft busmouse support
<M> PS/2 mouse (aka "auxiliary device") support
[ ] C&T 82C710 mouse port support (as on TI Travelmate)

SVGAlib:
SVGAlib 1.2.11 now has support for the Chips & Technologies 655xx chipset. You can download it from Metalab. I have used it, and I have found no problems. With this driver you get the SVGA and the highcolor modes that the CT65550 is able to display.
Fan:
There is a program in Jonathan Buzzard's page, to turn the fan on/off. This is a port of the DOS program that could be found previously in Toshiba's Downloads page (fan.zip). The documentation for all versions doesn't mention support for the T430, but I believe it works with all Toshiba models, and it works perfectly for me. I use it all the time when I am connected to the power supply.
Other Links:



Acknowledgements:
This page is based upon the pages for Linux on the Toshiba Satellite 100CS Laptop. My Thanks as well to David Hinds, for being so helpful with my problem with the PCMCIA card, David Bateman for providing me with a alpha XFree driver before 3.3, and of course Linus Torvalds, for making all this possible.
Disclaimer:
This is freely available information which comes with absolutely no guarantees. Use at your own risk. Neither I nor the persons responsible for the site in which this page is located work for or endorse Toshiba. All trademarks are the property of their respective owners.