Monday, April 9, 2012

Toshiba z835-P330 bios update from linux

The Toshiba z835 laptop has a severe drawback: its fan noise. Or it had a drawback since the 1.6 bios update fixes it. As Toshiba don't provide linux instructions for bios update, I wrote this quick howto.

Edit: fixed typos in commands and updated to 1.7 bios.

What you need


  • A Toshiba z835-P330 laptop (or similar model that has the fan noise problem).
  • A USB disk/key/dongle with no worthy content on it (it will be blanked).
  • The Bios update file from Toshiba.
  • Linux installed on your computer. In this tutorial, I use Archlinux, but you can adapt the steps to most distributions.

Instructions

The idea is to create a usb disk with the bios iso on it, boot on that disk to run the update. The instructions are mostly adapted from this.

First, you need to install required software:

  • dosfstools (for mkfs.vfat)
  • mtools (for mcopy, used by syslinux)
  • syslinux (to make a bootable usb disk)
  • parted (to change boot flags)
  • unzip (to unzip from the command line)

In Archlinux, you can install these packages with:

pacman -S mtools dosfstools syslinux parted unzip

Then, you are interested in the iso file contained inside the Toshiba-provided bios exe.

unzip t224v170.exe t224v170.iso

Alright, now you need to create a bootable usb disk. Here, I'll assume that your disk is /dev/sdb1. It is crucial that you make sure it's the correct path as the subsequent commands would destroy your primary hard drive content. You can use dmesg to determine the device associated with your usb disk just after plugging it in.

dmesg
...

[ 1388.663706] USB Mass Storage support registered.
...
[ 1389.760965]  sdb: sdb1
...

The content of the usb drive will be deleted. So make sure nothing of value sits in there. First, unmount the partition if it was mounted.

sudo umount /dev/sdb1

Then make a dos filesystem out of it

sudo mkfs.vfat /dev/sdb1

Add a boot sector to the device

sudo syslinux -m /dev/sdb1

And install syslinux to manage the boot. Note that if your partition does not end in "1", you need to change the second command with the correct number.

sudo syslinux -i /dev/sdb1
sudo parted /dev/sdb set 1 boot on

Mount the newly created partition to /mnt (use a different directory if something is already mounted there).

sudo mount /dev/sdb1 /mnt

Copy syslinux support files

sudo cp /usr/lib/syslinux/{memdisk,vesamenu.c32} /mnt

Also copy the bios iso file

sudo mkdir /mnt/bios
sudo cp t224v170.iso /mnt

Create the /mnt/syslinux.cfg configuration file

DEFAULT vesamenu.c32

TIMEOUT 30

PROMPT 1
#DISPLAY boot.msg
#F1 boot.msg
#F2 f2
#F3 f3

LABEL z835 1.7 bios update
KERNEL memdisk
INITRD /bios/t224v170.iso
APPEND iso raw

Unmount the usb disk

sudo umount /dev/sdb1

And there you go. You can reboot your laptop with the usb disk inserted (make sure usb boot is active in the bios), plug your power supply and enjoy the bios update. After rebooting, the fan of your laptop will not rotate constantly as it used to do but rather only fire up when the situation gets too hot.