PDA

View Full Version : How to Upgrade the Thinkpad x61 BIOS


mbsullivan
June 4th, 2008, 02:03 AM
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.20 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.23 and 1.03, 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 and 2.14 to 2.20, 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:

X61/X61s:
1. A Win32-only executable (http://www-307.ibm.com/pc/support/site.wss/MIGR-67982.html)
2. A bootable DOS CD-ROM disc (http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67983)


X61 Tablet:
1. A Win32-only executable (http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-68005)
2. A bootable DOS CD-ROM disc (http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-68006)

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 BIOS v2.07, which was released in January 2008, 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 (http://ubuntuforums.org/showthread.php?t=658065&highlight=USB) and here (http://ubuntuforums.org/showthread.php?p=4083012&posted=1#post4083012)). Later BIOS revisions have dealt with other firmware bugs, such as WOL (Wake on LAN) errors, POST issues and CardBus and 1394 bugs. Some BIOS release between 2.14 and 2.20 (for the x61/x61s) fixes DSDT problems that have cropped up with recent kernels.

That being said, a BIOS upgrade not a necessity. There are workarounds for many of 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 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

The instructions for Step 1 are given both using a Windows computer, as well as one running Linux. This issue is not unique to Linux users, and also affects users of a 64-bit Windows operating system.

1. Format the USB stick to be a DOS boot device (Windows)

There are multiple ways (http://www.bootdisk.com/pendrive.htm) 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 (http://www.bootdisk.com/plan30/hpflash1.zip) 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 (http://files.extremeoverclocking.com/file.php?f=196) .

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)

I had previously posted instructions on how to properly format a USB stick under Linux. A rough copy of these instructions can be found here (http://ubuntuforums.org/showpost.php?p=5544555&postcount=26). However, it soon became clear that the procedure was finicky at best, and did not work for all users.

Since then, I have come to the conclusion that by far the simplest and least risky way to format a USB stick under Linux is to prescribe to the same method that was used under Windows, by formatting the USB stick as a (proprietary, but gratis) Windows 98 boot disk. Furthermore, the simplest way to do so is to copy an image of a bootable USB stick directly onto the USB device.

First, insert your USB stick and determine what device it is assigned to. This is fairly simple by looking at the output of:

sudo fdisk -l

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. Use the name of the root device, and omit any partition numbers that may follow the device name.**

After you have discovered your USB stick device name, download the raw bootable USB stick image ("win98usb.tar") which is attached to this post. We will copy this image directly onto the USB device, which will thrash any existing file system. Therefore, remove all data before proceeding.

**Note: The bootable USB stick which was used to create this image contained a 2GB partition. The image should work for USB sticks with a capacity of greater than or equal to 2GB. I am not sure what will happen if used with a smaller device. If somebody tries, please let me know what happens.**

Untar the bootable USB stick image into the current directory. The only reason that the image is tarred is in order to comply with the Ubuntu Forums filetype restrictions for uploads.

tar -xf ./win98usb.tar

Unmount the USB stick, either through Nautilus or with the following command:

umount -f [path to root folder of mounted USB stick]

Once the USB stick is unmounted, copy the image onto the device with the following command:

sudo dd if=win98usb.img of=[USB device] conv=notrunc

The dd command should not take long, and will produce output similar to the following:

$ sudo dd if=./win98usb.img of=/dev/sdc conv=notrunc
1214+0 records in
1214+0 records out
621568 bytes (622 kB) copied, 0.193487 s, 3.2 MB/s

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 (http://www-307.ibm.com/pc/support/site.wss/license.do?filename=mobiles/7nuj20uc.iso), and for the X61 Tablet here (http://www-307.ibm.com/pc/support/site.wss/license.do?filename=mobiles/7suj17uc.iso).

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 (http://www.google.com/search?hl=en&client=firefox-a&channel=s&rls=com.ubuntu%3Aen-US%3Aofficial&hs=Gyr&q=windows+mount+iso&btnG=Search)) and then copy the files over.

In Linux, the ISO may be trivially mounted and copied from the command line:

sudo mount -o loop [path to ISO file] [mount point]
sudo cp -af [mount point]/* [path to USB folder]

Where [path to ISO file] is the path to the CD ISO image, [mount point] is wherever you want to mount the CD image to (you can choose this, /cdrom/ works), and [path to USB folder] is the location of your mounted USB drive.

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 v2.14 and after, 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)
1.0.3 - Removed the Linux instructions, due to troubles reported by users (August 9th, 2008)
1.0.4 - Updated the links for the most recent BIOS updates (2.20/2.23)
1.0.5 - Added new Linux instructions (May 27, 2009)
1.0.6 - Minor update to Linux instructions

gil2008
June 25th, 2008, 05:41 AM
works perfekt.

for 2.14 bios, release date 2008/06/13 too.

many thx

mbsullivan
July 3rd, 2008, 03:26 AM
works perfekt.

for 2.14 bios, release date 2008/06/13 too.

many thx

Thanks for the kind words, and I'm glad the instructions are clear enough to have worked for at least one person :)

If anybody else has any problems, I'm subscribed to the thread so that I should be able to field any concerns in the future. The BIOS upgrade improves the embedded fan speed controller and seems to make suspend-to-RAM more reliable, so I think it's a good idea for x61ers.

Mike

darkbeethoven
July 4th, 2008, 02:53 AM
GREAT tutorial. You hit the nail on the head.

I just finished upgrading my X61s to the latest bios.

Thanks again!

StickyTape
July 4th, 2008, 01:22 PM
Works fine, thanks. The best thing is seeing that other people have done so without problems as I was a little worried about frying the X61.

The first time I overwrote the Win98 command.com file with the Lenovo one, using a simple copy and paste in windows, the flash drive failed to boot. It didn't like the command.com file. I then copied the DOS files from the ISO image to a new folder and pointed the HP USB tool to that folder. After booting fine, I ran updtflsh.exe to upgrade. I imagine that the Ubuntu commands avoid this. But anyway, a tip for those who do not yet have Linux or similar installed.

mbsullivan
July 4th, 2008, 02:18 PM
I'm glad to hear that we're at least 4/4 for not destroying our laptops upgrading the BIOS :)

The first time I overwrote the Win98 command.com file with the Lenovo one, using a simple copy and paste in windows, the flash drive failed to boot. It didn't like the command.com file. I then copied the DOS files from the ISO image to a new folder and pointed the HP USB tool to that folder. After booting fine, I ran updtflsh.exe to upgrade. I imagine that the Ubuntu commands avoid this. But anyway, a tip for those who do not yet have Linux or similar installed.

I don't know why copying the files via Windows Explorer would make a difference, but thanks for the tip :)

**NOTE: I tried the entire operation in Windows recently (to update to BIOS 2.14, and had no problem with Windows Explorer. I'm not sure what the issue StickyTape was experiencing, but if anybody else has the same one, he described a possible solution above.**

Mike

MadeTheSwitch
July 14th, 2008, 12:21 AM
Excellent guide, works like a charm.

I want to make one note - when the HP utility finished running, the USB drive will appear empty. No matter if you try to unhide files or whatever, it will seem that way.

Do NOT attempt to copy over the system files from the win98 directory! that will cause a crash on boot from the USB stick.

What happens is that Windows is configured to "super-hide" the essential files, so while they are there, you can't see them. Just copy over the files from the ISO - accepting to overwrite of command.com (that's you indication that even though they don't show, essential files were copies) - and keep going.

StickyTape
July 25th, 2008, 09:02 AM
Has anyone had any luck installing the HD firmware upgrade below? The file is FWSH20.iso.

http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-63685

I mounted the image within Linux but could still not see any files, nor could I open them within Windows. The format of the image is such that it cannot be viewed, thus it cannot be copied to a USB stick with 'cp' command or otherwise.

Any ideas?

mbsullivan
July 25th, 2008, 03:25 PM
**Note: To clarify, the following discussion pertains to a Lenovo Hard drive firmware update bootable ISO, not the BIOS bootable ISO.**

I mounted the image within Linux but could still not see any files, nor could I open them within Windows. The format of the image is such that it cannot be viewed, thus it cannot be copied to a USB stick with 'cp' command or otherwise.

Interesting question... The files can't be viewed because the ISO is made with a different bootable technique ("hard disk emulation" instread of "floppy disk emulation"). See here (http://www.nongnu.org/lpi-manuals/lpi-201/html/ch04s04.html) for details.

I'll have to think about this one... My guess is that it's possible using dd somehow, though it may take some hacking.

Also, I just noticed that many other versions of the BIOS have been released (up to 2.14)! I'll take a crack at updating the tutorial over the next couple of days to reflect what has come to light, and make sure everything's on the level for the newest BIOS revision.

Mike

mbsullivan
July 25th, 2008, 08:49 PM
I'll take a crack at updating the tutorial over the next couple of days to reflect what has come to light, and make sure everything's on the level for the newest BIOS revision.

Hi All,

I just wanted to put a note at the bleeding edge of the conversation that the tutorial has been updated: version 2.14 is not incorporated, and instructions to update using Linux only (at long last) have been posted.

Let me know if anybody runs into any trouble with the process!
Mike

mbsullivan
July 25th, 2008, 09:32 PM
Has anyone had any luck installing the HD firmware upgrade below? The file is FWSH20.iso.

http://www-307.ibm.com/pc/support/si...cid=MIGR-63685

I mounted the image within Linux but could still not see any files, nor could I open them within Windows. The format of the image is such that it cannot be viewed, thus it cannot be copied to a USB stick with 'cp' command or otherwise.

Any ideas?

Okay... I looked into this / thought about it some more. I'm sure it's possible, but it may require parsing the CD-ROM binary data (which follows the El Torito Specification (http://www.phoenix.com/NR/rdonlyres/98D3219C-9CC9-4DF5-B496-A286D893E36A/0/specscdrom.pdf) and extracting the files manually.

A software engineer named Michael Kennett seems to have written a program to do something like this, and talks about it on his blog here (http://laurasia.blogspot.com/2005/10/touring-el-torito-viewing-minix-3.html). However, his webserver that held the program seems to be down, now. I've e-mailed him... we'll see if he responds.

It's not clear how much work it would take to make this work... Why (if you don't mind me asking) are you interested in the hard drive firmware update utility? What's it do? From the Lenovo page, it looks like it's mostly applicable for Vista users...

Mike

StickyTape
July 26th, 2008, 07:47 AM
It's not clear how much work it would take to make this work... Why (if you don't mind me asking) are you interested in the hard drive firmware update utility? What's it do? From the Lenovo page, it looks like it's mostly applicable for Vista users...

Mike

In my particular case the HDD on my X61 is not listed as those included (HTS542516K9SA00), though similar models are. I was going to run it just in case due to a common freeze problem while on battery, running Vista x64 Business. This seems to be corrected with an updated turbo mem driver from Intel, not repackaged from Lenovo. Some people have reported better performance in Vista and XP after the firmware upgrade, but then they do that all the time! It is made to correct errors on these OS.

My question, then, is more out of curiosity than out of necessity and is open-ended. I see noone else talking about it so I would not waste time on it unless it affects your own laptop.

That said, opening the ISO with 7Zip shows a [BOOT] folder containing "Bootable_HardDisk.img". It is 512 bytes while the ISO is 30MB. No luck finding the rest of the contents.

evergreen
July 26th, 2008, 11:19 AM
hi I'm trying to download BIOS (2.07) & BIOS (2.14) from lenovo.com uk support downloads & drivers

I keep getting a "504 Gateway Time-out"

I've trying your link & going to the site & using wget I can't seem to get those files.

Does anyone have them? Could someone send me them?

bios@TempEMail.net

Thanks

mbsullivan
July 26th, 2008, 03:43 PM
hi I'm trying to download BIOS (2.07) & BIOS (2.14) from lenovo.com uk support downloads & drivers

I keep getting a "504 Gateway Time-out"

I've trying your link & going to the site & using wget I can't seem to get those files.

Does anyone have them? Could someone send me them?

bios@TempEMail.net

Thanks

Right you are... Lenovo's support site (hosted on IBM servers) appears to be down right now. I've still got the 2.14 ISO on my machine, I'll send it your way.

Mike

PS: I've bzip2'ed it in a tarball, such that the proper way to extract it is:

tar -xjf 7nuj14uc.iso.tar.bz

mbsullivan
July 26th, 2008, 03:48 PM
That said, opening the ISO with 7Zip shows a [BOOT] folder containing "Bootable_HardDisk.img". It is 512 bytes while the ISO is 30MB. No luck finding the rest of the contents.

I'm not positive, but I think it's extracting the boot image. A Perl app named geltorito (http://freshmeat.net/projects/geteltorito/) gave me the same thing, as I recall.

I won't have much time to work on this right now, but I'll keep it in the back of my mind. We may figure a way to make it work.

Mike

PS: Michael Kennett, who wrote the rip3 program I mentioned earlier, got back to me by e-mail. He's looking for the source code (which is a couple of years old). Maybe we can hack his project to work for our purposes.

evergreen
July 26th, 2008, 05:13 PM
Cheers for the reply mbsullivan I've sent you a private message with my gmail email could you send the file to me there. Temp mail doesn't seem to be working.

Thanks again

wow just checked my mail the file is already there many thanks :)

mbsullivan
July 27th, 2008, 01:08 AM
Cheers for the reply mbsullivan I've sent you a private message with my gmail email could you send the file to me there. Temp mail doesn't seem to be working.

Thanks again

wow just checked my mail the file is already there many thanks

Let me know if everything goes well. Are you doing the Windows way, or through Linux only?

Mike

evergreen
July 27th, 2008, 10:20 AM
All went well upgrading from bios 1.06 to 2.14 I used my mums windows computer to make the bootable usb.

The first few attempts didn't work I was using a SanDisk 4gb usb stick with U3 software on it. I would boot in to a black screen.

I went home and got my ocz 1gb usb, it doesn't have any u3 software on it. I follow the windows parts of you tutorial and all went very smoothly.

Once again great tutorial and thanks for the fast reply yesterday in sending me the bios update, It was very nice of you.

mbsullivan
July 27th, 2008, 04:04 PM
The first few attempts didn't work I was using a SanDisk 4gb usb stick with U3 software on it. I would boot in to a black screen.

Hmmm... Interesting! That's good to know.

Once again great tutorial and thanks for the fast reply yesterday in sending me the bios update, It was very nice of you.

Thanks for the kind words. I'm glad the upgrade worked for you!

Mike

millerl
August 1st, 2008, 02:00 AM
Thanks for the guide!
Exactly what I was looking for!

Didn't have a single problem and am now running 2.14
:)

mbsullivan
August 1st, 2008, 02:44 AM
Thanks for the guide!
Exactly what I was looking for!

Didn't have a single problem and am now running 2.14


Glad to hear it!

Did you use the Windows or Linux instructions? I want to make sure the Linux ones are understandable and have no bugs (they're fairly new).

Mike

speedkreature
August 3rd, 2008, 04:08 AM
Thank you so much. With very little modification, I was able to use this to upgrade the BIOS on a SuperMicro server board. Thanks to the result of this little how-to, you've helped put an end to 9 days of torment. I can finally go home. Thank you.

I more or less followed your instructions to a tee however, instead of the X61 BIOS ISO, I created an ISO from the SuperMicro Drivers using ISO Master (in the repos), copied those files, then repeated the copy process with a Windows98SE boot disk ISO I got from http://www.allbootdisks.com/download/iso.html.

Best. How-to. Ever.


Ciao!

schmolch
August 4th, 2008, 02:43 PM
I tried to update the BIOS of my Thinkpad X60T but it failed.

I booted the USB-Stick and got into the Setup.
When i chose to update the BIOS i got this message that says "this will take a minute, dont turn off your computer blablabla..." and about 10 seconds later my whole screen was flashing with "invalid opcode blablabla, DIE DIE DIE...",
Needless to say that i was scared shitless since this tablet-pc is really important to me because i do all my stuff for university on it.

Anyways, its still working.
Not sure if i want to investigate this, im still scared.

I still want to thank you though because i tried several of these "how to update your bios without windows" guides and never got this far.

millerl
August 4th, 2008, 10:09 PM
Glad to hear it!

Did you use the Windows or Linux instructions? I want to make sure the Linux ones are understandable and have no bugs (they're fairly new).

Mike

Unfortunately, laziness prevailed and I used the running windows box in the next room...

mbsullivan
August 5th, 2008, 12:47 AM
Thank you so much. With very little modification, I was able to use this to upgrade the BIOS on a SuperMicro server board. Thanks to the result of this little how-to, you've helped put an end to 9 days of torment. I can finally go home. Thank you.

I'm glad to hear it worked for you! It seems that booting to a USB key should be so simple, but it's a bit more involved than it perhaps should be. It's good to hear that the instructions work for other ISOs, too.


I booted the USB-Stick and got into the Setup.
When i chose to update the BIOS i got this message that says "this will take a minute, dont turn off your computer blablabla..." and about 10 seconds later my whole screen was flashing with "invalid opcode blablabla, DIE DIE DIE...",
Needless to say that i was scared shitless since this tablet-pc is really important to me because i do all my stuff for university on it.


Wow, that is indeed frightening! I would probably mess myself if that happened to me. I'm happy to hear that your tablet was not destroyed... lucky!

As for the problem, did you perhaps use the X61 ISO instead of the tablet one? There is a special ISO for the X61 tablet, which is still at a much earlier version (1.17, 2008/06/13). It is available here (http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-68006).

My guess is that the Tablet BIOS CD should work fine... that being said, nobody's tried it yet. If this is, in fact, what you were experiencing, then I should really add a warning to the tutorial. Thanks for the input!

*EDIT*: I just read the tutorial again, and I see that I say it will work for the X series tablet in the first sentence, but then never give a link to the tablet ISO. I'm very sorry about that. I have revised the tutorial.

Mike

tarlipe
August 7th, 2008, 07:43 PM
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:

X61/X61s:
1. A Win32-only executable (http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67982)
2. A bootable DOS CD-ROM disc (http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67983)


X61 Tablet:
1. A Win32-only executable (http://www-307.ibm.com/pc/support/site.wss/MIGR-68005.html)
2. A bootable DOS CD-ROM disc (http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-68006)

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 (http://ubuntuforums.org/showthread.php?t=658065&highlight=USB) and here (http://ubuntuforums.org/showthread.php?p=4083012&posted=1#post4083012)). 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 (http://www.bootdisk.com/pendrive.htm) 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 (http://www.bootdisk.com/plan30/hpflash1.zip) 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 (http://files.extremeoverclocking.com/file.php?f=196) .

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:

sudo fdisk -l

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:

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:

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:

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 (http://advancemame.sourceforge.net/boot-download.html). 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:

[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 (http://www.freedos.org/) and SYSLINUX (http://syslinux.zytor.com/wiki/index.php/The_SYSLINUX_Project) 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 (http://ben.franske.com/blogs/2007/08/21/booting_dos_from_a_usb_flash_drive).

Download the essential configuration and system files, extract them, and go to that folder:

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:

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 (http://www-307.ibm.com/pc/support/site.wss/license.do?filename=mobiles/7nuj10uc.iso), and for the X61 Tablet here (ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/7suj11uc.iso).

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 (http://www.google.com/search?hl=en&client=firefox-a&channel=s&rls=com.ubuntu%3Aen-US%3Aofficial&hs=Gyr&q=windows+mount+iso&btnG=Search)) and then copy the files over.

In Linux, the ISO may be trivially mounted and copied from the command line:

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)
Hello guys,

I've tried to upgrade my X61 BIOS from version 2.07 to 2.14 and get the following output while trying to write the update:

"Invalid Opcode at 3A29....
Invalid Opcode at 3A29....
Invalid Opcode at 3A29....
Invalid Opcode at 3A29....
" in an endless loop until I pressed and hold the power button.

Thanks a lot in advance for any clue.

Tarlipe

mbsullivan
August 8th, 2008, 01:57 AM
Hello guys,

I've tried to upgrade my X61 BIOS from version 2.07 to 2.14 and get the following output while trying to write the update:

"Invalid Opcode at 3A29....
Invalid Opcode at 3A29....
Invalid Opcode at 3A29....
Invalid Opcode at 3A29....
" in an endless loop until I pressed and hold the power button.

Thanks a lot in advance for any clue.

Tarlipe

Hi Tarlipe,

Are you using a Tablet or a regular X61? Also, did you use the Windows or Linux version for step #1?

Mike

schmolch
August 8th, 2008, 09:40 AM
As for the problem, did you perhaps use the X61 ISO instead of the tablet one? There is a special ISO for the X61 tablet, which is still at a much earlier version (1.17, 2008/06/13). It is available here (http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-68006).


I used the correct iso. I have the product-number of my x60t memorized (6363-a7g) and just enter that on the support & download section which brings me to the x60t page from where i pick the bios-iso.

Common sense would ask to simply repeat the whole procedure but i don't really need a bios-update and don't want to take the risk.

tarlipe
August 8th, 2008, 09:51 AM
Hi Tarlipe,

Are you using a Tablet or a regular X61? Also, did you use the Windows or Linux version for step #1?

Mike
I did the Linux version for step#1. Should I try on windows?

thanks for your answer

tarlipe
August 8th, 2008, 02:25 PM
With the windows version for step#1, it worked like a charm!
It just need to type command.com and everything went right.

Thank you.

mbsullivan
August 9th, 2008, 02:10 AM
With the windows version for step#1, it worked like a charm!
It just need to type command.com and everything went right.

Thank you.

... That is both good and bad news (for me, anyway). This means the Linux upgrade instructions are flawed, somehow.

They worked for me (upgrade from 2.07 to 2.14 on an X61), but there must be some problem. I will try to investigate.

Mike

mbsullivan
August 9th, 2008, 05:43 AM
Hi all,

While I was not able to reproduce the errors found by schmolch and tarlipe exactly (since I already have BIOS 2.14 running), I did poke around with downgrading to a previous BIOS version, following the Linux instructions exactly.

There is some problem with the Linux portion of the instructions. Until I figure it out, I've removed those instructions from the tutorial.

Mike

pengo_au
September 1st, 2008, 03:55 AM
Updated a Thinkpad x61 bios successfully from version 1.11 to 2.16. Many thanks.

Might be worth noting, however, after step 1 that you should NOT copy up the remaining files from win98boot.zip -- the 3 system files that are copied up by the formatter are all you need in step 1.

I (stupidly) copied up all the files from win98boot.zip (and then the files from the CD) and got stuck in an endless win98 boot screen. I tried again and only copied up files form the CD and it worked fine.

Pengo.

openmoho
November 4th, 2008, 08:51 AM
it didn't work for me here. i got a blank screen with a blinking cursor, when i tried to type command.com grub appeared and booted into ubuntu. any help?

beneficity
February 2nd, 2009, 12:55 PM
Thank you

spreeendaz
May 13th, 2009, 05:50 PM
Do you know if I can also rollback/downgrade that way ? The new Embedded Controller is blocking my non-IBM battery (new battery "management" I guess) and I'd like to be able to use my battery once again.

mbsullivan
May 14th, 2009, 06:17 PM
Do you know if I can also rollback/downgrade that way ? The new Embedded Controller is blocking my non-IBM battery (new battery "management" I guess) and I'd like to be able to use my battery once again.

I can't promise you anything, but my guess is that it will work. In the past, I repeatedly flashed between two versions in order to test different methods (definitely not recommended, but I was curious).

If you try it, let me know!
Mike

spreeendaz
May 18th, 2009, 04:06 AM
I can't promise you anything, but my guess is that it will work. In the past, I repeatedly flashed between two versions in order to test different methods (definitely not recommended, but I was curious).

If you try it, let me know!
Mike

I should add the following information to my previous interrogation:

"Notes
If you update to the BIOS version 2.06-1.03 or later, you are not able to get back to the older BIOS versions."

http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67982

Do you still think it's doable even if I have version 1.11 ?

mbsullivan
May 27th, 2009, 06:41 PM
I should add the following information to my previous interrogation:

"Notes
If you update to the BIOS version 2.06-1.03 or later, you are not able to get back to the older BIOS versions."

http://www-307.ibm.com/pc/support/si...cid=MIGR-67982

Do you still think it's doable even if I have version 1.11 ?

That might change things... thanks for bringing it to my attention. But I don't think so. I assume you have an x61/x61s, you have a BIOS installed which is after 2.06/1.03, and you want to roll back to 1.11/1.02?

The way I interpret their message, I'm guessing that will be impossible. I'm not sure what would happen if you tried... It could be anything. Given the new developments, I guess I would err on the side of caution if I were you.

The only BIOSes I went back and forth between were 2.14 and 2.07. I never went as far back as 1.11, though, so I can't lend any personal experience.

Mike

mbsullivan
May 27th, 2009, 06:48 PM
**UPDATE**

I just updated the tutorial with information from the most recent BIOS, and included a new method which works without a Windows machine.

I used the new procedure to successfully flash from 2.14 to 2.20 on an x61.

The update fixed an issue that had crept up with recent kernels, where bootup would freeze after the message:

ACPI: Checking initramfs for custom DSDT

With the new firmware, I no longer need my previous workaround of the noapic and nolapic kernel options.

I would appreciate feedback from anybody who flashes to a new BIOS, especially if you try the new Linux-based procedure.

Let me know if you have any questions!
Mike

spreeendaz
May 31st, 2009, 09:37 PM
That might change things... thanks for bringing it to my attention. But I don't think so. I assume you have an x61/x61s, you have a BIOS installed which is after 2.06/1.03, and you want to roll back to 1.11/1.02?

The way I interpret their message, I'm guessing that will be impossible. I'm not sure what would happen if you tried... It could be anything. Given the new developments, I guess I would err on the side of caution if I were you.

The only BIOSes I went back and forth between were 2.14 and 2.07. I never went as far back as 1.11, though, so I can't lend any personal experience.

Mike

I am a bit confused with the notation here. I have the 1.11 version, which is higher than 1.03. Does it mean I can't rollback ? Does the 1.xx updates notation apply to the first version of the BIOS and 2.xx to the second edition ? So the 1.11 version has nothing to do with being lower than 2.06, since they are in two different series, but is higher than 1.03, so I can't rollback ?

mbsullivan
June 1st, 2009, 10:03 AM
I am a bit confused with the notation here. I have the 1.11 version, which is higher than 1.03.

There are two numbers associated with every BIOS release. The first is the BIOS version number (current version: 2.20), and the second is the embedded controller version (current version: 1.03). When I put a slash between versions (like "2.20/1.03"), I'm referring to a BIOS/embedded controller pair. See the table at the bottom of this page (http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67983) for the version history.

Does it mean I can't rollback?

If I'm understanding it correctly, then "no, you can't rollback". It is my guess that because you have 1.11/1.02, then upgrading to any BIOS revision associated with the 1.03 embedded controller will prevent you from downgrading to one with an earlier version of the embedded controller. Therefore, upgrading to any newer version will prevent you from going back to any BIOS earlier than 2.06/1.03.

Hope this helps!
Mike

PS: You said the following previously:

The new Embedded Controller is blocking my non-IBM battery (new battery "management" I guess) and I'd like to be able to use my battery once again.

How do you know that the embedded controller is the one causing problems with your battery? If you have 1.11/1.02 installed right now, then:

1. You don't have the newest embedded controller. Upgrading might fix your problem.
2. There's no public BIOS release with an older embedded controller. Every release other than the very first BIOS has v1.02 or newer... So I don't see how you could ever downgrade to something earlier.

I guess I don't understand your problem -- if your battery is already broken by 1.11/1.02, then I don't see why you'd have to worry about rolling back to it.

PetePhillips
June 6th, 2009, 02:42 PM
Hi

First of all, i used the tutorial to upgrade my X61s from 1.06-2.20 and it has worked perfectly as far as i can tell. The BIOS reports 2.20. Excellent stuff.

One thing I didn't understand - when the USB stick boots, there is a menu with 3 options. 0 was cancel (i think), so I selected option 1, expecting to be go back to the menu. However, after a VERY loud beep (after the first minute or so) it then says it will take another minute, then you get another beep (quite disconcerting!), and then it asks you to remove the CD and select the reboot option (or whatever term it uses).

I did this and it then clearly goes through some internal checks, then rebooted OK.

My question is what is the third option (option 2) which I *think* refers to updating the model number ? Is it necessary to rerun the procedure and select the 2nd option ?

Pete

mbsullivan
June 8th, 2009, 02:57 AM
My question is what is the third option (option 2) which I *think* refers to updating the model number ? Is it necessary to rerun the procedure and select the 2nd option ?

No, this option is unnecessary. It's most likely for corporate users.

It sounds like you selected the right option, and successfully upgraded your BIOS. Congrats!!!

Mike

PS: Which method did you use, the Windows or Linux version?

PetePhillips
June 8th, 2009, 11:11 AM
PS: Which method did you use, the Windows or Linux version?

The Linux version (of course!).

Pete

mbsullivan
June 8th, 2009, 05:50 PM
The Linux version (of course!).

Pete

Excellent! You're the first one to have tried it (and told me), apart from myself. I'm glad it worked!

Just out of curiosity, how big was the thumb drive that you loaded the image onto?

Mike

PetePhillips
June 10th, 2009, 04:37 PM
2Gb

(hadn't realised i was being a trail blazer! <gulp>)

Pete

nswilliams
June 16th, 2009, 03:26 AM
Linux only instructions worked fine for me. I did find these instructions a little ambiguous at first though:
sudo mount -o loop [path to ISO file] [mount point]
sudo cp -af [mount point]/* [path to USB folder]

mbsullivan
June 16th, 2009, 05:54 PM
Linux only instructions worked fine for me. I did find these instructions a little ambiguous at first though:
sudo mount -o loop [path to ISO file] [mount point]
sudo cp -af [mount point]/* [path to USB folder]

I'm glad it worked! Thanks for the feedback...

I added the following sentence after the code snippet. Do you think it helps?

Where [path to ISO file] is the path to the CD ISO image, [mount point] is wherever you want to mount the CD image to (you can choose this, /cdrom/ works), and [path to USB folder] is the location of your mounted USB drive.

Mike

cprov
July 31st, 2009, 09:49 PM
Excellent! It worked perfectly. Thanks a lot.

drear
November 3rd, 2009, 09:16 AM
Good instructions, thank you. Flashed my x60s and everything worked out fine.