Linux: Updating BIOS on an Old SCSI Controller

I have a FreeBSD file server sitting in my office that has happily been serving files for a few years now. But the server is built from a conglomeration of very old parts and some of them are now wearing out. I am in the process of building another PC from old parts to replace the existing server.

One of the old parts is an Adaptec 29160 SCSI controller that will host a used Maxtor Atlas 10K4_36LWS 36 GB SCSI drive and a used Seagate ST173404LC ~80 GB SCSI drive. The Seagate, having an 80-pin connector, has an adapter to get it to work with the 68-pin cable for the Adaptec. When I got the "new" server assembled and booted it to run the SCSI disk utilities and reformat the drives, the controller saw the Seagate drive as a 4 GB drive. This just would not do. I needed a BIOS update for the 29160 controller which Adaptec supplies as an .exe for extraction and use with a bootable floppy.

Here's the problem, my new PC systems all are built without floppy drives. The motherboards do not even have floppy controllers on-board. I have been meaning to buy a USB attached floppy drive Real Soon Now™ for about 2 years and never have. I am doing the work to replace the server this weekend because the old system cannot even be backed up at this point. It gives SCSI errors and reboots if lots of disk calls are made sequentially, which happens when streaming data to the backup server. So, I need to get this server replaced now, today.

The "new" server does have a floppy drive as it is using an older technology motherboard and I have some floppy drives sitting on a shelf in my office, just in case I need one … like today. My Linux router built from a ~5 year old Compaq Presario tower PC that was given me by a friend / client, also has a floppy drive. My Mandriva Linux desktop business PC is running VirtualBox with a copy of Windows XP Professional installed in a virtual machine. So, I figured out a process to get a floppy made from which I could boot the "new" server and update the 29160's BIOS.

First I ran this command to create a 1.44 MB diskette image file:

mkdosfs -C 29160upd.img 1440

Then I started the XP Pro virtual machine, mounted the diskette image and "formatted" it as a bootable diskette. Once that completed I ran the .exe from Adaptec to extract the BIOS update utility and files and copied those to the mounted diskette image. Then I detached the image from the virtual machine and copied it to my Linux router, where a floppy drive resides. But wait … there were no floppy devices in the /dev/ directory. This was a stumper. But this command found something interesting:

locate floppy|grep dev/

I noticed a file for udev, the device creation and maintenance utility, that looked promising:


A quick look at the help output for create_floppy_devices gave the clue I needed. This command, run as root, made the floppy devices that I needed to use the floppy drive:

/lib/udev/create_floppy_devices -c fd0

Then I used the good old 'dd' command to copy the diskette image to a floppy disk:

dd if=29160upd.img of=/dev/fd0

I had to try three old diskettes before I found a good one. Once that completed without errors I removed the diskette, placed it in the "new" server, detached the SCSI cable from the controller per the instructions that came with the utility, and powered on the "new" server to boot from the diskette. The BIOS update ran successfully and the controller "saw" the correct size of the Seagate drive. It is now reformatting that Seagate drive for use with a fresh FreeBSD install.

Hopefully, some of you that find this article will be able to use this information to fix your own old controller or motherboard that requires a diskette based utility. If you do, please share a comment with us about your experience.

free hit counter download

Notice: All comments here are approved by a moderator before they will show up. Depending on the time of day this can take several hours. Please be patient and only post comments once. Thank you.


Published by

Gene A.

Gene is a "Unix Guy", network technologist, system trouble-shooter and IT generalist with over 20 years experience in the SOHO and SMB markets. He is familiar with and conversant in eComStation (a.k.a. OS/2), DOS (PC, MS and Free), Unix, Linux and those GUI based systems from Microsoft. Gene is also a follower of Jesus (forgiven, not perfect), and this does inform his world view.

15 thoughts on “Linux: Updating BIOS on an Old SCSI Controller”

  1. For the record, I could have used FreeDOS running in a VM to edit the diskette image. I have not set up a FreeDOS VM yet, but that is on the list of Things I Would Like To Do Someday. 🙂

    1. So, while running restore of data to my "new" server from backups, I set up a FreeDOS VM. It only took 15 minutes or so, since I already have the FreeDOS full install CD ISO file. Now the next time I need to edit a diskette image, I know I can use all "free" software. Yay! 🙂

      Unfortunately I have to keep a Microsoft VM to do testing and support for those who insist on using Microsoft systems. 🙁 Otherwise, I would have no reason to have that.

  2. for floppy drive which u dont have it, use grob4dos to emulate, work very well
    grub4dos can be booted form grub legacy, grub2, even from nt boot loader 🙂
    my usuall emulated floppy drive command in grub4dos config file
    map –mem /floppy144.img (fd0)
    map –hook
    root (fd0)
    chainloader +1

    1. Hi antro, I think what you are recommending is so that one can boot a diskette image from grub? states:

      "GRUB for DOS is the dos extension of GRUB. It enables dos users to run the configuration console directly in real mode. The project also contains an utility called WINGRUB, an GUI intends to help configuring and installing GRUB in the WINDOWS environment"

      I didn't do much more digging as that is not what I needed here, if booting a diskette image from Grub is what this does. I had a machine that had no OS installed, a floppy drive installed and the SCSI controller that needed updating. I am not sure GRUB4DOS is workable in that scenario.

      1. once we can boot grub4dos, we can do all grub4dos commands
        grub4dos can be installed as replacement eltorito cd, installed to usbstick and more

  3. When I updated my netbook BIOS I used a USB stick with a FreeDos image, made by UNetbootin. It boots a floppy image off the USB stick. The only trouble was that a 1.44MB floppy was to small, so I had to do some poking around to get a 2.88MB version. It works very well if the machine is able to boot from USB.

  4. Gene, if the floppy image is one that is bootable, meaning has the and msdos.sys and the other file on it that makes it bootable then you could have used that grub4dos patch.  Otherwise it wont help you as you stated.  Now if you created a boot diskette on another computer and copied the bios update software to the bootable floppy, then you could have used the grub4dos patch.  This is just a side note.  🙂

  5. you rename the end of the file from ".exe" to ".zip" and open it – it usually works.
    if not – rename it to ".rar"
    then you will see all the crap – including the raw 1.44meg floppy image.
    take the image and mount it with the loop device.
    then copy the files from it to a folder.
    now you will either have a flasher & a bios dump, or a combined exe.
    if it's an exe – do the rename trick again, or run it in wine!

  6. I have the exact same card and its companion the 39160. Since I did have a floppy s drive but it wouldn't read disks I made dosflash drive and put all the tools and such on a 16MB flash drive I had flashed the card and now it living with 3 18G B 10K drives running Solaris 10 5/08. I fit will boot from flash, I'd do that the other stuff is too much work!


    I usually just use genisoimage with the -b <floppy image> flag to generate a bootable CD.  I've found this to be MUCH more reliable than using ancient floppies to do the job.  I've lost more than a few pieces of hardware due to bad floppies or floppy drives, but I've never lost one due to a bad CD burn.

    1. Brian, I thought about using a CD. But when I read the instructions for the update utility it states it saves a backup of the original BIOS firmware before it will flash the new code. If the backup does not exist then it keeps trying to make one. I know of no way to save that backup image to a CD from a DOS boot, do you? 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

Follow the directions below to post a comment if you are human. After 3 failed tries reload the page to start with new images.