Last modified: Fri Apr 9 16:06:01 EDT 1999
I needed a laptop to use for work, I needed one cheap, I needed one that was fairly powerful, and most importantly, I needed one that I could walk down to the store and pick up that day. So I wound up buying one of these somewhere around the middle of January 1999. (This document was originally written and put on the web around Jan 15 or so.)
Basically it works just fine. There really isn't all that much "interesting" to say about it except that it was much more painless than I had expected, even taking into account a very good previous track-record with Toshiba laptops.
* Now that I've been using it for a month or so, I find that in light use, the battery lasts for about 4 hours when the CPU can sleep a lot, and with heavy CPU-intensive activity, keeps it alive for about 2 hours. With little activity, letting it sleep when I'm not actively using it and plugging it into an external monitor so it doesn't have to drive the LCD panel, it's lasted me most of a full 8-hour workday before I realized I'd forgotten to plug it in.
As far as I can tell, the 4015CDS is identical to the 4010CDS, the 4010 series being sold via mail-order or OEM type sales, and the 4015 series being for "off-the-shelf" sales. And the 4010/4015CDT is the same machine with active-matrix/TFT display instead of dual-scan. (I've personally used a 4010CDS and I can't find any differences between it and my 4015CDS. If anyone has used a 401[0|5]CDT model, please let me know if it seems to be substantially different in any way from what I've outlined above on the 401[0|5]CDS.)
This page at Toshiba has a lot of nitty-gritty details about the laptop. (That page at Toshiba has moved a couple of times since I put this page online, so you might have to search their website to find it.)
I used Partition Magic to shrink the Windows partition really small (unfortunately, I still have to use Windows every now and then) and make a bunch of partitions for Linux at the same time. I'm using RedHat 5.2 for no particular reason other than I had it easily available, it's worked for me in the past and the RPM system is easy to deal with. I'm sure any other distro would work just as well. (And in fact, I have since booted Caldera's OpenLinux successfully on it.)
If you want to blow away Windows98 and install your own OS without ever booting Windows and therefore having to agree to the Windows EULA and losing an opportunity to return Windows to Toshiba and get a refund, you can easily get into BIOS when your turn the machine on the very first time, change your boot-up options to enable you to boot from a Linux CD and blow away your Windows partitions without ever having to boot from the pre-installed copy of Windows. Of course, trying to get that refund is another matter....
Holding the 'esc' key down while powering on or rebooting gets you into the BIOS setup. I changed the BIOS so I could boot directly off of the RedHat CD-ROM, which worked with no troubles. Installation progressed flawlessly, it went no differently than with a "full-size" desktop system, and although the XFree86 default configuration found the correct chipset and installed the proper server, the default settings wanted me to run at 640x480 8-bit color, so I changed it by hand after installation for 800x600 16bpp, with a virtual desktop of 1024x768.
(Since in the last couple of days, I've had about half-a-dozen
requests for it via EMail, I've now included my
XF86Config as of Feb 23, 1999 at the bottom of this page
for those interested. Notes for those who will want to try to use it:
I am using a Font Server, so you may need to comment out the last line
of the FontPath defs; I don't run in 8-bit-per-pixel mode, so there is
no definition for one - you will have to start X as 'startx --
-bpp 16' or the startup will complain and fail; I still haven't
been able to get XFree86 to drive an external monitor at 1024x768,
despite the fact that Winblows98 can do it, but I'm working on it.
This XF86Config could almost certainly be tweaked - don't think of it
as 'The Best XF86Config' but just 'One that works.' Update: I
finally got sick of ye olde Pan-n-Scan with a virtual desktop size and
hunkered down and figgered out how to make X do 1024x768 on an
external monitor and still know how to do 800x600 on the LCD panel.
It's working so far for me, but for all I know, it'll blow up your
monitor. Use it wisely, my son.)
Oh yeah, if you're using the newer 2.2.x kernels (or 2.1.x kernels that have this feature) on this machine, then definitely use the 'mtrr' feature. It speeds up access to video RAM dramatically on this machine. Check the 'mtrr.txt' in your kernel's 'Documentation' directory.
Running RedHat's 'sndconfig' and picking the OPL3-SA2/3/x driver configured and activated the sound without a hitch. (I booted into Windows to check the sound system I/O and IRQ configuration before I configured it under Linux.)
(As above, I've had some questions about my sound config, so I've
included my conf.modules below. Again, some notes: the
configs in this file are all the default values - I didn't have to
change anything; there are two lines for the OPL3SAx driver - the
first one works with the back-ported driver in RedHat 5.2, the second
one works with the kernel-included driver from 2.2.x kernels. If
you're using a 2.0.x kernel, but not using RedHat's back-ported sound
modules from RedHat 5.2, you may not have this driver at all.
YMMV.)
The PCMCIA chipset is a Toshiba ToPIC97 which hs worked well despite the PCMCIA package listing as experimentally-supported. (I belive the CardBus support is experimental for this chipset, while the 'old-style' 16-bit PC-Card style interface is fairly standard.) I made the mistake of choosing a 3com 3c574 10/100 PCMCIA network card, the driver for which is listed as flaky. I've had a few network problems so far, but all-in-all it seems to work except that the card manager doesn't recognize when I insert or remove the card.
(The next day...) I've been having more troubles with PCMCIA. I've compiled and installed the latest pcmcia-cs package and it's somewhat better at maintaining stability. The main problem with the network card seems to be an inability to set the correct IRQ. If I restrict the card services to only use IRQ 10 (what windows reports it uses) it works fine. Otherwise, it's a shot in the dark whether it works or not on the IRQ that gets assigned. I don't know if this is related to the PCMCIA chipset or the 3c574 card driver.
(One more day later...) The 3c574 driver is hopelessly flaky (in no way due to any lack of trying on the part of David Hinds, the PCMCIA maintainer, or Donald Becker, 'The Ethernet Guy', rather blame 3Com for lacking or incorrect hardware documentation) so I've taken that card back and gotten a "plain old" 3c589 10Base-T ethernet that works just dandy. (I've since pumped gigabytes of data across it without a glitch.)
If you're looking at one of these to run Linux on, I say go for it! It's a fast processor, a big hard drive and the box is cheap compared to other laptops out there. (I picked it up at CompUSA for $1499) The biggest downside of the 4015 for me is the 800x600 display limit. I'm used to 1280x1024 on my big workstations, so trying to deal with an 800x600 panning screen is a little hard to get used to. But the fact that the next model up that supported 1024x768 was another $1000, I decided to just lump it. Toshiba laptops have always successfully worked with Linux for me. (I was running an ancient version of Linux on an ancient Toshiba with only a 250MB hard drive somewhere around 5 or 6 years ago and even had XFree86 up and running...)
Some useful links for people trying to get Linux to work on one of these little beasties:
Some useful config files of mine:
My /etc/conf.modules:
alias sound opl3sa2 alias midi opl3 options opl3 io=0x388 # options opl3sa2 io=0x370 mss_io=0x530 irq=5 dma=1,0 mpu_io=0x330 options opl3sa2 io=0x370 mss_io=0x530 irq=5 dma=1 dma2=0 mpu_io=0x330 keep path[pcmcia]=/lib/modules/2.2.2 path[pcmcia]=/lib/modules/default path[pcmcia]=/lib/modules/preferred
My /etc/X11/XF86Config:
# File generated by xf86config.
#
# Copyright (c) 1995 by The XFree86 Project, Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
# OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# Except as contained in this notice, the name of the XFree86 Project shall
# not be used in advertising or otherwise to promote the sale, use or other
# dealings in this Software without prior written authorization from the
# XFree86 Project.
#
# **********************************************************************
# Refer to the XF86Config(4/5) man page for details about the format of
# this file.
# **********************************************************************
# **********************************************************************
# Files section. This allows default font and rgb paths to be set
# **********************************************************************
Section "Files"
# The location of the RGB database. Note, this is the name of the
# file minus the extension (like ".txt" or ".db"). There is normally
# no need to change the default.
RgbPath "/usr/X11R6/lib/X11/rgb"
# Multiple FontPath entries are allowed (which are concatenated together),
# as well as specifying multiple comma-separated entries in one FontPath
# command (or a combination of both methods)
#
# If you don't have a floating point coprocessor and emacs, Mosaic or other
# programs take long to start up, try moving the Type1 and Speedo directory
# to the end of this list (or comment them out).
#
# FontPath "/usr/X11R6/lib/X11/fonts/local/"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath "tcp/localhost:7100"
# For OSs that support Dynamically loaded modules, ModulePath can be
# used to set a search path for the modules. This is currently supported
# for Linux ELF, FreeBSD 2.x and NetBSD 1.x. The default path is shown
# here.
# ModulePath "/usr/X11R6/lib/modules"
EndSection
# **********************************************************************
# Module section -- this is an optional section which is used to specify
# which dynamically loadable modules to load. Dynamically loadable
# modules are currently supported only for Linux ELF, FreeBSD 2.x
# and NetBSD 1.x. Currently, dynamically loadable modules are used
# only for some extended input (XInput) device drivers.
# **********************************************************************
#
# Section "Module"
#
# This loads the module for the Joystick driver
#
# Load "xf86Jstk.so"
#
# EndSection
# **********************************************************************
# Server flags section.
# **********************************************************************
Section "ServerFlags"
# Uncomment this to cause a core dump at the spot where a signal is
# received. This may leave the console in an unusable state, but may
# provide a better stack trace in the core dump to aid in debugging
# NoTrapSignals
# Uncomment this to disable the <Crtl><Alt><BS> server abort sequence
# This allows clients to receive this key event.
# DontZap
# Uncomment this to disable the <Crtl><Alt><KP_+>/<KP_-> mode switching
# sequences. This allows clients to receive these key events.
# DontZoom
# Uncomment this to disable tuning with the xvidtune client. With
# it the client can still run and fetch card and monitor attributes,
# but it will not be allowed to change them. If it tries it will
# receive a protocol error.
# DisableVidModeExtension
# Uncomment this to enable the use of a non-local xvidtune client.
# AllowNonLocalXvidtune
# Uncomment this to disable dynamically modifying the input device
# (mouse and keyboard) settings.
# DisableModInDev
# Uncomment this to enable the use of a non-local client to
# change the keyboard or mouse settings (currently only xset).
# AllowNonLocalModInDev
EndSection
# **********************************************************************
# Input devices
# **********************************************************************
# **********************************************************************
# Keyboard section
# **********************************************************************
Section "Keyboard"
Protocol "Standard"
# when using XQUEUE, comment out the above line, and uncomment the
# following line
# Protocol "Xqueue"
AutoRepeat 500 5
# Let the server do the NumLock processing. This should only be required
# when using pre-R6 clients
# ServerNumLock
# Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
# Xleds 1 2 3
# To set the LeftAlt to Meta, RightAlt key to ModeShift,
# RightCtl key to Compose, and ScrollLock key to ModeLock:
# LeftAlt Meta
# RightAlt ModeShift
# RightCtl Compose
# ScrollLock ModeLock
# To disable the XKEYBOARD extension, uncomment XkbDisable.
# XkbDisable
# To customise the XKB settings to suit your keyboard, modify the
# lines below (which are the defaults). For example, for a non-U.S.
# keyboard, you will probably want to use:
# XkbModel "pc102"
# If you have a US Microsoft Natural keyboard, you can use:
# XkbModel "microsoft"
#
# Then to change the language, change the Layout setting.
# For example, a german layout can be obtained with:
# XkbLayout "de"
# or:
# XkbLayout "de"
# XkbVariant "nodeadkeys"
#
# If you'd like to switch the positions of your capslock and
# control keys, use:
# XkbOptions "ctrl:swapcaps"
# These are the default XKB settings for XFree86
# XkbRules "xfree86"
# XkbModel "pc101"
# XkbLayout "us"
# XkbVariant ""
# XkbOptions ""
XkbKeymap "xfree86(us)"
EndSection
# **********************************************************************
# Pointer section
# **********************************************************************
Section "Pointer"
Protocol "PS/2"
Device "/dev/mouse"
# When using XQUEUE, comment out the above two lines, and uncomment
# the following line.
# Protocol "Xqueue"
# Baudrate and SampleRate are only for some Logitech mice
# or for the AceCad tablets which require 9600 baud
# BaudRate 9600
# SampleRate 150
# Emulate3Buttons is an option for 2-button Microsoft mice
# Emulate3Timeout is the timeout in milliseconds (default is 50ms)
Emulate3Buttons
Emulate3Timeout 50
# ChordMiddle is an option for some 3-button Logitech mice
# ChordMiddle
EndSection
# **********************************************************************
# Xinput section -- this is optional and is required only if you
# are using extended input devices. This is for example only. Refer
# to the XF86Config man page for a description of the options.
# **********************************************************************
#
# Section "Xinput"
# SubSection "WacomStylus"
# Port "/dev/ttyS1"
# DeviceName "Wacom"
# EndSubSection
# SubSection "WacomCursor"
# Port "/dev/ttyS1"
# EndSubSection
# SubSection "WacomEraser"
# Port "/dev/ttyS1"
# EndSubSection
#
# SubSection "Elographics"
# Port "/dev/ttyS1"
# DeviceName "Elo"
# MinimumXPosition 300
# MaximumXPosition 3500
# MinimumYPosition 300
# MaximumYPosition 3500
# Screen 0
# UntouchDelay 10
# ReportDelay 10
# EndSubSection
#
# SubSection "Joystick"
# Port "/dev/joy0"
# DeviceName "Joystick"
# TimeOut 10
# MinimumXPosition 100
# MaximumXPosition 1300
# MinimumYPosition 100
# MaximumYPosition 1100
# # CenterX 700
# # CenterY 600
# Delta 20
# EndSubSection
#
# The Mouse Subsection contains the same type of entries as the
# standard Pointer Section (see above), with the addition of the
# DeviceName entry.
#
# SubSection "Mouse"
# Port "/dev/mouse2"
# DeviceName "Second Mouse"
# Protocol "Logitech"
# EndSubSection
# EndSection
# **********************************************************************
# Monitor section
# **********************************************************************
# Any number of monitor sections may be present
Section "Monitor"
Identifier "Toshiba Satellite"
VendorName "Toshiba"
ModelName "LCD"
# HorizSync is in kHz unless units are specified.
# HorizSync may be a comma separated list of discrete values, or a
# comma separated list of ranges of values.
# NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S
# USER MANUAL FOR THE CORRECT NUMBERS.
# HorizSync 31.5 - 37.9
HorizSync 30-50
# HorizSync 30-64 # multisync
# HorizSync 31.5, 35.2 # multiple fixed sync frequencies
# HorizSync 15-25, 30-50 # multiple ranges of sync frequencies
# VertRefresh is in Hz unless units are specified.
# VertRefresh may be a comma separated list of discrete values, or a
# comma separated list of ranges of values.
# NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S
# USER MANUAL FOR THE CORRECT NUMBERS.
VertRefresh 50-90
# Modes can be specified in two formats. A compact one-line format, or
# a multi-line format.
# These two are equivalent
# ModeLine "1024x768i" 45 1024 1048 1208 1264 768 776 784 817 Interlace
# Mode "1024x768i"
# DotClock 45
# HTimings 1024 1048 1208 1264
# VTimings 768 776 784 817
# Flags "Interlace"
# EndMode
# This is a set of standard mode timings. Modes that are out of monitor spec
# are automatically deleted by the server (provided the HorizSync and
# VertRefresh lines are correct), so there's no immediate need to
# delete mode timings (unless particular mode timings don't work on your
# monitor). With these modes, the best standard mode that your monitor
# and video card can support for a given resolution is automatically
# used.
# 640x480 @ 60 Hz, 31.5 kHz hsync
# Modeline "640x480" 25.175 640 664 760 800 480 491 493 525
# 640x480 @ 72 Hz, 36.5 kHz hsync
Modeline "640x480" 31.5 640 680 720 864 480 488 491 521
# 800x600 @ 56 Hz, 35.15 kHz hsync
# ModeLine "800x600" 35 800 824 896 1024 600 601 603 625
# 800x600 @ 60 Hz, 37.8 kHz hsync
Modeline "800x600" 40 800 840 968 1056 600 601 605 628 +hsync +vsync
# 800x600 @ 72 Hz, 48.0 kHz hsync
# Modeline "800x600" 50 800 856 976 1040 600 637 643 666 +hsync +vsync
# 1024x768 @ 60 Hz
Modeline "1024x768" 65.00 1024 1060 1204 1328 768 771 777 802 -hsync -vsync
# 1024x768 @ 87 Hz interlaced, 35.5 kHz hsync
# Modeline "1024x768" 44.9 1024 1048 1208 1264 768 776 784 817 Interlace
# 1024x768 @ 60 Hz, 48.4 kHz hsync
# Modeline "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync
# 1024x768 @ 70 Hz, 56.5 kHz hsync
# Modeline "1024x768" 75 1024 1048 1184 1328 768 771 777 806 -hsync -vsync
# 512x384 @ 78 Hz, 31.50 kHz hsync
Modeline "512x384" 20.160 512 528 592 640 384 385 388 404 -HSync -VSync
# 512x384 @ 85 Hz, 34.38 kHz hsync
Modeline "512x384" 22 512 528 592 640 384 385 388 404 -HSync -VSync
# Low-res Doublescan modes
# If your chipset does not support doublescan, you get a 'squashed'
# resolution like 320x400.
# 320x200 @ 70 Hz, 31.5 kHz hsync, 8:5 aspect ratio
Modeline "320x200" 12.588 320 336 384 400 200 204 205 225 Doublescan
# 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio
Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan
# 320x240 @ 72 Hz, 36.5 kHz hsync
Modeline "320x240" 15.750 320 336 384 400 240 244 246 262 Doublescan
# 400x300 @ 56 Hz, 35.2 kHz hsync, 4:3 aspect ratio
ModeLine "400x300" 18 400 416 448 512 300 301 302 312 Doublescan
# 400x300 @ 60 Hz, 37.8 kHz hsync
Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan
# 400x300 @ 72 Hz, 48.0 kHz hsync
Modeline "400x300" 25 400 424 488 520 300 319 322 333 Doublescan
# 480x300 @ 56 Hz, 35.2 kHz hsync, 8:5 aspect ratio
ModeLine "480x300" 21.656 480 496 536 616 300 301 302 312 Doublescan
# 480x300 @ 60 Hz, 37.8 kHz hsync
Modeline "480x300" 23.890 480 496 576 632 300 301 303 314 Doublescan
# 480x300 @ 63 Hz, 39.6 kHz hsync
Modeline "480x300" 25 480 496 576 632 300 301 303 314 Doublescan
# 480x300 @ 72 Hz, 48.0 kHz hsync
Modeline "480x300" 29.952 480 504 584 624 300 319 322 333 Doublescan
EndSection
# **********************************************************************
# Graphics device section
# **********************************************************************
# Any number of graphics device sections may be present
# Standard VGA Device:
Section "Device"
Identifier "Generic VGA"
VendorName "Unknown"
BoardName "Unknown"
Chipset "generic"
# VideoRam 256
# Clocks 25.2 28.3
EndSection
# Sample Device for accelerated server:
# Section "Device"
# Identifier "Actix GE32+ 2MB"
# VendorName "Actix"
# BoardName "GE32+"
# Ramdac "ATT20C490"
# Dacspeed 110
# Option "dac_8_bit"
# Clocks 25.0 28.0 40.0 0.0 50.0 77.0 36.0 45.0
# Clocks 130.0 120.0 80.0 31.0 110.0 65.0 75.0 94.0
# EndSection
# Sample Device for Hercules mono card:
# Section "Device"
# Identifier "Hercules mono"
# EndSection
# Device configured by xf86config:
Section "Device"
Identifier "Toshiba Laptop"
VendorName "Toshiba"
BoardName "CT65555"
#VideoRam 2048
# Option "noaccel"
# Option "no_bitblt"
# Option "xaa_no_color_exp"
# Option "xaa_benchmark"
# Option "hw_cursor"
# Option "sync_on_green"
# Option "fast_dram"
# Option "use_vclk1"
# Textclockfreq 25.175
# Option "nolinear"
# MemBase 0x03b00000
# Device section for C&T cards.
# Option "suspend_hack"
# Option "STN"
# Option "no_stretch"
# Option "no_center"
# Option "use_modeline"
# Option "fix_panel_size"
# videoram 512
# Insert Clocks lines here if appropriate
EndSection
# **********************************************************************
# Screen sections
# **********************************************************************
# The Colour SVGA server
Section "Screen"
Driver "svga"
# Use Device "Generic VGA" for Standard VGA 320x200x256
#Device "Generic VGA"
Device "Toshiba Laptop"
Monitor "Toshiba Satellite"
Subsection "Display"
Depth 16
Modes "1024x768" "800x600"
ViewPort 0 0
Virtual 1024 768
EndSubsection
Subsection "Display"
Depth 24
Modes "800x600"
ViewPort 0 0
Virtual 800 600
EndSubsection
Subsection "Display"
Depth 32
Modes "800x600"
ViewPort 0 0
Virtual 800 600
EndSubsection
EndSection
# The 16-color VGA server
Section "Screen"
Driver "vga16"
Device "Generic VGA"
Monitor "Toshiba Satellite"
Subsection "Display"
Modes "640x480" "800x600"
ViewPort 0 0
Virtual 800 600
EndSubsection
EndSection
# The Mono server
Section "Screen"
Driver "vga2"
Device "Generic VGA"
Monitor "Toshiba Satellite"
Subsection "Display"
Modes "640x480" "800x600"
ViewPort 0 0
Virtual 800 600
EndSubsection
EndSection
# The accelerated servers (S3, Mach32, Mach8, 8514, P9000, AGX, W32, Mach64)
Section "Screen"
Driver "accel"
Device "Toshiba Laptop"
Monitor "Toshiba Satellite"
Subsection "Display"
Depth 8
Modes "640x480" "800x600" "1024x768" "1280x1024"
ViewPort 0 0
Virtual 1600 1200
EndSubsection
Subsection "Display"
Depth 16
Modes "800x600"
ViewPort 0 0
Virtual 1152 900
EndSubsection
Subsection "Display"
Depth 24
Modes "640x480" "800x600"
ViewPort 0 0
Virtual 800 600
EndSubsection
Subsection "Display"
Depth 32
Modes "800x600"
ViewPort 0 0
Virtual 800 600
EndSubsection
EndSection