This tutorial details how to upgrade the BIOS of a Thinkpad x61, x61s or x61s tablet notebook using a bootable USB stick. At the time of writing, the 2.14 BIOS and 1.03 firmware versions are the most current for the X61/X61s. Also, the most current BIOS and firmware versions for the ThinkPad X61 Tablet are 1.17 and 1.02, respectively.
Disclaimer: While these steps worked for me while upgrading my X61 BIOS from 1.06 to 2.07, and later from 2.07 to 2.14, use them at your own discretion. BIOS upgrades always carry some associated risk, and I cannot be held liable for anything that goes wrong.
Motivation
The Thinkpad x61 is an ultralight notebook offered by Lenovo. As any x61 owners should know, the internal optical drive present in most laptops was omitted from the x61 in order to minimize weight.
Regular BIOS upgrades have been offered by Lenovo for the x61, and are released without charge in two forms:
The bootable CD-ROM disc is the only option available for GNU/Linux users. Ridiculously enough, USB CD-ROM drivers are not included on the disk, such that external CD-ROM drives will
not work with the BIOS upgrade. Not even the Lenovo Thinkpad USB CD-ROM drive allows the user to upgrade the BIOS.
Officially, the supported method for an x61 upgrade on a non-Win32 platform is to use the CD-ROM drive in an ultrabase. Those of us who don't have one are left in the dark. In this tutorial, I will show how to upgrade the x61 BIOS from a bootable USB stick.
Why Upgrade the BIOS
Although the stock BIOS shipped with most x61 laptops may be fine for most users, the newest BIOS (2.07), which was released in January, offers an improved fan speed controller. It also fixes USB interrupt bugs present in previous releases, which have manifested themselves as problems with the right-side USB ports (see
here and
here). Later BIOS revisions have dealt with other firmware bugs, such as WOL (Wake on LAN) errors, POST issues and CardBus and 1394 bugs.
That being said, a BIOS upgrade not a necessity. There are workarounds for the problems it fixes (I provide a hack for the USB devices, for example, in the previous two hyperlinked posts). Of course, the newest BIOS and firmware versions are preferable, however, so without further ado...
How to Upgrade the Thinkpad x61 BIOS with a USB Thumb Drive
The rest of this tutorial shows how to upgrade the Thinkpad BIOS to the newest version under Linux or Windows without an internal CD-ROM drive. The basic steps involved are:
1. Format the USB stick to be a DOS boot device
2. Copy the bootable ISO BIOS files to the USB stick
3. Boot to the USB stick and follow instructions
Instructions for Step 1 are given for upgrading under Windows as well as Linux. Although it may be distasteful to an Ubuntu user,
the instructions for upgrading on a Windows machine are simpler and carry less risk. However, should one be unable or unwilling to use a Windows machine, they may jump to the section entitled "
Format the USB stick to be a DOS boot device (Linux)".
1. Format the USB stick to be a DOS boot device (Windows)
There are
multiple ways to do this step, I'm taking the easiest route I know: the HP USB Disk Storage Format Tool combined with Win98 DOS boot disc files.
First, connect a USB stick and backup any important files: we are going to format the device, which will lose any information you have on it.
Next, get the HP USB Disk Storage Format Tool (from
here or HPUSBFW.zip attached to this tutorial). Run HPUSBFW.EXE and select the FAT (FAT16) filesystem and "Create a DOS Startup Disc".
Under "using DOS system files located at", provide a directory containing a valid DOS boot disc. I have attached the appropriate files for a Win98 DOS boot disc to this tutorial, in win98boot.zip. They should also be available
here .
Click "Start" to format the USB into a bootable DOS-wielding device. If this process worked, then skip to the section entitled "
2. Copy the bootable ISO BIOS files to the USB stick".
1. Format the USB stick to be a DOS boot device (Linux)
First, insert your USB stick and determine what device it is assigned to. This is fairly simple by looking at the output of:
For a device which is the same size as your USB stick and formatted (presumably) as Fat32 or Fat16. Normally the device will be in the form /dev/sdb or /dev/sdc, etc.
Note: It is critical that you get the name of your usb device correct, and always type it accurately. If you use the device name of another harddrive, you could very easily end up wiping other, unrelated disks. For that reason, I'm always going to use the identifier [USB device] for the device name of your specific USB drive.
After you have discovered your USB stick device name, set up a bootable Fat16 partition on the USB stick. There are multiple ways to do this (users familiar with parted/gparted may want to go that route). The simplest way, IMHO, is to enter the following command into a terminal window:
Code:
sudo cfdisk [USB device]
Then, set up a "New" "Primary" partition filling the whole disc, make it "Bootable", and set the type to "0E" [W95 FAT16 (LBA)]. The "Write" the partition table to the USB drive.
Next, format the newly created partition as a FAT16 drive. To do this, run the following in a terminal window:
Code:
sudo mkdosfs -F 16 -vc [USB device]1
This may take a couple of minutes, unless your USB stick is on the smaller side.
Now we are going to set the drive to be bootable, using FreeDOS system files. In order to make the USB drive bootable, we are going to use
makebootfat. Because it is not (yet) in the Ubuntu repositories, you must compile and install it yourself, from source code. Alternatively, as described below, you may use a .deb file that I created.
Using a precompiled package for makebootfat:
Compiling makebootfat requires various packages that are required to build C programs from source. For lazy users or those who cannot or will not install the necessary requirements, I have attached a debian package (.deb) to this post (entitled "makebootfat_1.4-1ubuntu0_i386.deb
"). I accept no liability for your use of this package. However, should you want to, it is installable through the following command:
Code:
sudo dpkg -i makebootfat_1.4-1ubuntu0_i386.deb
If you have installed makebootfat through the attached .deb file, you may jump to the section entitled "
Create the Bootable USB Device".
Building makebootfat from source:
In order to compile and build makebootfat yourself, get the project source code (labelled "makebootfat-1.4.tar.gz (0.1 MB)")
here. I am also attaching the source code to this forum post, for reasons explained below.
Note: This tutorial is written using makebootfat 1.4, which is protected under the GPL. On the off chance that future versions of the program stop working for our purposes, the source code for v1.4 is attached at the bottom of this post.
The process for installing makebootfat is the same as most projects that must be built from source:
Code:
[in directory containing makebootfat-1.4.tar.gz]
tar -xzf makebootfat-1.4.tar.gz
cd makebootfat-1.4
./configure
make
sudo make install
This should install the project binary (makebootfat) to /usr/bin/makebootfat.
Create the Bootable USB Device
Now, we use makebootfat to create a bootable DOS USB stick. These instructions use draw files from the
FreeDOS and
SYSLINUX projects. In order to simplify everything, I have attached a tarball (linboot.tar.gz) that contains the files you need in order to upgrade the x61 BIOS. To get a better feel for where these files come from (and why) read
this article.
Download the essential configuration and system files, extract them, and go to that folder:
Code:
tar -xzf linboot.tar.gz
cd linboot
Now, make the USB drive bootable with the provided master boot record settings (mbr.bin), and the boot sector images (fat*.bin). Also, provide the FreeDOS system files:
Code:
sudo makebootfat -o usb -E 255 -1 fat12.bin -2 fat16.bin -3 fat32lba.bin -m mbr.bin freedos
This will prepare the USB stick as a bootable device ready for the remainder of the X61 BIOS installation procedure.
2. Copy the bootable ISO BIOS files to the USB stick
This step is very simple: just copy all of the files from the bootable BIOS CD provided by Lenovo onto the USB stick. The ISO file can be found for the X61/X61s
here, and for the X61 Tablet
here.
This can be done many different ways. In Windows, one must first mount the .iso file (which can be done using any of a number of different free
programs) and then copy the files over.
In Linux, the ISO may be trivially mounted and copied from the command line:
Code:
sudo mount -o loop [path to ISO file] [mount point]
sudo cp -f [mount point]/* [path to USB folder]
It should be noted that the default DOS command-line interpreter (COMMAND.COM), if present,
should be overwritten by the (much smaller) version provided by Lenovo.
3. Boot to the USB stick and follow instructions
This step should pretty much be self-explanatory. Make sure to set the boot priority of the USB device to be higher than your internal hard drive, and then reboot!
**Note: With BIOS revision 2.14, after booting to the USB device, the system may query for the location of the "COMMAND.COM" file. Should this happen to you, entering 'command.com' (without quotes) will allow you to proceed to the BIOS upgrade.**
Follow the on-screen instructions, and your BIOS should be upgraded within 5 minutes. As always with BIOS upgrades, do
not under any circumstances turn the laptop off before installation is complete, or you could turn your laptop into a very expensive paperweight.
That's it! Please let me know if you have any questions.
Mike
Revision History:
1.0.0 - Original post (June 4th, 2008)
1.0.1 - Updated for BIOS revision X61/61s 2.14, Added "1. Format the USB stick to be a DOS boot device (Linux)" (July 30th, 2008)
1.0.2 - Added ISO links for the X61 Tablet (August 5th, 2008)
Bookmarks