[walkthroughs] archive category

Installing Webmin on Ubuntu Server 10.04 LTS (Lucid)

Webmin installed on Ubuntu 10.04 LTS Lucid


There is an easier way to install Webmin on Ubuntu 12.04 LTS! This walkthrough shows how to install Webmin 1.580 and upgrade the TLS self-signed certificate to use a 2048-bit key.


I had some trouble installing Webmin 1.510 on Ubuntu 10.04 LTS Server (aka Lucid). The problem is that Webmin uses a deprecated Perl module (a wrapper around Digest::MD5 for users of an ancient MD5 library) and both Debian and Ubuntu refuse to put it back into their respective repositories. Entirely within their rights, of course, but not so good for us weekend admins who want a painless install process.

Okay, so let’s get to work. I’m installing Webmin 1.510 via the remaining Debian packages.

Install the (easy) dependencies

Run this from a terminal. Expect some trouble from ‘libmd5-perl’.

$ sudo aptitude -y install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl apt-show-versions libapt-pkg-perl

You should find an error like this:

Couldn't find any package whose name or description matched "libmd5-perl"

The reason for this is that ‘libmd5-perl’ is persona non grata at both Debian and Ubuntu, as mentioned.

Install the deprecated dependencies

Download the libmd5-perl deb file and install it manually:

Open a browser and get the newest libmd5-perl package (from 2004 – lol)


The likely package is named: libmd5-perl_2.03-1_all.deb

so we download it and install it:

kelvin@example.com:~$ wget http://ftp.debian.org/pool/main/libm/libmd5-perl/libmd5-perl_2.03-1_all.deb
--2010-05-22 19:50:45--  http://ftp.debian.org/pool/main/libm/libmd5-perl/libmd5-perl_2.03-1_all.deb
Resolving ftp.debian.org..., 2001:610:1908:a000::149:226
Connecting to ftp.debian.org||:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5700 (5.6K) [application/x-debian-package]
Saving to: `libmd5-perl_2.03-1_all.deb'

100%[=======================================================================>] 5,700       30.3K/s   in 0.2s    

2010-05-22 19:50:46 (30.3 KB/s) - `libmd5-perl_2.03-1_all.deb' saved [5700/5700]

kelvin@example.com:~$ sudo dpkg -i libmd5-perl_2.03-1_all.deb
Selecting previously deselected package libmd5-perl.
(Reading database ... 50494 files and directories currently installed.)
Unpacking libmd5-perl (from libmd5-perl_2.03-1_all.deb) ...
Setting up libmd5-perl (2.03-1) ...
Processing triggers for man-db ...

Install Webmin

The dependencies should all be installed now. We can download the Webmin deb package from Sourceforge.


Use the most recent deb package. In my case it was ‘webmin_1.510-2_all.deb

Sourceforge will generate a link for you to use from their web site. My link was:

kelvin@example.com:~$ wget http://downloads.sourceforge.net/project/webadmin/webmin/1.510/webmin_1.510-2_all.deb?use_mirror=cdnetworks-us-1
--2010-05-22 19:53:44--  http://downloads.sourceforge.net/project/webadmin/webmin/1.510/webmin_1.510-2_all.deb?use_mirror=cdnetworks-us-1
Resolving downloads.sourceforge.net...
Connecting to downloads.sourceforge.net||:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://cdnetworks-us-1.dl.sourceforge.net/project/webadmin/webmin/1.510/webmin_1.510-2_all.deb [following]
--2010-05-22 19:53:44--  http://cdnetworks-us-1.dl.sourceforge.net/project/webadmin/webmin/1.510/webmin_1.510-2_all.deb
Resolving cdnetworks-us-1.dl.sourceforge.net...
Connecting to cdnetworks-us-1.dl.sourceforge.net||:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14504260 (14M) [application/octet-stream]
Saving to: `webmin_1.510-2_all.deb'

100%[===================================================================>] 14,504,260   512K/s   in 21s     

2010-05-22 19:54:06 (664 KB/s) - `webmin_1.510-2_all.deb' saved [14504260/14504260]

kelvin@example.com:~$ sudo dpkg -i webmin_1.510-2_all.deb
Selecting previously deselected package webmin.
(Reading database ... 50500 files and directories currently installed.)
Unpacking webmin (from webmin_1.510-2_all.deb) ...
Setting up webmin (1.510-2) ...
Webmin install complete. You can now login to https://example.com:10000/
as root with your root password, or as any user who can use sudo
to run commands as root.

Processing triggers for ureadahead ...
ureadahead will be reprofiled on next reboot

You should now be able to visit your webmin login page on port 10000 (use your own IP number):

Ideally, the Webmin gurus will refactor the old MD5 code dependencies, but this seems to work fine for now.

Happy Harvey Milk day!

Tags: , , ,

Installing Fileinfo on CentOS with PHP 5.2.13

I ran into some trouble installing the Fileinfo extension for PHP on CentOS. I tried installing the extension using yum and all went well until I saw these errors:

PHP Warning:  PHP Startup: fileinfo: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP    compiled with module API=20060613, debug=0, thread-safety=0
These options need to match

Like I said, I installed the extension using yum, so I checked out what I had installed:

$ yum list installed | grep "php-pecl-Fileinfo"
php-pecl-Fileinfo.x86_64               1.0.4-3.el5.centos              installed

Oh crap, I always forget to pull these things from the Atomicorp repository because my php is from there.

$ yum list installed | grep "php.x86_64"
php.x86_64                             5.2.13-1.el5.art                installed

Well, the bad news is that the Fileinfo extension is not available on the Atomicorp repo. Hmm. Ok, so my next step is to remove the thing and install it with PECL.

$ sudo yum erase php-pecl-Fileinfo.x86_64
Running Transaction
  Erasing        : php-pecl-Fileinfo                                                                                         1/1 
warning: /etc/php.d/Fileinfo.ini saved as /etc/php.d/Fileinfo.ini.rpmsave

  php-pecl-Fileinfo.x86_64 0:1.0.4-3.el5.centos                                                                                  

$ sudo rm /etc/php.d/Fileinfo.ini.rpmsave

I didn’t need that config file, because I never got it to work!

Install Fileinfo with PECL

Before anything else, here is the system I’m using:

$ cat /etc/redhat-release 
CentOS release 5.4 (Final)
$ php -v
PHP 5.2.13 (cli) (built: Mar  2 2010 18:08:48) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
$ pecl -V
PEAR Version: 1.9.0
PHP Version: 5.2.13
Zend Engine Version: 2.2.0
Running on: Linux system.local 2.6.18-028stab064.7 #1 SMP Wed Aug 26 13:11:07 MSD 2009 x86_64

If the PHP extension that I’m after is not in the yum repo then I usually just install it with PECL. It is fairly painless.

$ sudo pecl install fileinfo
audit_log_user_command(): Connection refused
WARNING: "pear/Fileinfo" is deprecated in favor of "channel://php-src/ext/fileinfo/in php sources"
downloading Fileinfo-1.0.4.tgz ...
Starting to download Fileinfo-1.0.4.tgz (5,835 bytes)
.....done: 5,835 bytes
3 source files, building
running: phpize

...lotsa crap...

build process completed successfully
Installing '/usr/lib64/php/modules/fileinfo.so'
install ok: channel://pear.php.net/Fileinfo-1.0.4

The PECL warning is trying to let you know that Fileinfo is bundled with PHP 5.3 and you don’t need to install if you are running PHP 5.3, but I’m running 5.2 so that warning is not for me. Okay, now we turn on the extension by putting “extension=fileinfo.so” somewhere in the /etc/php.ini file.

$ sudo vim /etc/php.ini

And make the change…


Now restart apache…

$ sudo /sbin/service httpd restart
audit_log_user_command(): Connection refused
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

Okay, let’s find out if it is in the phpinfo…

$ php -r "phpinfo();" | grep "fileinfo"
fileinfo support => enabled


Tags: ,

Building a cluster map using CartographerJS

Behold the Canadian NoProrogue Protests as a Cluster Map:

Today I’m building a cluster map using the way cool CartographerJS thematic JavaScript library. The library greatly simplifies the creation of “heat map” style overlays for Google Maps. In order to follow along, you will need to be familiar with GMap2 and JavaScript.

To create a cluster map, you need to include a few libraries:

  1. Google Maps GMap2 API – Makes maps from divs
  2. RaphaelJS – Library to draw vector graphics
  3. CartographerJS

Download Raphael and Cartographer somewhere webby and then include them in the head of your html page with your GMap API key URL (Google provides this):

  <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=ABQIAAAAkWkoIqBrrWjZm_w3j6xq2hSa3-TS0yNMl32jU2eh6AwgDkL60hSCs7jQoaWypWYc5VCS-RKonhKskg" type="text/javascript"></script>
  <script type="text/javascript" language="javascript" src="raphael-min.js"></script>
  <script type="text/javascript" language="javascript" src="cartographer.min.0.3.js"></script>

The data that we are going to plot comes from the NoProrogue.ca protest actions that took place on 23 Jan 2010 across Canada. This dataset was converted from the early estimates produced by Ian Capstick in his Globe and Mail article.

<script type="text/javascript" language="javascript" src="http://www.kelvinwong.ca/code/html/protest_maps/protest_data.js"></script>

The data is a simple array packed with object literals. The important parts of the object literals are: the latitude of the point (lat), the longitude of the point (lng), the value to use when plotting (val) and the label to use on the callout (label):

var protest_data = [
{lat:43.656076, lng:-79.380279, val:9000, label:"Toronto: 9000, Police place at 7000 - organizers claim 15,000"},
// Other object literals here!!!

If you tried out the Hello World demo from the GMap2 documentation, then this code should look familiar. The plan is to place an empty div on the page and fill it with a map and an overlay dynamically written with JavaScript. Here is the target div:

<body onload="initialize()" onunload="GUnload()">
<div id="map" style="width: 650px; height: 450px"></div>

And here is the code that draws the map then places the map object into the cartographer object:

function initialize() {
  if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(61.856149,-95.625), 3);
    var mapoptions = { colorize:"#fff",
    var cartographer = Cartographer( map, mapoptions );
    var options = { color:"red", enableGrid:false };
    cartographer.cluster( protest_data, options );

The mapoptions object literal specifies the colour of the overlay (colorize) and the opacity of the overlay (colorizeAlpha). If the opacity is set to 1.0 you won’t be able to see the map underneath, so set it to a sane value like 0.1 or 0.3. We pass that object literal and the Google map object as parameters to initialize the cartographer object.

The options object literal is used to construct a cluster map on the overlay. In this case I wanted to specify the colour of the data points (color) and to disable the grid (enableGrid). There are many other settings you can specify based on your own needs. When you are ready to draw your overlay, pass the options object and the data as parameters into the cluster method of the cartographer object. Ecco fatto!

You can view the file without the iframe!

Tags: , , , , , , , ,

Running Cassandra 0.5.0 on Mac OS X Leopard 10.5.8

This is a short post showing you how to install the superdooper Key-Value Store Cassandra version 0.5.0 on a Macbook running OS X Leopard 10.5.8 (yeah I know, I should upgrade to Snow Leopard sometime). Cassandra 0.5 promises to be peppier than the 0.4 version and at this point it hasn’t been released yet, but I’m impatient, so I’m setting up a ‘one-node cluster’ for fun.

Cassandra 0.5.0 was released on 25 Jan 2010.

You will need to ensure that you are running Java 1.6. Since Java 1.5 is the default on Mac OS X, you need to set up a couple of environment variables. I just put the following into my .bash_profile file using vim.

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
export PATH=$JAVA_HOME/bin:$PATH

Now source the file (if you haven’t already done that) and examine your set-up.

Trinity:~ kelvin$ source .bash_profile
Trinity:~ kelvin$ env | grep JAVA_HOME
Trinity:~ kelvin$ java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248-9M3125)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01-101, mixed mode)
Trinity:~ kelvin$ xcodebuild -version
Xcode 3.1.2
Component versions: DevToolsCore-1148.0; DevToolsSupport-1102.0
BuildVersion: 9M2621

Yeah, my xcode is a bit old too. So, once that is done, download Cassandra. I am going to use the tag in the Subversion repository for the 0.5.0 release.

Trinity:code kelvin$ svn co https://svn.apache.org/repos/asf/incubator/cassandra/tags/cassandra-0.5.0/ cassandra-0.5.0

...svn key gibberish redacted...

A    cassandra-0.5.0/NOTICE.txt
...checkout redacted...
A    cassandra-0.5.0/build.xml
 U   cassandra-0.5.0
Checked out revision 902040.
Trinity:code kelvin$ cd cassandra-0.5.0
Trinity:cassandra-0.5.0 kelvin$ pwd
Trinity:cassandra-0.5.0 kelvin$

Cassandra expects some folders to be available, so we will need to set them up (per the instructions in the README file). First of all, check the file conf/storage-conf.xml and make sure that these folders exist before you do anything else.


If they do not exist, you will have to make them (careful with the whoami command in backticks):

Trinity:cassandra-0.5.0 kelvin$ sudo mkdir -p /var/log/cassandra
Trinity:cassandra-0.5.0 kelvin$ sudo chown -R `whoami` /var/log/cassandra
Trinity:cassandra-0.5.0 kelvin$ sudo mkdir -p /var/lib/cassandra
Trinity:cassandra-0.5.0 kelvin$ sudo chown -R `whoami` /var/lib/cassandra

For logging, Cassandra expects that a system.log file is available. Check the conf/log4j.properties file to check where it expects a log file. It should be similar to this:


When you start Cassandra for the first time it will start the log file.

I used ‘ant‘ to build Cassandra. Make sure that you are in the root of the Cassandra directory. I have a lot of crap in my Java classpath, so I will temporarily exclude it.

Trinity:cassandra-0.5.0 kelvin$ ant -noclasspath
Buildfile: build.xml


    [mkdir] Created dir: /Users/kelvin/code/cassandra-0.5.0/build/classes
    [mkdir] Created dir: /Users/kelvin/code/cassandra-0.5.0/build/test/classes
    [mkdir] Created dir: /Users/kelvin/code/cassandra-0.5.0/src/gen-java


     [echo] Building Grammar /Users/kelvin/code/cassandra-0.5.0/src/java/org/apache/cassandra/cli/Cli.g  ....

     [echo] apache-cassandra-incubating: /Users/kelvin/code/cassandra-0.5.0/build.xml
    [javac] Compiling 247 source files to /Users/kelvin/code/cassandra-0.5.0/build/classes
    [javac] Note: Some input files use or override a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] Note: Some input files use unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.


Total time: 13 seconds
Trinity:cassandra-0.5.0 kelvin$

Now the moment of truth!

Trinity:cassandra-0.5.0 kelvin$ bin/cassandra -f
Listening for transport dt_socket at address: 8888
INFO - Saved Token not found. Using 25907362644306974147256376871662350143
INFO - Starting up server gossip
INFO - Cassandra starting up...

Okay, Cassandra is now waiting for us to do something, so we can open up another Terminal window (Cmd+N) and try the test described in the README file:

Trinity:cassandra-0.5.0 kelvin$ bin/cassandra-cli --host localhost --port 9160
Connected to localhost/9160
Welcome to cassandra CLI.

Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.
cassandra> set Keyspace1.Standard1['jsmith']['first'] = 'John'
Value inserted.
cassandra> set Keyspace1.Standard1['jsmith']['last'] = 'Smith'
Value inserted.
cassandra> set Keyspace1.Standard1['jsmith']['age'] = '42'
Value inserted.
cassandra> get Keyspace1.Standard1['jsmith']
=> (column=last, value=Smith, timestamp=1264159272089)
=> (column=first, value=John, timestamp=1264159260000)
=> (column=age, value=42, timestamp=1264159282593)
Returned 3 results.

Okay, we now have stored and retrieved some data. In the next installment I’ll try to get Thrift running!

Tags: , , , , , ,

Installing Google Go on Mac OS X Leopard

Google released a new programming language named GO that offers the benefits of a dynamic language like Python with the speed of a compiled language like C/C++. In this walkthrough, I’m going to be installing the Google Go programming language on my Mac.

To get started, make sure that you have Python and Mercurial installed on your Intel Mac (PowerPC is not supported at this point). Also make sure that you have XCode installed and that you are attached to the Internet (the test suite will need Internet access to run a few tests).

Trinity:~ kelvin$ python -V
Python 2.5.2
Trinity:~ kelvin$ hg version
Mercurial Distributed SCM (version 1.0.1)

Copyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> and others
This is free software; see the source for copying conditions. There is NO
Trinity:~ kelvin$ xcodebuild -version
Xcode 3.1.2
Component versions: DevToolsCore-1148.0; DevToolsSupport-1102.0
BuildVersion: 9M2621
Trinity:~ kelvin$ uname -p
Trinity:~ kelvin$

Okay, now we’re going to make some environment variables that Go will use to compile your code. In my home directory, I put the following variables into the ‘.bash_profile’ file:

# Google Go Lang Vars
export GOROOT=$HOME/go
export GOOS=darwin
export GOARCH=386
export GOBIN=$HOME/bin

Now we make sure that the environment has the variables we just set up:

Trinity:~ kelvin$ source .bash_profile
Trinity:~ kelvin$ env | grep ^GO
Trinity:~ kelvin$

Make sure that your ‘~/go’ directory doesn’t exist since the next command will make it into a Mercurial repository. We will be creating the ‘~/bin’ directory after we create the repository.

Trinity:~ kelvin$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
requesting all changes
adding changesets
adding manifests
adding file changes
added 3976 changesets with 16799 changes to 2931 files
updating working directory
1640 files updated, 0 files merged, 0 files removed, 0 files unresolved
Trinity:~ kelvin$ cd $GOROOT
Trinity:go kelvin$ ls
AUTHORS LICENSE doc include misc src
CONTRIBUTORS README favicon.ico lib pkg test
Trinity:go kelvin$ cd src/
Trinity:src kelvin$

Okay, so far we have set-up the environment and the respository. Now would be a good time to ensure the ‘~/bin’ folder actually exists. In many cases, it is already there. If it isn’t there, you need to create it and mark it executable (Hint: Try ‘mkdir ~/bin’ then ‘chmod 755 ~/bin’).

Trinity:src kelvin$ test -e ~/bin && echo 'bin exists'
bin exists
Trinity:src kelvin$

Okay, now we’re ready to build Go.

Trinity:src kelvin$ ./all.bash
rm -f *.o *.6 6.out lib9.a
rm -f bbuffered.o bfildes.o bflush.o bgetc.o bgetrune.o bgetd.o binit.o boffset.o bprint.o bputc.o bputrune.o brdline.o brdstr.o bread.o bseek.o bwrite.o *.6 6.out libbio.a
rm -f *.o *.so
.... holy crap there is a lot of output here...
./mkasmh.sh >386/asm.h.x
mv -f 386/asm.h.x 386/asm.h
8a 386/asm.s
8c -Idarwin -Idarwin/386 -wF cgocall.c
8c -Idarwin -Idarwin/386 -wF chan.c
8c -Idarwin -Idarwin/386 -wF 386/closure.c
8c -Idarwin -Idarwin/386 -wF float.c
8c -Idarwin -Idarwin/386 -wF hashmap.c
8c -Idarwin -Idarwin/386 -wF iface.c
quietgcc -o cgo2c cgo2c.c
./cgo2c malloc.cgo > malloc.c.tmp
mv -f malloc.c.tmp malloc.c
...Two peanuts were walking down the street. One was a salted...
8g -I_obj main.go
8l -L_obj -o ogle main.8

real 0m0.996s
user 0m0.831s
sys 0m0.148s

--- cd ../doc/progs

real 0m2.229s
user 0m1.714s
sys 0m0.431s

--- cd ../test/bench

--- cd ../test
0 known bugs; 0 unexpected bugs
Trinity:src kelvin$

Okay, so hopefully you now have a working copy of the Go programming language. You can try to find the executables on your system. Your compiler is ‘8g’ if for the i386 architecture.

Trinity:~ kelvin$ which 8g
Trinity:~ kelvin$ which 8l
Trinity:~ kelvin$ 8g
-I DIR search for packages in DIR
-d print declarations
-e no limit on number of errors printed
-f print stack frame structure
-h panic on an error
-k name specify package name
-o file specify output file
-S print the assembly language
-w print the parse tree after typing
-x print lex tokens
Trinity:~ kelvin$

Notice that ‘gccgo’ is not installed by default; if you want to try that out you need to install it separately. Try working through the examples!

Tags: , , , , ,

Installing Windows XP Pro SP2 on a Toshiba M60 Laptop

I have a Toshiba M60 Laptop (Model PSM60C-CD600E) that came with Windows XP Home pre-loaded. This article outlines the steps and the outcome of trying to upgrade to Windows XP Pro SP2 using the Toshiba drivers available at the Toshiba Canada web site. Using this procedure, I was able to get a working Windows XP Pro installation with only a few warnings.

Back-up some system folders

Back up the following folders in your Windows XP Home install.


There are a few things in there that are not available at the Toshiba web site, notably Configfree. The recovery disk that ships with your laptop has archived files that prevent you from just copying out specific folders. Copy them now while they are there.

Upgrade the BIOS

The first step was to upgrade the BIOS to the latest version (1.60). This can be done within your current Windows XP Home installation before you upgrade to Windows XP Pro. Since the laptop did not come with a floppy drive, Toshiba has a windows installer that changes your BIOS without requiring you to boot into a floppy disk.

Install Windows XP Pro SP2

After you back-up your data, insert your Windows XP Pro CD-ROM into the DVD-RW/CD-R superdrive and reboot the computer. At the Toshiba splash screen click the F12 key to select a boot device. Select the CD-ROM boot device and boot to your Windows XP Pro disk.

I chose to delete the system partition and reformat the drive. Then I installed Windows using the defaults. After a good amount of time, Windows will boot into a desktop which is set to 800×600 resolution (this will be adjusted later).

Install an antivirus

Install anti-virus software. I installed Symantec Anti-Virus Corporate Edition. Allow your AV software to update its virus signatures to the latest version.

Windows update

Windows update was running in the background throughout this install. I installed the Toshiba drivers only when the Windows update service wasn’t installing anything.

Intel Chipset Driver

Download the Intel Chipset driver onto the desktop and install it. Reboot your computer.

nVidia VGA Driver

The laptop comes with a nice nVidia GeForce 6600 Go video adapter with a good amount of dedicated memory. Select the nVidia NV43 Display Driver and download it to your desktop. Install it and reboot your system. This will reset your screen size to 1440×900 after the reboot.

Realtek audio driver

Next install the Realtek ACL250 Sound Driver. Download it, install it and reboot. On start-up you will hear the Windows start-up sound if all went well.

Realtek LAN driver

Install the Realtek RTL8100CL local area network driver. Download it, install it and reboot.


I didn’t install the modem driver. Why? The Internal v.92 Modem Driver installer will cough up an error and only partially install the modem driver. Furthermore, on boot the Modem on Hold app will announce a system stop beep every time you boot up. Its very annoying and you can’t uninstall it without doing a system restore so I didn’t bother to install it. I never use the modem anyway. I am not aware of a workaround if you do need the modem.

Touch Pad driver

I had a bit of trouble with the touchpad driver, but it does install and work. If you view your event viewer you will see a few warnings after you install this driver. The warnings complain about a service binding to the Windows registry because its running under Local System and then not being able to save the registry when you shut-down. I haven’t been able to get to the bottom of this yet. If you like the touchpad disable applet in the system tray then you will have to install this. To do so, download the ALPS Touchpad Driver, install it and reboot.


The wireless radio is next. Download the Wireless LAN Driver / Utility (Intel Pro/Wireless). It is a big file. Right click to unzip the archive. Open the folder and click ‘setup.exe’ to install it. Reboot.


If you want to run configfree, you will have to load it off the recovery disk. For some reason the Toshiba web site provides a dead link to the configfree utility. In your backup, go to c:\DRIVERS\CONFIG FREE\ and install Config free from there if you need it.

5-in-1 Card Reader

I actually don’t use this, but I installed it. Download the ENE PCMCIA Driver to your desktop, install it and reboot.

Power saver

You will need to install two files, a driver and the controller. Download the Toshiba Power Saver Driver, install it and reboot. Download the Toshiba Power Saver, install it and reboot.

Touchpad On/Off Utility

I always hit the touchpad by mistake when I’m typing, so I really like this applet. Download the Touchpad On/Off utility, install it and reboot.

Toshiba controls

The Toshiba controls needs a driver and a controller. Download the Toshiba Controls Driver, install it and reboot. Download the Toshiba Controls, install it and reboot.

Toshiba HW Setup

Download the Toshiba HW Setup file, install it and reboot.


Download the Toshiba Fn-esse Utility, install it and reboot.


View the event viewer to confirm that nothing unusual has happened. There should be a lot of information messages and maybe a warning or two if you installed the touchpad driver.

I was reading on some forums that the SD-card reader doesn’t work in XP Pro, but I don’t use them so I can’t test that. The system now is functional and you should be able to load your applications.

Tags: , ,