I am the original requester/tester for this new BIOS. Let me try to answer the questions that have come up with regards to this enhanced BIOS.
First a little background on IDE transfer modes. There are three types of transfer modes (PIO, MDMA, & UDMA) supported by the IOpener VIA Southbridge chip. Each mode defines the protocol used to send data between the storage device (Harddisk, CD or DVD drive) and the CPU or Memory. Within each protocol there are different maximum transfer speeds support as defined by how quickly the "Data Valid" signal can be raised and lowered. The actual transfer speed you get depends on three things. What the IDE controller in the Southbridge can support, what the attached device (Harddisk, CD, DVD) can support, and most important what the software driver decides to use.
The IDE transfer modes have evolved over time starting with PIO (the slowest) and ending with UDMA (the fastest). So all drives support PIO mode, most support MDMA, and the “newer” drives support some speed of UDMA. The big difference between PIO and either flavor of DMA is the amount of CPU resource required to transfer a block of data. PIO stands for Programmed Input/Output and as its name implies the CPU must read or write each word (two bytes) of data to or from the IDE cable. It is possible to play DVD movies using PIO but you must have a fast CPU and a good graphics card neither of which apply to the IOpener. The two DMA modes use a separate IDE Bus Master DMA controller to move data between the device and memory with the CPU only needing to do initial setup. When the operation completes the CPU is interrupted. The DMA engine can transfer one sector (512 bytes) up to 100’s of megabytes depending on what is specified in the setup table. The advantages of UDMA over MDMA is higher data rates (both raising and falling edges of the data valid signal qualify data giving a 2x increase) and data transfers are covered by an error detecting CRC code.
So if you want the safest data transfer independent of speed you want some form of UDMA since PIO and MDMA offer no error detection if bad data is read or written to/from your hard drive due to a signaling error. For the IOpener this means you want UDMA-2 (max 33 MB/s). The VIA Southbridge does support UDMA-4 (max 66 MB/s) but for any software driver to even think of using this mode it must detect an 80 wire IDE cable (extra ground wire between each signal wire) and the IOpener is not wired for this. Keep in mind that these high rates (33/66 MB/s) are only burst rates from a drive (i.e. data read to/from a buffer) and sustained rates from the disk surface are normally much lower. There is also setup overhead that eats into the burst rate and lowers the average.
Now let’s look at the IOpener and see what has to be in place to get the maximum out of whatever hard disk you have attached to it. The original IOpener only had a Flash memory connected on the IDE port so the BIOS written to setup the IDE configuration registers left most setting at their default values as defined by the VIA data sheet. This means that UDMA is disabled and PIO and MDMA speed settings (which use the same set of registers) are set for a 600 nsec cycle time per two bytes transferred. That translates to a maximum speed of 3.333 MB/s. So the best you could do prior to this new BIOS was something less than 3.3 MB/s. MDMA is still much better than PIO due to the much reduced CPU overhead.
During my testing, prior to the new BIOS, I had one disk drive that would not go into MDMA mode. It was an old notebook drive but still supported MDMA and UDMA. After connecting it to a logic analyzer I determined that the flash controller which I had disabled by lifting one of the chip select lines (pin 37) was still driving a line called DMA Request to the inactive state (ground) which prevented the notebook drive from getting into MDMA mode. Once I lifted this pin (pin 48) MDMA mode was enabled. So keep that in mine if you are stuck in PIO mode.
The operating system I use now on all my IOpeners is WinXP. It is the best OS for the IOpener if you have at least 128MB of RAM (256 MB is possible with a 16 chip SODIMM). WinXP has all the drivers built-in to support the native IOpener display and either sound chip and USB port. No need for anything else like VIA 4in1. Just be sure to disable the printer port from using a DMA engine in BIOS if you have the Yamaha chip and manually install a generic 56K modem driver. You must install WinXP on the hard drive when it is installed in the IOpener. This is done by disabling the Flash controller (lift pin 37 and 48) and connecting an external CDROM drive to the IOpener. I have an IMod3 disk adapter board that includes a built in 40 pin IDE connector so all I do in connect an IDE cable to it and the CDROM drive. An old PC power supply runs the CDROM which is powered on first before the IOpener. WinXP loads custom chipset drivers during the first boot so if you install on a different machine and then try to move it to the IOpener, like we did for Win98, you will most likely get the Blue Screen of Death. With WinXP it is very easy to determine which IDE mode is active by going to the device manager screen.
This new BIOS does two things that improve the performance of your IOpener‘s disk transfers. The value 0xA8 that limited the PIO and MDMA speeds to less than 3.33 MB/s is changed to 0x20 which moves the max up to 16.6 MB/s. Second it sets up the UDMA registers with values that support 33.3 MB/s. Keep in mine that in order to get any DMA mode running you need a driver. If you just run basic DOS you are limited to PIO transfers. With this BIOS the time to transfer two bytes in PIO mode is reduced from 600 nsec to 120 nsec but you still have all the CPU overhead to move the bytes around. However, in my testing of WinXP I have found that it only uses PIO mode during Hibernate mode when it copies all of memory to the hard disk and the decrease in time is significant with a K6-III+ running at 550MHz. The restore after Hibernate is also improved as it too uses PIO mode. The changes that BIOS makes to the UDMA configuration registers is enough of a hint for WinXP to know that a UDMA mode is now possible. Prior to this WinXP just assumed the UDMA was not available.
So if you have the new BIOS installed and a relatively new notebook drive (6GB or larger should support UDMA) then WinXP should report that it is using Ultra DMA mode 2. If not and you think you have a drive that supports it try uninstalling the Bus Master IDE controller driver. After you go through the two reboots to get the driver reinstalled check to see if UDMA-2 is active.
If you are running a disk benchmark program you may get transfers much lower than 33 MB/s for your disk drive. But if UDMA-2 is selected you are running as fast as your combination of disk drive and CPU can handle.
I will see if I can run benchmarks for the various disk drives that I have and post a summary here to give you an idea of the variability you can expect to see.
There is no down side to using this BIOS. If your disk drive does not support the higher rates the WinXP driver will detect a problem and automatically switch down to a lower transfer speed or mode. This is one reason why you may need to uninstall the Bus Master IDE controller driver so WinXP can start again at the highest rate and work down. I have done an install using this BIOS on a drive that did not support UDMA and it worked fine and just used MDMA instead.
I hope this long post makes things a little clearer about the benefits of this new BIOS. I see no reason why it should not be the new standard for the IOpener no matter what hard drive you are using. You still get better PIO and MDMA speeds even if UDMA is not possible on your old drive.
Turbo3